stm32f4固件庫函數點亮LED燈

我採用的實驗板硬件原理圖如下

這些LED燈的陰極都是與STM32的GPIO的引腳相連接,我們只需要控制對應的引腳輸出低電平,即可點亮LED燈,其中彩燈的陽極連接到的一個電路圖符
號“口口”,它表示引出排針,即此處本身斷開,須通過跳線帽連接排針,把電源跟彩燈的陽極連起來,纔可以進行操作。

固件庫工程配置如下

標準的固件庫函數工程模板

在編寫應用程序的過程中,要考慮更改硬件環境的情況,例如 LED 燈的控制引腳與當前的不一樣,我們希望程序只需要做最小的修改即可在新的環境正常運行。這個時候一般把硬件相關的部分使用宏來封裝,若更改了硬件環境,只修改這些硬件相關的宏即可,這些定義一般存儲在頭文件,即本例子中的“bsp_led.h”文件中。

這部分宏控制 LED 亮滅的操作是直接向 BSRR寄存器寫入控制指令來實現的,對BSRRL 寫 1輸出高電平,對 BSRRH寫 1輸出低電平,對 ODR寄存器某位進行異或操作可反轉位的狀態。

代碼中的“\”是 C語言中的續行符語法,表示續行符的下一行與續行符所在的代碼是同一行。代碼中因爲宏定義關鍵字“#define”只是對當前行有效,所以我們使用續行符來連接起來,以下的代碼是等效的:

#define LED_YELLOW LED1_ON; LED2_ON; LED3_OFF

應用續行符的時候要注意,在“\”後面不能有任何字符(包括註釋、空格),只能直接回車。

利用上面的宏,編寫LED燈的初始化函數

初始化 GPIO端口時鐘時也採用了 STM32庫函數,函數執行流程如下:
(1) 使用 GPIO_InitTypeDef 定義 GPIO 初始化結構體變量,以便下面用於存儲 GPIO 配置。
(2) 調用庫函數 RCC_AHB1PeriphClockCmd 來使能 LED 燈的 GPIO 端口時鐘該函數有兩個輸入參數,第一個參數用於指示要配置的時鐘,如本例的“RCC_AHB1Periph_GPIOH”和“RCC_AHB1Periph_GPIOD”,應用時我們使用“|”操作同時配置四個 LED 燈的時鐘;函數的第二個參數用於設置狀態,可輸入“Disable”關閉或“Enable”使能時鐘。
(3) 向 GPIO初始化結構體賦值,把引腳初始化成推輓輸出模式,其中的 GPIO_Pin 使用宏“LEDx_PIN”來賦值,使函數的實現方便移植。
(4) 使用以上初始化結構體的配置,調用 GPIO_Init 函數向寄存器寫入參數,完成 GPIO的初始化,這裏的 GPIO 端口使用“LEDx_GPIO_PORT”宏來賦值,也是爲了程序移植方便。
(5) 使用同樣的初始化結構體,只修改控制的引腳和端口,初始化其它 LED 燈使用的GPIO引腳。
(6) 因爲燒寫程序後自動復位後ODR的初始值爲0,LED會亮,所以使用宏控制 RGB燈默認關閉。

bsp.c中已經配置了三個LED燈,本例的主函數只爲紅燈亮的主函數,如需加其他燈的操作,只需在此主函數基礎上添加即可

即可控制實驗板亮紅燈。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章