標(biāo)題: 使用HAL庫編寫的流水燈 STM32cubeMX配合KEIL編程 [打印本頁]

作者: 如雙    時間: 2020-8-4 16:42
標(biāo)題: 使用HAL庫編寫的流水燈 STM32cubeMX配合KEIL編程
通過對GPIO口的設(shè)置使LED燈亮滅,初步認(rèn)識GPIO(通用輸入輸出寄存器)的性質(zhì)和相關(guān)控制函數(shù)。對時鐘使能有一定概念。
1.                            可以看到,板上放置在一起的共有五個LED燈,可以看到,燈五右接電阻、電源左接地,并不受引腳控制,即開啟開發(fā)板電源即自動點亮。
2.                            燈1、2、3、4分與STM32引出的PD9、10、11、12相連。待會兒我們即控制該四個引腳輸出高低電平達(dá)到控制燈亮滅的目的。
該寄存器低十六位相應(yīng)位置1使輸出數(shù)據(jù)寄存器對應(yīng)位為1,高十六位相應(yīng)位置1使對應(yīng)位為0。這高低十六位置0對輸出數(shù)據(jù)寄存器則無作用。
《STM32F40x/41x/427/437/429/439/401/410/411xE/412xG/413xx/423xx/446/469/479 DSP and Standard Peripherals Library》
Moudles->STM32F4xx_StdPeriph_Driver->GPIO->Functions
要使用的函數(shù)如下
可以看到函數(shù)被定義在stm32f4xx_gpio.c文件中。結(jié)構(gòu)體類型和相應(yīng)的宏分別被定義在stm32f4xx_gpio.h和stm32f4xx.h頭文件中。



功能分別是對輸出數(shù)據(jù)寄存器相應(yīng)位置零、置一和反轉(zhuǎn)。即在初始化GPIO口后,用這三個函數(shù)控制燈的亮滅。



以上的函數(shù)使完全能夠控制燈了,但實際控制燈之前還有一件事要做,就是使能時鐘。CPU是有工作時序的,可以理解為每一個操作都是單位時間的整數(shù)倍,設(shè)置好這個單位時間(對內(nèi)的CPU工作,對外每類接口、外設(shè)的
這個單位時間未必相同),即時鐘頻率的倒數(shù),放能工作。
但目前我們還未正式學(xué)到時鐘的配置,所以只需要使能對應(yīng)外設(shè)口的時鐘,頻率由STM32自動設(shè)置。
現(xiàn)在來看一下這個時鐘使能函數(shù)
(函數(shù)部分由兩個右括號沒有截圖下來,但不影響閱讀)

設(shè)置電燈序列。由隨機(jī)函數(shù)設(shè)置一連串燈的亮滅控制?煽刂频膮(shù)分別由選擇的燈、燈是亮是滅、燈的顏色(當(dāng)時使用的是F429的板子外接的燈是彩燈)。
那么這樣,在每次RESET板子重啟程序的時候,燈光的閃爍將是隨機(jī)的,將構(gòu)成一
支“燈光舞蹈”,那可能很有趣。
其實這個問題很無聊,沒有就是沒有嘛,用不到所以沒有。這個解釋實際上,真的沒毛病,相關(guān)的需要用到時間的操作通過系統(tǒng)時鐘的控制和定時器可以完成,這個似乎并沒有什么用處。另外我的一個看法是,本身芯片就只有1M甚至512KB的RAM,無用的函數(shù)越多,燒錄進(jìn)去時可用的空間越少。限于外部原因嵌入式編程代碼精簡是應(yīng)該的。


HAL是Hardware Abstraction Layer的縮寫,中文名:硬件抽象層。HAL庫是ST為STM32最新推出的抽象層嵌入式軟件,可以更好的確?鏢TM32產(chǎn)品的最大可移植性。該庫提供了一整套一致的中間件組件,如RTOS,USB,TCP / IP和圖形等。(關(guān)于標(biāo)準(zhǔn)庫與HAL庫的對比請看文章https://blog.csdn.net/chenhaifeng2016/article/details/68939282










                           
主函數(shù)里就三個部分,第一部分是根據(jù)我們在STM32CubeMx中配置的時鐘關(guān)系來設(shè)置時鐘的SystemClock_Config();函數(shù)的使用。第二部分是根據(jù)我們在設(shè)置的引腳狀態(tài)來配置引腳的MX_GPIO_Init()的使用。第三個是一個while(1)的空循環(huán)。
明顯的HAL庫的特征(如MX_GPIO_Init和HAL_GPIO_WritePin);



流水燈需要添加的內(nèi)容有:
1.找到HAL庫下用來置位復(fù)位的函數(shù),上圖的HAL_GPIO_WritePinHAL_GPIO_TogglePin就剛剛好夠用。

完整的Word格式文檔51黑下載地址:
http://www.torrancerestoration.com/bbs/dpj-152520-1.html






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1