本帖最后由 xuchaopan 于 2020-10-30 15:38 編輯
一、 介紹 STM32Fxx系列單片機在CubeMX軟件的加持下,大大的提高了開發(fā)效率并縮短前期開發(fā)時間。 CubeMX軟件支持意法半導(dǎo)體的所有32位單片機,它可以幫助開發(fā)人員新建項目、設(shè)置芯片時鐘、配置IO功能、定時器、設(shè)置諸如SPI/UART/I2C等等硬件端口,并且可對所有的基本參數(shù)進(jìn)行配置,并且CubeMX還可以生成FreeRTOS嵌入式系統(tǒng)。 CubeMX支持Keil、IAR等主流程序編譯環(huán)境的工程生產(chǎn),生成的文件可以用編譯軟件直接打開并編譯。 CubeMX包含了STM單片機的HAL庫,會根據(jù)開發(fā)人員配置的功能自動加載HAL庫文件。 二、 新建工程 1. 打開軟件,并開始工程及芯片選擇,如下圖
1.png (98.29 KB, 下載次數(shù): 56)
下載附件
2020-10-30 15:34 上傳
點擊第一個選項,從MCU選擇開始。 2. 選擇芯片,如下圖
2.png (66.34 KB, 下載次數(shù): 62)
下載附件
2020-10-30 15:34 上傳
在搜索框中輸入芯片型號后,在右下側(cè)會出現(xiàn)該型號包含的芯片及封裝,選擇自己使用的封裝后雙擊,則會進(jìn)入下面這個界面,此時就可以開始配置芯片功能等參數(shù)了。
3.png (68.03 KB, 下載次數(shù): 49)
下載附件
2020-10-30 15:34 上傳
3. 芯片時鐘設(shè)置 我們首先對芯片的時鐘源進(jìn)行配置,如下圖
4.png (94.25 KB, 下載次數(shù): 65)
下載附件
2020-10-30 15:34 上傳
按照序號選項,在③處選擇晶體振蕩器。然后按照下圖設(shè)置
5.png (79.99 KB, 下載次數(shù): 62)
下載附件
2020-10-30 15:34 上傳
按照序號順序進(jìn)行操作,在④處設(shè)置想要的系統(tǒng)時鐘頻率。 4. 工程保存,如下圖
6.png (73.73 KB, 下載次數(shù): 52)
下載附件
2020-10-30 15:34 上傳
按照序號順序操作,在②處輸入工程名,③處選擇工程保存的路徑,④處選擇要使用的編譯軟件及版本。然后如下圖配置選擇庫和生產(chǎn)文件屬性。
7.png (58.54 KB, 下載次數(shù): 75)
下載附件
2020-10-30 15:34 上傳
5. 生成工程 如下圖,點擊①后會彈出②處的進(jìn)度條,這時等待其完成即可。
8.png (59.12 KB, 下載次數(shù): 55)
下載附件
2020-10-30 15:34 上傳
完成后會彈出下圖的選項,這時可以選擇直接打開工程。
9.png (67.6 KB, 下載次數(shù): 41)
下載附件
2020-10-30 15:34 上傳
6. 開始編寫程序
10.png (84.93 KB, 下載次數(shù): 50)
下載附件
2020-10-30 15:34 上傳
如圖,這就是CubeMX生產(chǎn)的一個最基本的工程,main.c在User文件夾下,之后就可以在main函數(shù)下開始編寫程序,在添加程序時,請需注意:如上圖的方框內(nèi)的備注,添加的代碼需要在BEGIN 之后 END之前,這樣在下次CubeMX再生成文件的時候就不會被刪除,否則CubeMX會將你寫的代碼全部刪除,這樣就功虧一簣了。 三、 GPIO的使用 1. 配置一個輸出IO,這里用PA0作演示,如下圖
11.png (104.24 KB, 下載次數(shù): 49)
下載附件
2020-10-30 15:34 上傳
如圖,按序號順序選擇①處,我們回到pinout & configuration,在④處用電機PA0這個引腳后會彈出右邊的功能選項表,這里就能看出這個IO端口支持的功能,這里我們選擇Output(輸出功能)。然后可以對這個IO口直接配置。
12.png (108.9 KB, 下載次數(shù): 62)
下載附件
2020-10-30 15:34 上傳
上圖中①處選擇要設(shè)置的IO口,在下面有5個選項,可以對其進(jìn)行配置, 在⑥處可以數(shù)額如IO的名稱,在生成后的main.h,就能找到這個名稱的IO口,之后對其進(jìn)行調(diào)用即可。 2. 程序編寫
13.png (119.27 KB, 下載次數(shù): 46)
下載附件
2020-10-30 15:34 上傳
按上圖順序打開main.h,在④處添加控制宏,之后在main函數(shù)下添加IO控制程序即可,如下圖
14.png (111.09 KB, 下載次數(shù): 41)
下載附件
2020-10-30 15:34 上傳
由①處可見,CubeMX再生成工程后,會自動添加GPIO初始化代碼,不用開發(fā)人員自己再去做初始化,CubeMX會根據(jù)在軟件上的配置進(jìn)行代碼生成, 在②處添加控制代碼即可。 四、 定時器的使用 1. 設(shè)置一個定時器,定時時間為1ms,軟件上配置如下圖:
15.png (66.34 KB, 下載次數(shù): 53)
下載附件
2020-10-30 15:34 上傳
這里是啟用的Tim2作為定時器源,上圖按照順序進(jìn)行選項設(shè)置, 圖中第④處為設(shè)置定時器分頻系數(shù),第⑤處設(shè)置的是計數(shù)器周期,第⑥處啟用自動重裝。 2. 然后在后面選項打開定時器中斷,如下圖:
16.png (54.72 KB, 下載次數(shù): 53)
下載附件
2020-10-30 15:34 上傳
3. 程序編寫,在程序上打開定時,代碼(HAL_TIM_Base_Start(&htim2);)。然后在stm32f1xx_it.c里面找到定時器2的中斷服務(wù)器程序(TIM2_IRQHandler),在里面添加定時器中斷標(biāo)志即可。 五、 PWM的使用 1. 舉例配置一個頻率1kHz的PWM脈沖輸出信號,如下圖:
17.png (65.65 KB, 下載次數(shù): 53)
下載附件
2020-10-30 15:34 上傳
按照上圖順序選擇,第③處為PWM輸出通道選擇,這里選擇后,在芯片IO圖中第④處可以看到就自動生成了一個PWM-CH1端口。然后⑤、⑥處設(shè)置分頻系數(shù)、定時器值,⑦處設(shè)置裝填的初始值,其占空比就是⑥/⑦的數(shù)值,也就是二分之一。 2. 程序編寫:同樣使用庫函數(shù)(HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);)打開定時器3的第1路PWM輸出;然后可以通過庫函數(shù)修改PWM占空比(__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, 500);)紅字就是PWM輸出占空比的比例值。 六、 SPI的使用 待補充 七、 I2C的使用 待補充 八、 UART的使用 待補充 九、 ADC的使用 待補充 十、 FreeRTOS的使用 待補充 |