首先,寄存器是什么?
寄存器,是集成電路中非常重要的一種存儲單元,通常由觸發(fā)器組成。在集成電路設(shè)計中,寄存器可分為電路內(nèi)部使用的寄存器和充當內(nèi)外部接口的寄存器這兩類。內(nèi)部寄存器不能被外部電路或軟件訪問,只是為內(nèi)部電路的實現(xiàn)存儲功能或滿足電路的時序要求。而接口寄存器可以同時被內(nèi)部電路和外部電路或軟件訪問,CPU中的寄存器就是其中一種,作為軟硬件的接口,為廣泛的通用編程用戶所熟知。
今天在昨天建好的工程基礎(chǔ)上,簡單介紹下怎么操作寄存器點亮LED燈。
新建兩個文件文件,分別命名為led.h和led.c并添加到工程項目中。
進行操作的板子中LED1和LED2分別對應(yīng)PF9和PF10,想控制LED,就要先初始化對應(yīng)的端口。要初始化就要配置相應(yīng)的寄存器。配置寄存器需要一個STM32F4xx的參考手冊,我比較菜,只能看中文文檔,看得懂英文的可以直接用英文版,畢竟英文版的是第一手資料。
以第一個GPIOx_MODER端口模式寄存器為例,要操作的端口分別為9、10,對應(yīng)18、20位。從電路圖可以知道只要控制輸出的高低電平就可以實現(xiàn)LED燈的亮滅。所以這里選擇通用輸出模式10。
在輸出類型中中,輸出使能,推挽模式時雙 MOS 管以方式工作,輸出數(shù)據(jù)寄存器GPIOx_ODR 可控制 I/O輸出高低電平。開漏模式時,只有 N-MOS 管工作,輸出數(shù)據(jù)寄存器可控制 I/O輸出高阻態(tài)或低電平。所以輸出類型應(yīng)選推挽輸出。
端口的輸出速度是端口支持高低電平切換的最高頻率,控制LED燈可以隨便設(shè)置。
端口用于輸入時,端口的上/下拉模式可以控制端口的默認狀態(tài)。但現(xiàn)在端口用于輸出,端口受 ODR寄存器影響,ODR寄存器對應(yīng)端口位初始初始化后默認值為 0,端口輸出低電平,所以這時我們配置無上/下拉模式。
在輸出模式時,操作BSRR和ODR寄存器即可控制端口的電平。這里用ODR寄存器控制。輸入為0時,LED燈亮;輸入為1時,LED燈滅。
這時,GPIO端口的寄存器已經(jīng)配置完成,但是還是點不亮燈。這是為什么捏?
STM32為了降低功耗,每個外設(shè)都對應(yīng)一個時鐘,這些時鐘的初始狀態(tài)都是關(guān)閉的,如果外設(shè)想要工作,必須打開相應(yīng)的時鐘。所有外設(shè)的時鐘由一個專門的外設(shè)來管理,叫 RCC。所以最后還要通過RCC_AHB1ENR開啟時鐘。
主程序
LED源文件
LED頭文件
編譯文件,將程序燒入開發(fā)板,LED燈亮,實驗成功。
-
led燈
+關(guān)注
關(guān)注
22文章
1593瀏覽量
109233 -
寄存器
+關(guān)注
關(guān)注
31文章
5402瀏覽量
122929 -
MOS管
+關(guān)注
關(guān)注
108文章
2506瀏覽量
69553 -
STM32
+關(guān)注
關(guān)注
2287文章
10988瀏覽量
361577 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2029瀏覽量
61781
發(fā)布評論請先 登錄
如何操作寄存器
數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是什么意思
寄存器操作方法_對寄存器操作的通用方法總結(jié)
STM8 寄存器點亮LED

2021年10月21日 STM32F103寄存器方式點亮LED流水燈

STM32寄存器點燈

STM32的寄存器操作

配置STM32寄存器控制GPIO點亮LED

評論