亚洲综合图片区自拍_思思91精品国产综合在线观看_一区二区三区欧美_欧美黑人又粗又大_亚洲人成精品久久久久桥本

單片機(jī)的寄存器編程與位運(yùn)算-焦點(diǎn)熱訊

2023-06-21 11:10:08 來源:學(xué)嵌入式的釘子君

凡事都要腳踏實(shí)地去做,不弛于空想,不騖于虛聲。努力只能做到合格,用心才能做到優(yōu)秀。

這次一起來學(xué)習(xí)一下單片機(jī)開發(fā)時必備技術(shù)——位運(yùn)算和寄存器編程。


(相關(guān)資料圖)

目前已經(jīng)發(fā)布了幾篇文章,文章多為個人觀點(diǎn),可能會有錯誤。歡迎朋友們指正錯誤或提出寶貴建議,必有重謝!

一、位運(yùn)算符號

常用的位運(yùn)算符有:

符號結(jié)合方向功能
&向右按位與
向右
^向右按位異或
~向左按位取反
<<向右數(shù)據(jù)左移
>>向右數(shù)據(jù)右移

二、單片機(jī)開發(fā)為什么需要學(xué)習(xí)位運(yùn)算?

單片機(jī)開發(fā)常用的編程方法有:寄存器法 和 庫函數(shù)法。其中基于寄存器編程是一種通用型的方法,即所有的單片機(jī)都可以采用寄存器方法進(jìn)行編程。

那么寄存器又是什么?

初學(xué)者可以這樣理解:

1.寄存器是在單片機(jī)中真實(shí)存在的(有明確的地址)、有明確功能的“開關(guān)”或者“指示器”。

一個單片機(jī)中一般含有大量的、功能各異的寄存器,這些寄存器都有自己獨(dú)立的空間,分別控制著單片機(jī)的不同功能。

3.當(dāng)需要控制單片機(jī)實(shí)現(xiàn)某種功能 或者 需要獲取單片機(jī)的工作狀態(tài)時,就必須要操作到對應(yīng)的寄存器。

4.對于不同位數(shù)的單片機(jī),其寄存器的位數(shù)也不同,并且一個寄存器可能通過不同的位來控制不同的功能。

總結(jié):位運(yùn)算在單片機(jī)開發(fā)中主要用途是操作寄存器,是單片機(jī)編程的基礎(chǔ)!其重要性可見一斑。

三、位運(yùn)算的重點(diǎn)內(nèi)容

假設(shè)下表中的X是單片機(jī)中某個寄存器。

功能表達(dá)式
將寄存器第n位置位X

一共就4行,非常好記。但知識點(diǎn)僅記住是沒用的,得實(shí)踐!現(xiàn)在我們基于一款單片機(jī)的手冊來模擬實(shí)操一下。有條件的朋友建議購買一套單片機(jī)套件,邊學(xué)邊練,效果加倍!

四、實(shí)例演示位運(yùn)算

下方是一款單片機(jī)的一個寄存器表,來源于主流單片機(jī)型號STM32F1xx的參考手冊。圖中這個寄存器的功能是配置IO引腳的方向,比如配置引腳是作為輸入還是輸出。

若需要將單片機(jī)的PB4引腳配置為通用推挽輸出,那應(yīng)該如何配置此寄存器呢?

Step1,結(jié)合引腳正確表示出該寄存器。由于操作的引腳是PB4,屬于GPIOB,故該寄存器寫作GPIOB->CRL。

Step2,閱讀表格中關(guān)于位功能的說明,找出需要操作該寄存器的哪些位。

由于待操作引腳序號為4,所以應(yīng)操作該寄存器的第19~16位(因?yàn)檫@些位對應(yīng)的功能是CNF4和MODE4,匹配該引腳)。

Step3,結(jié)合注釋部分,確定待操作位的值。從圖中可以看出MODE4(即第17、16位)可以配置為“01”以實(shí)現(xiàn)輸出模式;CNF4(即第19、18位)可以配置為“00”以實(shí)現(xiàn)通用推挽輸出模式。

Step4,將位運(yùn)算與上一步結(jié)合,寫出代碼。

GPIOB- >CRL &=~(1< <19);GPIOB- >CRL &=~(1< <18);GPIOB- >CRL &=~(1< <17);GPIOB- >CRL |= (1< <16);化簡上方四行位運(yùn)算,整理得:GPIOB- >CRL &=~(0xF< <16);//清零[19:16]GPIOB- >CRL |= (0x1< <16);

ps: 以上代碼僅是實(shí)現(xiàn)PB4引腳輸出數(shù)據(jù)的部分代碼。

若需要實(shí)現(xiàn)完整功能,還需要配置其他寄存器。

標(biāo)簽:

上一篇:環(huán)球報道:MCU的時鐘樹講解
下一篇:最后一頁