C语言 [USART - STM32F4xx]:如何等到角色到达状态寄存器(USART_SR)?



我试图在STM32F411VET上实现USART2_RX。

在一个视频教程中,我看到老师使用这些语句来读取数据寄存器中的数据:

char USART2_read(void){
while(!(USART2->SR & 0x0020)) {}
return USART2->DR;
}

具体来说,他使用

while(!(USART2->SR & 0x0020)){}

等待一个字符。但是观察参考手册,似乎状态寄存器(USART_SR(0x0C0...在其重置形式中,所以...

为什么我们检查该值(即0x0020(?

while循环中,您正在等待设置"读取数据寄存器不为空"位。这是位号 5,1 << 5等于0x0020。你同样可以写:

while(!(USART2->SR & (1 << 5)) {}

他检查0x20因为它是状态寄存器中的RXNE(RX不为空(位。 他检查的是 bit5(RXNE( - 而不是值0x20。

最新更新