目录

一、内容介绍

二、环境建立

软件安装

二、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新建工程,进行如下操作,然后点击左上角进行下一步设置:

2)工程配置

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

  • Categories  种类选择

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

  • A-Z  顺序选择

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

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

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

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

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的各个配置之后,接下来就是工程文件的设置(路径不能有中文名);

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

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

然后点击GENERATE CODE  生成工程;

三、keil中仿真

1)功能完善

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

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

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

在 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 */之间

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

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

2)仿真观察

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

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

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

仿真波形如下图所示:

到这里仿真就结束了!

四、led点亮

1)代码烧录

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

烧录完成后即可看到面包板上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使用教程

STM32CubeMX和keil实现led灯的点亮相关推荐

  1. c语言c51单片机点亮8个灯,单片机课程设计-8个LED灯来回点亮

    <单片机课程设计-8个LED灯来回点亮>由会员分享,可在线阅读,更多相关<单片机课程设计-8个LED灯来回点亮(20页珍藏版)>请在人人文库网上搜索. 1.目录第一章 绪论-3 ...

  2. 诺贝尔物理学奖公布:LED灯将点亮了整个21世纪

    很多其它精彩.破晓博客:点击打开链接 7日.在瑞典首都斯德哥尔摩,瑞典皇家科学院常任秘书诺尔马克(左二)宣布2014年诺贝尔物理学奖得主.新华社发 ■人物 中村修二 勇于追讨酬劳的科学家 被誉为&qu ...

  3. 诺贝尔物理学奖揭晓:LED灯将点亮整个21世纪

    更多精彩,破晓博客:点击打开链接 7日,在瑞典首都斯德哥尔摩,瑞典皇家科学院常任秘书诺尔马克(左二)宣布2014年诺贝尔物理学奖得主.新华社发 ■人物 中村修二 勇于追讨报酬的科学家 被誉为" ...

  4. 点亮led灯的个数_16个LED灯循环点亮的小程序(代码)

    今天又小伙伴又来考我了.问我16个LED灯循环点亮怎么变成.我也动了下手,将手里的8个LED灯循环点亮的小程序进行了修改,就完成了16个LED灯循环点亮的小实验.那么下面给大家分享下吧! 其实16个L ...

  5. Arduino(一):LED灯的点亮熄灭和亮度控制

    原本是因为有意了解少儿编程相关的内容,购买了一套某公司的开发套件,通过scratch图形方式对Arduino的基础开发进行了一些学习. 后来又觉得scratch我都学了,还不趁势研究一下代码怎么写未免 ...

  6. 51单片机实验——LED灯(点亮、闪烁、流水)

    文章目录 前言 一.keil创建工程 二.proteus professional搭建仿真电路 三.点亮LED灯 四.闪烁LED灯 五.流水式LED灯 总结 前言 STC89C51RC是采用8051核 ...

  7. STM32F103系列芯片原理学习以及LED灯的点亮

    一.STM32F103系列芯片的地址映射和寄存器映射原理 1.寄存器 寄存器是中央处理器内的组成部分.寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令.数据和地址. 其实,寄存器就是存放东西的东 ...

  8. LED灯的点亮和按键控制_GPIO

    一.GPIO控制灯亮 原理图绘制 ① 点"p"添加原件,有led灯和按键 ② 添加led在PA1和PA11引脚上,这里led 的正极接了电源,所以这里只有引脚输出低电平时,灯才会点 ...

  9. 【嵌入式系统开发】Keil 实现LED灯闪烁 详细教程及完整代码

最新文章

  1. 第二次作业--线性表
  2. Linux运维实战之用户和组
  3. zabbix企业应用之报表功能
  4. python分割数字_对python数据切割归并算法的实例讲解
  5. Visual C++——《可视化编程技术》实验报告——MFC编程
  6. RabbitMQ控制台详解
  7. FYR的完整形式是什么?
  8. 从yield 到yield from再到python协程
  9. 大数据处理系统关键层次架构
  10. 35岁前要培养的66种思维(中)
  11. Google Earth Engine —— LandTrendr JavaScript 模块API(2万多字长文)
  12. 关于哈密顿路是否存在的遍历算法
  13. java -- 解决InputStream不可重复读的问题
  14. Yii Zii组件 CGridView 使用详解
  15. windows 安装达梦数据库Python 报错:fatal error C1083: Cannot open include file: ‘DPI.h‘: No such file or direc
  16. 【Python】基于OpenCV与UDP实现的视频流传输
  17. 致敬司徒!avalon例子学习
  18. Android APP性能及专项测试(个人整理)
  19. 【Python】这篇文章能让你明白经验模态分解(EMD)——EMD在python中的实现方法
  20. 基于neo4j知识图谱的旅游景点问答辅助系统

热门文章

  1. 解决我的驱动无法卸载的问题
  2. 你真的了解中兴吗?带你认识科技品牌 刷新认知
  3. CoolProp函数输入表
  4. html简单的时分秒计时器,时分秒自定义倒计时计时器
  5. Ubuntu 20.04 server 安装
  6. 影视解说短视频如何配音?三个文字转语音小技巧,配音其实也不难
  7. css3 平行四边形 、大括弧
  8. 华为机试:火星符号运算
  9. 抖音关键词排名怎么靠前,抖音关键词怎么优化?
  10. 数据库DQL单表查询