久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2586|回復: 4
打印 上一主題 下一主題
收起左側

請教Proteus仿真stm32f401re的串口問題

[復制鏈接]
跳轉到指定樓層
樓主
88黑幣
使用Proteus仿真STM32F401,就一個串口發送,但是發送出來的都是0,我本來要發送字符'A'的。
懷疑是寄存器配置問題和串口時鐘問題,但是對著手冊看了好多遍也找不到問題,希望有人出手相助
  1. int main(void)
  2. {
  3.                 /* USER CODE BEGIN 1 */
  4.                 float temp;
  5.                 uint16_t mantissa;
  6.                 uint16_t fraction;          
  7.                 temp=(float)(84*1000000)/(9600*16);//得到USARTDIV@OVER8=0
  8.                 mantissa = (uint16_t)temp;                                 //得到整數部分
  9.                 fraction = (uint16_t)((temp-mantissa)*16); //得到小數部分@OVER8=0
  10.                 mantissa<<=4;
  11.                 mantissa+=fraction;

  12.   /* USER CODE END 1 */

  13.   /* MCU Configuration--------------------------------------------------------*/

  14.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  15.   HAL_Init();

  16.   /* USER CODE BEGIN Init */

  17.   /* USER CODE END Init */

  18.   /* Configure the system clock */
  19.   SystemClock_Config();

  20.   /* USER CODE BEGIN SysInit */
  21.         RCC->CFGR = 0x001D040A;
  22.        
  23.   /* USER CODE END SysInit */

  24.   /* Initialize all configured peripherals */
  25. //  MX_GPIO_Init();
  26.   /* USER CODE BEGIN 2 */
  27.         //Enable and Config GPIO
  28.         RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;//button led usart1 use this
  29.         RCC->APB2ENR |= RCC_APB2ENR_USART1EN;//usart1

  30.                        
  31.         //LED PA1
  32.         GPIOA->MODER |= 1<<(1*2);//輸出
  33.         GPIOA->PUPDR &= ~0x000C;//no pull
  34.         GPIOA->OSPEEDR |= 3<<(1*2);//速度 very high speed
  35.         GPIOA->OTYPER &= ~(1<<1*1);// push pull
  36.        
  37.         //button PA 0
  38.         GPIOA->MODER &= ~0x0003;//輸入
  39.         GPIOA->PUPDR &= ~0x0003;//no pull
  40.        
  41.         //PA9 AF7 USART1 PA10 AF7 USART1
  42.         GPIOA->AFR[1] |= 0x00000770;
  43.        
  44.         ////        //PA9 TX
  45.     GPIOA->MODER  &= ~(0x03 << (9 * 2));//復用功能
  46.           GPIOA->MODER  |= (((uint32_t)0x02) << (9 * 2));
  47.                
  48.         GPIOA->OSPEEDR &= ~(3 << (9 * 2));//輸出速度 high speed
  49.         GPIOA->OSPEEDR |= ((uint32_t)(0x02) << (9 * 2));
  50.                
  51. //        GPIOA->OTYPER  &= ~((1) << ((uint16_t)9)) ;//輸出類型 推挽
  52. //        GPIOA->OTYPER |= (uint16_t)(((uint16_t)0x00) << ((uint16_t)9));
  53.                
  54.                 GPIOA->PUPDR &= ~( ((uint32_t)0x00000003) << ((uint16_t)9 * 2));//無上下拉
  55. //      GPIOA->PUPDR |= (((uint32_t)0x01) << (9 * 2));
  56.                
  57.        
  58.        
  59.         // PA10 RX
  60.         GPIOA->MODER  &= ~(0x03 << (10 * 2));//復用功能
  61.         GPIOA->MODER  |= (((uint32_t)0x02) << (10 * 2));
  62.                
  63.     GPIOA->OSPEEDR &= ~(3 << (10 * 2));
  64.     GPIOA->OSPEEDR |= ((uint32_t)(0x02) << (10 * 2));
  65.        
  66. //        GPIOA->OTYPER  &= ~((1) << ((uint16_t)10)) ;//輸出類型 推挽
  67. //    GPIOA->OTYPER |= (uint16_t)(((uint16_t)0x00) << ((uint16_t)10));       
  68.                
  69.         GPIOA->PUPDR &= ~( ((uint32_t)0x00000003) << ((uint16_t)10 * 2));//無上下拉
  70. //    GPIOA->PUPDR |= (((uint32_t)0x01) << (10 * 2));
  71.        

  72.         USART1->CR1&=~(1<<15);         //設置OVER8=0
  73.        
  74.         USART1->BRR=mantissa;
  75.         //默認是1 start  8 wordlength  1stopbit
  76.         USART1->CR1|=1<<3;          //串口發送使能
  77.         USART1->CR1|=1<<2;          //串口接收使能
  78.         USART1->CR1|=1<<5;            //接收緩沖區非空中斷使能
  79. ////        USART1->CR1|=1<<7;            //發送緩沖區非空中斷使能

  80. HAL_NVIC_SetPriority(USART1_IRQn, 1, 1);
  81.         NVIC_EnableIRQ(USART1_IRQn);

  82.         USART1->CR1|=1<<13;//開啟串口

  83.   /* USER CODE END 2 */

  84.   /* Infinite loop */
  85.   /* USER CODE BEGIN WHILE */
  86.   while (1)
  87.   {
  88.     /* USER CODE END WHILE */

  89.     /* USER CODE BEGIN 3 */
  90. //                                USART1->DR = 0x41;
  91. //                                while((USART1->SR&0X80)==0);//等待發送結束

  92.                                 if (( GPIOA->IDR & 0x0001))//按下按鍵,開啟TXE中斷,準備發送
  93.                 {
  94.                                 USART1->CR1|=1<<7;            //發送緩沖區非空中斷使能
  95. //                        USART1->DR = 0x0;//發送無用字節觸發txe中斷

  96.                 }
  97.                
  98.                                                 GPIOA->ODR |=   (unsigned int)0x0002;
  99.         delay(999999);

  100.                                         GPIOA->ODR &=   ~(unsigned int)0x0002;
  101. delay(999999);


  102.   }
  103.   /* USER CODE END 3 */
  104. }
