[USART - STM32F4xx]:如何等待字符到达状态寄存器 (USART_SR)?

[USART - STM32F4xx]: How to wait until character arrives on Status Register (USART_SR)?

我正在尝试在 STM32F411VET 上实现 USART2_RX。

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

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

具体来说,他使用

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

稍等片刻。但是观察 Reference Manual,状态寄存器 (USART_SR) 似乎是 0x0C0... 在其复位形式中,所以...

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

他检查 0x20,因为它是状态寄存器中的 RXNE(RX 非空)位。 他检查了 bit5(RXNE)——不是值 0x20。

while 循环中,您正在等待设置 "Read data register not empty" 位。这是位号 5,1 << 5 等于 0x0020。你同样可以这样写:

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