stm32爲什麼給有些寄存器賦值確不會影響其他位?USARTx->SR = (uint16_t)~USART_FLAG

新手小白可能會遇到的問題:stm32爲什麼給有些寄存器賦值確不會影響其他位?在stm32的庫函數中可以看到有的關於位的操作不是用位與位或,而是直接賦值,但確不會影響其他位,例如:USARTx->SR = (uint16_t)~USART_FLAG,原因在於sr寄存器只能硬件置1,軟件寫1無效,關於這些寄存器的錯作細則可以在stm32的手冊中查詢,

在對寄存器的描述中使用了下列縮寫:
read / write (rw)
軟件能讀寫此位。
read-only (r)
軟件只能讀此位。
write-only (w)
軟件只能寫此位,讀此位將返回復位值。
read/clear (rc_w1)
軟件可以讀此位,也可以通過寫’1’清除此位,寫’0’對此位無影響。
read / clear (rc_w0)
軟件可以讀此位,也可以通過寫’0’清除此位,寫’1’對此位無影響。
read / clear by read (rc_r)
軟件可以讀此位;讀此位將自動地清除它爲’0’,寫’0’對此位無影響。
read / set (rs)
軟件可以讀也可以設置此位,寫’0’對此位無影響。
read-only write trigger (rt_w)
軟件可以讀此位;寫’0’或’1’觸發一個事件但對此位數值沒有影響。
toggle (t)
軟件只能通過寫’1’來翻轉此位,寫’0’對此位無影響。
Reserved(Res.)
保留位,必須保持默認值不變

在查看寄存器時會看到這些標誌,我們根據這些標誌就可以知道怎麼對寄存器操作了~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章