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