本文主要介绍用STM32点亮LED的实现过程。
采用的硬件部分为野火STM32F1ZET6开发板,软件部分为STM32CubeMX、MDK-ARM软件。
学习要点整理:
- 在MDK-ARM软件版本的选择中,本文使用版本为V5.32,如果是其他版本,选择V5即可;
- 在Debug模式的选择过程中,需要根据实际情况设定,如JTAG方式、Serial Wire(SWD方式)等;
- 程序下载后需要断电重启才会执行新程序,若要下载后直接执行,需要在在调试下载器的设置中勾选【Reset and Run】;
- 在MDK软件中写程序时,必须要将程序写在用户编写位置内,否则会在STM32CubeMX重新生成程序时删除编写的程序;
- 在MDK软件中写程序时中发现不能加中文注释,可通过【Configuration】-【Editor】中,将【Encoding】的选项修改为【Chinese GB2312 (Simplified)】即可。
1.新建LED项目
(1)打开STM32CubeMX软件后,点击【File】-【New Project】
(2)选中项目用采用的STM32F103ZET6芯片,点击【Start Projects】
(3)在【Project Manager】-【Project】中修改项目名称、更改项目存放路径、配置IDE版本
(4)在【Project Manager】-【Code Generator】中修改代码生成规则
2.工程配置
(1)进行时钟设置
(2)将调试程序方式设置为JTAG方式(根据开发板情况而定)
(3)修改时钟频率为72MHz
3.LED引脚配置
(1)LED原理图
在硬件电路中,LED灯为RGB三色灯,首先需要确定STM32开发板中LED灯所对应连接的引脚编号,原理图如下。
从原理图中可以看出,三色LED分别连接到STM32的PB5、PB0和PB1,分别控制红色(R)、绿色(G)和蓝色(B)三种颜色,并且是低电平有效。
(2)LED引脚配置
在STM32CubeMX软件中,将三个对应的引脚进行配置。在芯片引出线视图中找到PB5、PB0和PB1,点击并设置为【GPIO_Output】。
在GPIO配置中,将GPIO output level设置为【High】,Maximum output speed设置为【High】,User Label修改为【LED_G】,完成对PB0的配置,其他引脚参照该方式依次完成配置。
配置完成后,点击【GENERATE CODE】生成代码文件。
4.IDE软件设置
用MDK-ARM软件打开生成的工程文件,这里有几个地方需要设置一下。
(1)打开【Options for Target】
(2)点击【Target】,勾选【Use MicroLIB】,方便以后用printf函数进行调试使用。
(3)点击【Output】,勾选【Create HEX File】,编译的同时生成HEX文件,用于烧录程序。
(4)点击【Debug】,图示位置处进行修改调试器
(5)点击【Settings】,选择DAP型号,并将【Port】修改为JTAG(这里可以根据自己的调试器情况修改)
(6)点击【Flash Download】,勾选【Reset and Run】(这样程序烧录后会马上执行,不用断电重启)
5.LED灯点亮功能实现
在main.c文件中的while(1)语句中写入以下程序。
HAL_GPIO_TogglePin(LED_R_GPIO_Port,LED_R_Pin);//翻转LED_R的电平
HAL_Delay(500);//延时500ms,即0.5s
HAL_GPIO_TogglePin(LED_R_GPIO_Port,LED_R_Pin);//翻转LED_R的电平
HAL_Delay(500);//延时500ms,即0.5s
HAL_GPIO_TogglePin(LED_G_GPIO_Port,LED_G_Pin);//翻转LED_G的电平
HAL_Delay(500);//延时500ms,即0.5s
HAL_GPIO_TogglePin(LED_G_GPIO_Port,LED_G_Pin);//翻转LED_G的电平
HAL_Delay(500);//延时500ms,即0.5s
HAL_GPIO_TogglePin(LED_B_GPIO_Port,LED_B_Pin);//翻转LED_B的电平
HAL_Delay(500);//延时500ms,即0.5s
HAL_GPIO_TogglePin(LED_B_GPIO_Port,LED_B_Pin);//翻转LED_B的电平
HAL_Delay(500);//延时500ms,即0.5s
在写程序过程中发现一个问题,加注释的时候不能写入中文,可通过下图操作修改设置。
完成程序编译和烧录,最终效果如图。