STM32CubeMX和keil实现led灯的点亮

目录

一、内容介绍

二、环境建立

         软件安装

二、STM32CubeMX的使用

      1)新建工程

      2)工程配置

三、keil中仿真

      1)功能完善

      2)仿真观察

四、led点亮

      代码烧录

四、总结

五、参考内容


一、内容介绍

安装 stm32CubeMX,配合Keil,使用寄存器方式(汇编或C,不限) 或HAL库这两种方式,完成下列任务:

重做上一个博客的LED流水灯作业,即用GPIO端口完成3只LED红绿灯的周期闪烁。

在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。 请用此功能观察3个GPIO端口的输出波形,并分析其波形反映的时序状态正确与否,高低电平转换周期(LED闪烁周期)实际为多少。

二、环境建立

软件安装

安装CubeMx一共需要三个

  •  JRE (Java Runtime Environment),Java运行环境,运行JAVA程序所必须的环境的集合
  •  STM32CubeMX
  • HAL库   STM32 HAL固件库 ,ST官方推出的另一套库

具体的安装过程见参考博客:

(17条消息) 【STM32】STM32 CubeMx使用教程一--安装教程_Z小旋-CSDN博客_stm32cubemx安装

二、STM32CubeMX的使用

1)新建工程

首先,打开STM32CubeMX新建工程,进行如下操作,然后点击左上角进行下一步设置:

STM32CubeMX和keil实现led灯的点亮_第1张图片

2)工程配置 

接下来需要对我们的芯片进行一些初始化设置;

  • Categories  种类选择

将MCU的各种外设和资源分类,供用户选择使用

  • A-Z  顺序选择

MCU的外设资源按A-Z 排序,供用户选择使用

首先进行时钟源配置,将时钟树的内核时钟配置为72MHZ ;

STM32CubeMX和keil实现led灯的点亮_第2张图片

 接下来,需要配置RCC才能够使用外部时钟源:选择晶振后,芯片预览图对应管脚也会发生如下图变化;

STM32CubeMX和keil实现led灯的点亮_第3张图片

由于我们题目中是选择的GPIO端口,所以需要在芯片上选择该端口的配置,具体如下图(这里选择的是PA4,PA5,PA6三个端口): 

STM32CubeMX和keil实现led灯的点亮_第4张图片

STM32CubeMX和keil实现led灯的点亮_第5张图片

 STM32CubeMX和keil实现led灯的点亮_第6张图片

GPIO output level:有low和high两种选择,一般选择low
GPIO mode:推挽输出和开漏输出两者模式,两者模式的区别在于推挽输出中1代表VCC,0表示                         GND;开漏输出中1代表高阻态,0代表GND。
GPIO Pull-up/Pull-down:输入需要上下拉,输出一般没有上下拉

Maxinum output speed:最大的输出速度,一般选择low就可以了。

 设置完MCU的各个配置之后,接下来就是工程文件的设置(路径不能有中文名);

STM32CubeMX和keil实现led灯的点亮_第7张图片

 然后点击Code Generator(代码生成器设置),进行进一步配置

STM32CubeMX和keil实现led灯的点亮_第8张图片

 PS:每个选项的具体说明见参考内容的博客!!!

然后点击GENERATE CODE  生成工程;

 三、keil中仿真

1)功能完善 

在上面生成工程文件后,可直接在keil中打开该工程,打开后如下图所示:

STM32CubeMX和keil实现led灯的点亮_第9张图片

 接下来,需要对从STM32CubeMX中生成的工程代码添加一些功能,以达到题目的要求;

打开上一张图片中显示的main.c文件,找到其中的while循环代码段,

STM32CubeMX和keil实现led灯的点亮_第10张图片

在 While循环中添加以下代码:

		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);//将A4灯设置为高电平
		HAL_Delay(500);
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);	//A4灯为低电平 
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET); //A5设置为高电平
		HAL_Delay(500);
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN5,GPIO_PIN_RESET);	//A5灯灭(低电平)
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_6,GPIO_PIN_SET);//A5灯亮(高电平)
		HAL_Delay(500);
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_6,GPIO_PIN_RESET);//A6低电平

所有自己编写的代码都应该放在/* USER CODE BEGIN XXX */   /* USER CODE END XXX */之间 

 这样我们修改工程的时候你自己写的代码就不会被删除,所以添加后如下图所示:

STM32CubeMX和keil实现led灯的点亮_第11张图片

 从上面代码可以看出HAL库的用处了,其中的函数真的很简洁使用!

2)仿真观察

点击“仙女棒”,对仿真环境进行一些设置:

STM32CubeMX和keil实现led灯的点亮_第12张图片

 编译没有错误后,就可以开始仿真了,由于我们还需要观察波形,所以需要添加对应的管脚,具体如下图:

STM32CubeMX和keil实现led灯的点亮_第13张图片

点击以下图标开始观察波形:

STM32CubeMX和keil实现led灯的点亮_第14张图片

 仿真波形如下图所示:

STM32CubeMX和keil实现led灯的点亮_第15张图片

 到这里仿真就结束了!

四、led点亮

1)代码烧录

打开烧录软件mcuisp,插入我们连接好的芯片(具体连接方式看上一篇博客,这次的连接只需要改变led灯的连接位置),点击搜索串口,我这里的端口号是“COM3”,选择bps为115200,具体如下:

STM32CubeMX和keil实现led灯的点亮_第16张图片

 烧录完成后即可看到面包板上led灯接连周期性闪烁;

烧录进去后实物展示可见上一篇博客,只需要将三个灯的接口改到“PA4,PA5,PA6”三个接口,之后灯就会周期性闪烁了!

五、总结

本次实验与上次实验相比,让我们体会到了通过工具stm32cubMX生成工程文件比自己编写代码要简单方便很多,尤其针对我这种什么都不太懂的人来说,总之,学到了很多!文章当中如有不对的地方,请指出!!!

六、参考内容

1、(17条消息) STM32实现LED闪烁——基于HAL库_Harriet的博客-CSDN博客_stm32实现led灯的闪烁

2、(17条消息) 【STM32】STM32CubeMX教程二--基本使用(新建工程点亮LED灯)_Z小旋-CSDN博客_stm32cubemx使用教程

3、(17条消息) 【STM32】STM32CubeMX教程二--基本使用(新建工程点亮LED灯)_Z小旋-CSDN博客_stm32cubemx使用教程

你可能感兴趣的:(stm32,单片机,arm)