我想在STM32F411VET上实现USART2 RX。
在视频教程中,我看到老师使用这些语句读取数据寄存器中的数据:
char USART2_read(void){
while(!(USART2->SR & 0x0020)) {}
return USART2->DR;
}
具体来说,他用
while(!(USART2->SR & 0x0020)){}
等待一个字符。但观察到Reference Manual,状态寄存器(USART_SR)似乎是0x0C0。。。以重置的形式,所以。。。
为什么要检查该值(即0x0020)?
最佳答案
在while
循环中,您正在等待设置“Read data register not empty”位。这是位5,1 << 5
等于0x0020
。你也可以写:
while(!(USART2->SR & (1 << 5)) {}