簡體   English   中英

[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)){}

等待一個字符。 但觀察參考手冊,狀態寄存器 (USART_SR) 的復位形式似乎是 0x0C0...,所以...

為什么我們要檢查那個值(即 0x0020)?

他檢查 0x20,因為它是狀態寄存器中的 RXNE(RX 非空)位。 他檢查 bit5(RXNE) - 而不是值 0x20。

while循環中,您正在等待設置“讀取數據寄存器不為空”位。 這是第 5 位,並且1 << 5等於0x0020 你同樣可以寫:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM