原子哥,帮我看看这段串口接收程序有什么问题吗?为什么用串口调试助手接收不到正确信息呢?
#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,点亮点亮小灯
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
USART1->SR&1<<5 这一句,确认一下运算符的优先级别,最好加上括号。
一周热门 更多>