[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)) {}
我正在尝试在 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)) {}