STM32實戰 2 | STM32CubeMX及HAL庫點亮LED
一、安裝Java環境
STM32CubeMX是在Java環境下運行的,所以這里我們先在電腦安裝Java環境。
JDK即Java Develop Kit,廣泛使用的版本是JDK 8
官方網站鏈接:https://www.oracle.com/java/technologies/downloads/
下載之后運行安裝包,一路next即可完成安裝,建議安裝到C盤默認路徑。
配置環境變量(重點)
首先配置JAVA_HOME環境變量:
然后再將JAVA_HOME配置到Path環境變量中:
檢查是否配置成功:(cmd:java -version)
二、安裝STM32CubeMX
1.STM32CubeMX官網鏈接:https://www.st.com/en/development-tools/stm32cubemx.html
2.選擇對應平臺的安裝包下載,這里我選擇Windows平臺:
解壓后雙擊exe文件運行安裝程序
安裝步驟:
安裝完成:
三、獲取且安裝STM32Cube MCU Packages
四、點亮LED
1. 準備事項
硬件:
這里我準備的是ST意法官方STM32G070的開發板(STM32G070-Nucleo-64)
軟件:
STM32CubeMX
芯片對應的Package
Keil-MDK
2.生成MDK初始工程(HAL庫)
1.MCU選擇器:
2.配置時鐘源(系統的“脈搏”)
選用外部高速時鐘(HSE:外接晶振通過PLL倍頻到高速),需要在System Core配置RCC
選用默認的內部時鐘(HSI:無需外部晶振的內部時鐘),可以略過這步
這里我使用外部時鐘:
關于時鐘源的講解: ①LSI 是低速內部時鐘,RC 振蕩器,頻率為 32kHz 左右。供獨立看門狗和自動喚醒單元使用。 ②LSE 是低速外部時鐘,接頻率為 32.768kHz 的石英晶體。這個主要是 RTC 的時鐘源。 ③HSE是高速外部時鐘,可接石英/陶瓷諧振器,或者接外部時鐘源,頻率范圍為 4MHz~26MHz。當使用有源晶振時,時鐘從 OSC_IN 引腳進入,OSC_OUT 引腳懸空,當選用無源晶振時,時鐘從 OSC_IN 和 OSC_OUT進入,并且要配諧振電容。HSE 我們使用 8M的無源晶振。如果我們使用 HSE或者 HSE經過 PLL倍頻之后的時鐘作為系統時鐘 SYSCLK。野火和正點原子的F429開發板接的是 25M 的晶振。安富萊的開發板是8M外接晶振。HSE 也可以直接做為系統時鐘或者 PLL 輸入。 ④HSI 是高速內部時鐘,RC 振蕩器,頻率為 16MHz。可以直接作為系統時鐘或者用作 PLL輸入。 ⑤PLL 為鎖相環倍頻輸出。STM32F4 有三個 PLL:主 PLL(PLL)由 HSE 或者 HSI 提供時鐘信號,并具有兩個不同的輸出時鐘。另外兩個 PLL(PLLI2S)和 PLL(PLLSAI)用于生成精確時鐘,在 I2S 和 SAI1 上實現高品質音頻性能。很少用先不看
3.配置LED的GPIO引腳
查找開發板相關資料:
意法開發板資料名稱檢索法:型號(Nucleo)+MCU型號
查找LED相關部分:用戶LED對應引腳為PA5
所以我們配置PA5引腳:
4.配置時鐘樹
STM32G070最高主頻:64M
STM32CubeMX可以通過圖形化界面直接配置PLL,使HCLK = 64MHz即可
時鐘樹配置原理:
主 PLL 時鐘的時鐘源要先經過一個分頻系數為 M 的分頻器,然后經過倍頻系數為 N 的倍頻器出來之后還需要經過一個分頻系數為 P(第一個輸出 PLLP)或者 Q(第二個輸出 PLLQ)的分頻器分頻之后,最后才生成最終的主 PLL 時鐘。例如我們的外部晶振選擇 8MHz。同時我們設置相應的分頻器 M=8,倍頻器倍頻系數 N=336,分頻器分頻系數 P=2,那么主 PLL 生成的第一個輸出高速時鐘 PLLP 為:8MHZ/8*336/2=168
PLL=8MHz * N/ (M*P)=8MHz* 336 /(8*2) = 168MHz
如果我們選擇HSE為PLL時鐘源,同時SYSCLK時鐘源為PLL,那么SYSCLK時鐘為 168MHz。看下面的程序也是這樣的,說明計算無誤。
助記:因為2大于1,所以APB2外設時鐘也一定要大于APB1外設時鐘。
5.工程、代碼生成設置
生成代碼
點擊GENERATE CODE即可生成MDK-V5工程:
6.在MDK軟件下編寫、編譯、下載用戶代碼
STM32CubeMX生成的代碼目錄如下:
進入MDK-ARM目錄,打開工程:
在main.c中的main函數中編寫簡單的用戶代碼:
while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ /* USER CODE END 3 */ HAL_Delay(100); HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5); }
編譯代碼(Build)
然后編譯整個工程:
設置下載器
下載運行(Load):
實驗現象:
成功點亮User LED
資料參考:
MCUlover666
果果小師弟
STM32意法官網
單片機 硬件開發
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。