(HAL库)STM32单片机基础01——使用GPIO点亮一个LED
第一次写博客啦,不足的地方大家评论区尽管提。好了,进入正文啦。
本文的写作模板参考了一位博主Mculover666
本文章主要介绍如何利用CUBEMX结合HAL库,对GPIO进行配置,生成MDK工程,再编写程序使得对应引脚的输出一个低电平,通过三极管通断作用,电流将通过LED,从而发光,再利用延时,实现流水灯效果。
1.准备工作
硬件准备
我们这次使用的是正点原子精英开发板,对应的芯片为STM32F103ZET6。开发板自带LED灯。
我们这次使用的是正点原子ST-link。
软件准备
- STMCUBEMX软件,且安装了F1的HAL库函数资源包。
那就附上链接吧
CUBEMX(需要自己在软件上下载库,和更新软件): 链接:https://pan.baidu.com/s/19DYNahQlMuCWWCHAUQ5nhg 提取码:ue6j
知识准备
LED即发光二极管,当LED内有电流通过时会发光,在安全电流范围内,电流越大,亮度越亮。
2.生成MDK工程
选择芯片型号
打开STM32CUBEMX,打开MCU选择器
使用STM32CUBEMX,可以键盘全程大写锁定,比较方便
搜索并选择芯片STM32F103ZET6;
配置时钟源
- 如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC;
一般都选用外部高速时钟(HSE),单片机上一般焊接有晶振
这里我一般使用外部时钟:
配置仿真器
选择SYS,在Debug下拉框中选择Serial Wire:
配置GPIO引脚
查看正点原子精英开发板的原理图,如下:
所以接下来我们选择配置LED引脚,通过原理图可以看出二个LED灯的引脚为PB5,PE5,这里我们只配置一个,选择PB5引脚:
配置GPIO参数:
在Cubemx中配置GPIO为输出模式,在cubeMX找到对应引脚,配置成GPIO_Output模式。
- GPIO output level :引脚上电默认电平
由原理图可知上电默认高电平,LED 灯不亮。
-
GPIO mode : GPIO输出模式 Output Push Pull : 推挽输出模式 Output Open Drain : 开漏输出模式 -
GPIO Pull-up/Pull-down : 上拉,下拉输出模式 -
Maximum output speed : 引脚最大切换速度 -
User Label : 用户标签
与开发板一致即可,方便编写代码 主要用于在main.h中产生相应的宏名,以及在GPIO拓扑图中显示引脚名称
配置时钟树
STM32F1的最高主频到72M,所以配置PLL,最后使HCLK = 72Mhz即可:
生成工程配置
代码生成设置
最后设置生成独立的初始化文件,方便查找,编写代码:
生成工程
最后点击右上角GENERATE CODE按键,生成MDK-V5工程文件。
生成成功
3. 在MDK中编写、编译、下载用户代码
编写用户代码
STM32CubeMX生成的代码文件夹目录如下:
进入MDK-ARM目录,打开工程,今天先介绍一下main.c文件:
注意:
用户编写的代码都要写在类似
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
之间,不然下一次使用Cubemx生成工程会被删除
在main.c中的main函数中编写简单的用户代码:
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_GPIO_TogglePin(LED0_GPIO_Port, LED0_Pin); //翻转GPIO电平
HAL_Delay(1000); //延时1000ms
}
/* USER CODE END 3 */
}
编译、下载用户代码
先编译,后下载:
下载时,注意仿真器是否为ST-link,不是的话,自行更改设置
4. 实验现象
单片机上面的灯点亮和熄灭循环进行,时间都为1s。
至此,我们已经学会了如何使用STM32CubeMX快速生成MDK的工程,点亮一个LED。此教程基本上适用于大部分单片机,大家可以自己写一遍。
|