STM32中一些需要注意的小问题

1#使用外部中断时,需要打开AFIO时钟,具体代码为

/*来源:ST 3.5.0 库*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

2#串口启动时发送的第一个字节被吃掉了

stm32串口发送时,需要先读SR,再写DR,才能完成TC位的清除。我写的发送程序逻辑是:

UART4->DR = (uint8_t)(*s);
while((UART4->SR&0x40)==0);

平时是可以的,然而在硬复位时,没有读过SR就先写了DR,导致TC位没清除,第一个字节就被吃掉了。
解决方法:写之前读SR,或者初始化的时候读一下SR,或者清除TC(但是貌似使能串口后立马清除没有效,得过段时间才有效,不清楚什么情况,可能需要看stm32数据手册才能搞明白)


猜你喜欢

转载自blog.csdn.net/lingsuifenfei123/article/details/68954294