STM32 HAL库快速实战【一】《32点灯》--基于黑龙江科技大学机电工业机器人实训
前言
在开始前,请确保电脑安装了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