原子哥,帮我看看这段串口接收程序有什么问题吗?为什么用串口调试助手接收不到正确信息呢?

2019-07-21 02:46发布

原子哥,帮我看看这段串口接收程序有什么问题吗?为什么用串口调试助手接收不到正确信息呢?

#include"stm32f10x_map.h"
 u8 res;
 
 int main()
 {
 RCC->APB2ENR|=1<<14;  //开启USART时钟
 RCC->APB2ENR|=1<<2;  //开启GPIOA时钟
 GPIOA->CRH&=0xfffff00f;
 GPIOA->CRH|=0x000004b0;   //PA.09(TX1)复用推挽输出,PA.10(RX1)浮空输入
 USART1->BRR=0x0045;   //设置波特率为115200
 USART1->CR1|=1<<2;   //接收允许
 USART1->CR1|=1<<3;   //发送允许
 USART1->CR1|=1<<13;   //USART允许
 RCC->APB2ENR|=1<<5;   //开启GPIOD时钟
 GPIOD->CRH&=0x0000ffff;
 GPIOD->CRH|=0x33330000;    //设置PD.13位通用推挽输出
 
 while(1)
{
 if(USART1->SR&1<<5)     
 {res=USART1->DR;
 if(res==1)
 GPIOD->ODR=0xffff;}        //如果接收到1,点亮点亮小灯           
 }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
xuande
1楼-- · 2019-07-21 06:34
估计你没有用仿真器调试过。

USART1->SR&1<<5 这一句,确认一下运算符的优先级别,最好加上括号。
Gohome_soon
2楼-- · 2019-07-21 07:46
 精彩回答 2  元偷偷看……

一周热门 更多>