我试图在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。