嵌入式:使用CubeMX和HAL库点亮LED流水灯

这篇博客介绍了如何使用STM32CubeMX生成代码来点亮LED灯,并通过示波器观察波形验证代码正确性。作者详细讲解了从配置时钟、设置GPIO到编写代码、生成HEX文件的步骤,以及如何使用MDK-ARM进行编译和逻辑分析仪功能来观察波形。实验中涉及STM32F103C8T6芯片,代码实现LED灯交替闪烁,并给出了可能出现的问题及解决方法。
摘要由CSDN通过智能技术生成

前言

本文是嵌入式菜鸡做点小实验来熟悉CubeMX、HAL库的简单实验报告。

一、使用CubeMX生成代码点亮LED灯

1.使用CubeMX生成代码

打开CubeMX,点击ACCESS TO MCU SELECTOR创建新项目
在这里插入图片描述
Part Number处选择芯片,这里以STM32F103C8T6为例,然后在中间会出现一列芯片的信息,点击之后再点击Start Project
在这里插入图片描述
在这里插入图片描述

点击System Core,进入里面的SYS,在debug那里选择Serial Wire
在这里插入图片描述
然后配置时钟了,进入上面的RCC,有两个时钟,一个是HES和LSE,我们要用是GPIO接口,而这些接口都在APB2里,所以点击时钟架构,可以看见APB2总线的时钟由HES控制,同时在这个界面得把PLLCLK选上
在这里插入图片描述
在这里插入图片描述
然后回到之前的Pinout&Configuration界面将HES那里设为Crystal/Ceramic Resonator
在这里插入图片描述
接下来就是设置输出寄存器,进入GPIO界面,点击相应的引脚,选择GPIO_Output
在这里插入图片描述
我这里一共选了三个,分别是PA4,PB4,PC15
在这里插入图片描述
依次选择PA4,PB4,PC14,将其配置为下图所示
在这里插入图片描述
在这里插入图片描述
Project Manager–>Project下,配置好自己的项目名和路径,然后IDE那项改为MDK-ARM,版本根据自己的需求选择
在这里插入图片描述
注意:在创建文件位置时,不能不能不能有中文的路径文件名,包括要放置的目录下 ,所有都创建为英文,否则后面生成的文件不全。

进入Code Generate界面,勾选生成初始化.c/.h文件
在这里插入图片描述
最后点击GENERATE CODE,生成代码
在这里插入图片描述

2.生成芯片可执行的hex文件

进入刚刚选择的路径,打开MDK-ARM子文件夹,通过keil打开刚刚生成的项目
在这里插入图片描述
通过目录找到并打开main.c文件,找到主函数int main(void)那一部分
在这里插入图片描述
注意:如果要在STM32CubeMX生成的工程中添加代码,要在提示 /* USER CODE BEGIN* /和/* USER CODE END*/之间添加代码,这样STM32CubeMX重新生成代码时才不会将自己添加的代码删除掉。此外,注意使用CubeMX配置生成的工程中的注释最好不要随便删除掉。
在while循环的/* USER CODE BEGIN 3 /和/ USER CODE END 3 */之间插入以下代码:

	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);//PA4亮灯
	HAL_Delay(500);//延时0.5s
	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);//PA4熄灯
	HAL_Delay(500);//延时0.5s	
	  
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_RESET);//PB4亮灯
	HAL_Delay(500);//延时0.5s
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_SET);//PB4熄灯
	HAL_Delay(500);//延时0.5s
		
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_RESET);//PC15亮灯
	HAL_Delay(500);//延时0.5s
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_SET);//PC15熄灯
	HAL_Delay(500);//延时0.5s

在这里插入图片描述
点击魔法棒,勾选生成hex文件。
在这里插入图片描述
编译运行程序,生成hex文件,在与工程名相同的子文件夹里。
在这里插入图片描述

3.程序运行:亮灯

使用mcuisp烧录程序,具体过程可以见:STM32串口下载程序
具体连线可以查看:STM32F103寄存器方式点亮LED流水灯(软硬结合初尝试)根据代码有一些改变。
动态效果:
在这里插入图片描述

注意:如果确定代码没问题,接线也正确,但是最小系统板并没有正确执行程序,可以试试将BOOT0引脚在不断电的情况下从1换到0,再按一下复位键,程序就可以正常执行。

二、示波器显示看波形确定代码正误

在没有示波器条件下,可以使用MDK5的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点,因此可以用MDK5的软件仿真观察3个GPIO端口的输出波形。

点击魔法棒,设置target,外部晶振为8MHz,这个参数对仿真对错很重要。
在这里插入图片描述
设置debug如图所示
在这里插入图片描述
设置完成后,编译运行;
选择逻辑分析仪Logic Analyer;
在这里插入图片描述
选择要观察的引脚,点击Setup Logic Analyzer
在这里插入图片描述
添加要观察的引脚,详细设置方法可见:STM32F103寄存器方式点亮LED流水灯(软硬结合初尝试)在这里插入图片描述
运行程序:
在这里插入图片描述

观察波形,
在这里插入图片描述

三、总结

CubeMX确实很强大,比我之前写的文章(自己写代码、计算地址)要方便很多很多倍。果然,利用好工具对提高效率很有用处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值