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

C [USART-STM32F4xx]:如何等待字符到达状态寄存器(USART\U SR)?,c,embedded,microcontroller,stm32,stm32f4,C,Embedded,Microcontroller,Stm32,Stm32f4,我正试图在一台计算机上实现USART2_RX 在视频教程中,我看到老师使用以下语句读取数据寄存器中的数据: char USART2_read(void){ while(!(USART2->SR & 0x0020)) {} return USART2->DR; } 具体来说,他使用 while(!(USART2->SR & 0x0020)){} 等待一个字符。但观察到,状态寄存器(USART_SR)似乎是0x0C0。。。以重置的形式,所以 为什么我们检

我正试图在一台计算机上实现USART2_RX

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

char USART2_read(void){
  while(!(USART2->SR & 0x0020)) {}
  return USART2->DR;
}
具体来说,他使用

while(!(USART2->SR & 0x0020)){}
等待一个字符。但观察到,状态寄存器(USART_SR)似乎是0x0C0。。。以重置的形式,所以


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

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

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

循环中,您正在等待设置“读取数据寄存器非空”位。这是
循环中的位号5和
1 SR&(1,而
循环等待设置“读取数据寄存器非空”位。这是位号5和
1 SR&(1)您使用的是什么库?
SR
DR
不是来自HAL。您使用的是什么库?
SR
DR
不是来自HAL。好的,当然,但为了检查该位,他应该在USART\u CR1寄存器中设置
RXNEIE=1
,但他没有。我说得对吗?不,我认为用户26etc。在第二次answe中r很好地理解了这种情况:“RXNEIE应该设置为生成中断。但他不使用中断。他使用轮询方法。”好的,当然,但为了检查该位,他应该在USART_CR1寄存器中设置
RXNEIE=1
,但他没有。我是对的?不,我认为user26etc。在第二个答案中,他很好地理解了这种情况:RXNEIE应该设置为生成中断。但他不使用中断。他使用轮询方法。"好的,当然,但为了检查该位,他应该在USART\U CR1寄存器中设置
RXNEIE=1
,但他没有。我是对的?不,RXNEIE应该设置为生成中断。但他不使用中断。他使用轮询方法。好的,当然,但为了检查该位,他应该在USART\U CR1寄存器中设置
RXNEIE=1
,但他没有没有。我是对的?不,RXNEIE应该设置为生成中断。但他不使用中断。他使用轮询方法。
 while(!(USART2->SR & (1 << 5)) {}