前言
在開始前,請確保電腦安裝了STM32CubeMX,並且安裝了V1.8的F1包,同時安裝了Keil5並且安裝了STM32F1的包,其他還需要FlyMCU,至少一款串口通信軟件。
系列目錄:
-
STM32 HAL庫快速實戰【一】《32點燈》--基於黑龍江科技大學機電工業機器人實訓 - USTHzhanglu - 博客園 (cnblogs.com)
-
STM32 HAL庫快速實戰【三】《pwm控制舵機》--基於黑龍江科技大學機電工業機器人實訓 - USTHzhanglu - 博客園 (cnblogs.com)
-
STM32 HAL庫快速實戰【四】《串口簡單使用》--基於黑龍江科技大學機電工業機器人實訓 - USTHzhanglu - 博客園 (cnblogs.com)
stm32cubeMX配置
工程配置
圖片較多,因此部分場合使用文字替代,相關按鈕自行查找
打開stm32cubeMX,File > New project >MCU/MPU Selector >Part Number
輸入stm32f103c8,Start Project
Project Manager > Project
Project Name 項目名稱,填寫led
Project Location 項目位置,選擇一個你喜歡的文件夾,不要出現中文
Toolchain/IDE 交叉編譯鏈,選擇MDK
勾選 Use latest available version(至少要1.8版本以上)
Project Manager > Code Generator
如圖中所示
時鍾配置
Pinout & Configuration > A-Z > RCC > High Speed Clock
Crystal/Ceramic Resonator 使用外部時鍾源
Clock Configuration
選中HSE,倍頻x9,不分頻
Pin配置
點擊芯片上PB13 > GPIO_Output
Pinout & Configuration > A-Z > GPIO
點擊PB13
GPIO output level > High 輸出等級 高
GPIO mode Output > Push Pull 輸出模式 推挽輸出
GPIO Pull-up/Pull-down > Pull-down 初始輸出 設為低
User Label > led 用戶標簽,設置為led,方便代碼中使用
GENERATE CODE生成代碼,Open Project
編寫代碼
點亮led的思路很簡單,由於板載led采用的共陽極接法,所以為了使led亮,只需要拉低led引腳即可。
打開main.c,可以看到/* USER CODE BEGIN 2 /
/ USER CODE END 2 */
這種注釋,他告訴我們代碼要寫在這里,不然重新生成code后,代碼會被清除
拉低led引腳的代碼為HAL_GPIO_WritePin(led_GPIO_Port,led_Pin,GPIO_PIN_RESET);
注意,led_GPIO_Port,led_Pin
與用戶設置的User Label
名要一致。
或者直接使用PB13GPIOB,GPIO_PIN_13
如果希望led閃爍的話,可以使用HAL_GPIO_TogglePin(led_GPIO_Port,led_Pin);
翻轉電平,然后使用HAL_Delay(1000);
延遲1000ms。
更多GPIO操作函數參考STM32CubeF1-hal&&ll手冊 20.2.4 IO operation functions
然后生成hex固件。
燒錄程序
生成的HEX文件存在於led\MDK-ARM\led\
目錄下。
點擊開始編程燒錄,完畢后點擊板子上的復位執行程序。
參考鏈接flyMCU燒錄代碼
工程源碼
國內用戶請使用gitee克隆或是使用代理訪問Github
https://github.com/USTHzhanglu/stm32-hal/tree/main/led