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

?TLC6C5912 12通道移位寄存器LED驅(qū)動器技術(shù)文檔總結(jié)

Texas Instruments SN74LV8T164/SN74LV8T164-Q1移位寄存器數(shù)據(jù)手冊

Texas Instruments SN74AC164-Q1 8位SIPO移位寄存器數(shù)據(jù)手冊

Texas Instruments SN74ACT164-Q1 8位SIPO移位寄存器數(shù)據(jù)手冊

評論