既然ODR能控制管腳高低電平,為什么還需要BSRR寄存器呢?
為什么需要BSRR寄存器
在單片機中,為了控制端口的輸出狀態(tài),我們需要使用特定的寄存器。其中,ODR寄存器負責直接控制端口輸出電平,但是在某些情況下,我們需要更高效、更精準的控制電平狀態(tài),這時就需要使用BSRR寄存器了。
BSRR寄存器全稱Bit Set/Reset Register,中文名稱為位設置/重置寄存器,其作用是能夠快速切換輸入輸出引腳的電平狀態(tài)。通過BSRR寄存器的配置,我們可以簡單、高效地設置或者重置對應的引腳電平,而無需進行其他操作。
BSRR寄存器的結(jié)構(gòu)
BSRR寄存器總共32位,其中前16位是用于設置對應引腳的高電平,后16位是用于設置對應引腳的低電平。
在BSRR寄存器的低16位中,每4位對應一個引腳,以16進制的形式表示。例如:低16位的0號位(LSB)至3號位分別對應的引腳號為0~3,以此類推。對于高16位,它們與低16位的區(qū)別在于,它們控制對應引腳的低電平狀態(tài),即為清零操作。
例如,如果要使引腳1變?yōu)楦唠娖?,那么我們可以給BSRR寄存器的第17位(低16位的1號位)寫入1,這將會把引腳1設置為高電平。如果想要將引腳1的電平設置為低電平,我們只需要給BSRR寄存器的第33位(高16位的1號位)寫入1,即可實現(xiàn)。
BSRR寄存器與ODR寄存器的區(qū)別
雖然ODR和BSRR都可以控制引腳的電平狀態(tài),但是它們在實現(xiàn)上還是有一些區(qū)別的。
首先,ODR寄存器的寫入操作是瞬時的,即寫入后立即生效。而BSRR寄存器的寫入操作是有延遲的,需要在CPU時鐘上升沿時才能夠生效,因此,如果需要精準地控制電平狀態(tài),我們需要根據(jù)CPU主頻等因素,精確地計算出延遲時間。
其次,在使用BSRR寄存器時,我們可以直接通過對應電平位的寫入操作,來實現(xiàn)針對某一位的設置或重置操作。這樣,在高頻率操作時,會比使用ODR寄存器更具有優(yōu)勢,不僅可以提高效率,還能保證電平狀態(tài)的準確性。
還有一個重要區(qū)別是,在使用BSRR寄存器時,如果想要對某個引腳進行設置或重置,我們只需要對對應的位進行操作即可,而使用ODR寄存器時,我們需要同時對所有引腳進行設置或重置,這樣會導致效率降低。
綜上所述,BSRR寄存器與ODR寄存器相比,更加靈活高效,能夠更好地滿足實際需求,特別是在高頻率控制電平情況下更為顯著。
結(jié)語
在單片機的開發(fā)中,對端口的輸入輸出狀態(tài)控制是一項非?;A的操作,因此理解和掌握相關的寄存器是非常重要的。在實際應用中,根據(jù)不同的場景需求,選擇合適的寄存器會使我們的開發(fā)更加方便、高效。
BSRR寄存器雖然只是一個小小的寄存器,但是在高頻率作業(yè)中,能夠發(fā)揮出強大的功能和優(yōu)勢。因此,對于端口輸出狀態(tài)的控制需求得到了更好的滿足。
-
寄存器
+關注
關注
31文章
5363瀏覽量
121151 -
odr
+關注
關注
0文章
5瀏覽量
3581 -
bsrr
+關注
關注
0文章
2瀏覽量
1274
發(fā)布評論請先 登錄
相關推薦
評論