復制代碼

這是電路圖,就PA9發送,PA10接收



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:124010 發表于 2022-4-19 10:28 | 只看該作者
太大了,沒法上傳整個工程,只能上傳main函數了,我改過的都在這里

main.zip

3.1 KB, 下載次數: 5

回復

使用道具 舉報

板凳
ID:124010 發表于 2022-4-19 10:29 | 只看該作者
這是電路圖


回復

使用道具 舉報

地板
ID:123289 發表于 2022-4-19 14:50 | 只看該作者
當你發送命令下達后,
發送的內容需要每間隔一段時間移出一位,直至這個字節的數據全部移出發完,才會給出一個發送完成標志。
當然對方接收也會同時進行的。
那么在這段時間里,你讓CPU干什么了?能說得清楚嗎?
回復

使用道具 舉報

5#
ID:124010 發表于 2022-4-19 14:53 | 只看該作者
yzwzfyz 發表于 2022-4-19 14:50
當你發送命令下達后,
發送的內容需要每間隔一段時間移出一位,直至這個字節的數據全部移出發完,才會給出 ...

我判斷的是TXE標志位,數據從數據寄存器到移位寄存器,TXE就置1。
現在直接發送數據都是亂碼,就算發送,while循環等待TXE置1,再發送,最基礎的功能有問題,別提數據處理了。再說也沒處理,就是發到那個串口虛擬終端
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区精品 | 自拍偷拍亚洲欧美 | 国产美女在线免费观看 | 久久久久久国模大尺度人体 | 国产视频福利在线观看 | 午夜视频在线 | 蜜臀久久 | 久久免费国产视频 | 人人艹人人 | 国产线视频精品免费观看视频 | 五月激情六月婷婷 | 最新国产视频 | 亚洲风情在线观看 | 久久综合九九 | 久久这里只有精品首页 | 久久精品久久久久久 | 免费观看一级特黄欧美大片 | 国产sm主人调教女m视频 | 人人种亚洲 | 九九久久久 | 91综合在线观看 | 九九热这里只有精品在线观看 | 91看片网| 国产精品久久久久久福利一牛影视 | 午夜视频网站 | 国产精品久久久久久久久久久久 | 蜜桃视频在线观看免费视频网站www | 国产视频导航 | 色婷婷九月 | 日韩精品一区二区三区中文在线 | 中文字字幕一区二区三区四区五区 | 国产精品美女久久久久久久网站 | 成人免费视频网 | 欧美性a视频 | 激情五月婷婷综合 | 午夜视频在线播放 | 狠狠撸在线视频 | av香蕉| av一区二区三区四区 | 国产精品永久 | 国产情侣在线看 |