在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程

STM32Cubemx的安装使用,HAL库编程实现LED流水灯,以及Keil环境下的仿真运行


文章目录

  • STM32Cubemx的安装使用,HAL库编程实现LED流水灯,以及Keil环境下的仿真运行
  • 前言
  • 一、安装教程
    • 1. STM32CubeMX 简介
    • 2. 安装JRE
    • 3. 安装STM32CubeMX 6.4.0
    • 4. 安装HAL库
      • 4.1 什么是HAL固件库?
      • 4.2 HAL库安装方式
      • 4.3 HAL库在线安装
  • 二、准备工作
    • 1. 题目要求
    • 2. 实验工具
    • 3. STM32CubeMX 6.4.0环境介绍
  • 三、 项目创建
    • 1. 新建工程
    • 2. 引脚配置
    • 3. 外设配置
    • 4. 时钟配置
    • 5. 工程配置
    • 6. 程序编写
  • 四、硬件烧录运行
    • 1. 烧录工具
    • 2. 结果展示
  • 五、Keil环境下的仿真运行
    • 1. 仿真环境设置
    • 2. 虚拟逻辑分析仪观察输出波形
  • 总结


前言

STM32CubeMX 是意法半导体推出的图形化配置工具,通过傻瓜化的操作便能实现相关配置,最终能够生成C语言代码,支持多种工具链,比如MDK、IAR For ARM、TrueStudio等。 尤其值得一提的是,TrueStudio已经被ST收购,提供完全免费的版本,并且,通过插件式安装,可以将 STM32CubeMX 集成在一个IDE,使用十分方便。


一、安装教程

1. STM32CubeMX 简介

  • STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。STM32CubeMX几乎覆盖了STM32 全系列芯片
  • 在CubeMX上,通过傻瓜化的操作便能实现相关配置,最终能够生成C语言代码,支持多种工具链,比如MDK、IAR For ARM、TrueStudio等 省去了我们配置各种外设的时间,大大的节省了时间
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第1张图片
  • 安装CubeMx一共需要三个

JRE (Java Runtime Environment) :Java运行环境 运行JAVA程序所必须的环境的集合

STM32CubeMX

HAL库 :STM32HAL固件库,ST官方推出的另一套库

2. 安装JRE

  • 于 STM32CubeMX 软件是基于 JAVA 环境运行的,所以需要安装 JRE (Java Runtime Environment)才能使用,记得选择64位的安装
  • 安装地址:https://www.java.com/en/download/manual.jsp
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第2张图片
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第3张图片
  • 双击应用程序包安装:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第4张图片
  • 修改路径,点击下一步:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第5张图片
  • 等待安装成功:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第6张图片
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第7张图片

3. 安装STM32CubeMX 6.4.0

  • 百度网盘:https://pan.baidu.com/s/1yKgxQk2vxyqAy4CrGHZYzA?pwd=8m4m
  • 提取码: 8m4m
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第8张图片
  • 不想在百度网盘下载,可以去官网下载:
  • 官网地址:www.st.com/stm32cubemx
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第9张图片
  • 双击应用程序文件进行安装:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第10张图片
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第11张图片
  • 同意协议,下一步:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第12张图片
  • 勾选第一个即可(第二个选项是是否同意ST公司收集你的个人使用信息等):
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第13张图片
  • 自定义安装路径:
  • 点YES(这句话是安装本软件可能会与文件夹之前文件冲突,导致文件夹之前文件丢失,点继续即可):
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第14张图片
  • 直接点NEXT,其他不用设置,之后开始安装:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第15张图片
  • 安装完成,点Done退出:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第16张图片
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第17张图片

4. 安装HAL库

4.1 什么是HAL固件库?

  • STM32 HAL固件库是Hardware Abstraction Layer的缩写,中文名称是:硬件抽象层
  • HAL库是ST公司为STM32的MCU最新推出的抽象层嵌入式软件,为更方便的实现跨STM32产品的最大可移植性。HAL库的推出,可以说ST也慢慢的抛弃了原来的标准固件库,这也使得很多老用户不满。但是HAL库推出的同时,也加入了很多第三方的中间件,有RTOS,USB,TCP / IP和图形等等
  • 和标准库对比起来,STM32的HAL库更加的抽象,ST最终的目的是要实现在STM32系列MCU之间无缝移植,甚至在其他MCU也能实现快速移植
  • 并且从16年开始,ST公司就逐渐停止了对标准固件库的更新,转而倾向于HAL固件库和 Low-layer底层库的更新,停止标准库更新,也就表示了以后使用STM32CubeMX配置HAL/LL库是主流配置环境

4.2 HAL库安装方式

  • 在线安装
  • 离线安装

4.3 HAL库在线安装

  • 打开安装好的 STM32CubeMX软件,点击Help -> Manage embedded software packages:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第18张图片
  • 找到STM32F4,点击三角箭头:
  • 购买最新的固件包:
  • 点击“Install Now” 进行在线安装, 如下图:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第19张图片
  • 开始安装:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第20张图片
  • 方框变为绿色,表明固件包成功安装:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第21张图片

二、准备工作

1. 题目要求

  • 安装 stm32CubeMX,用cubemx完成初始化过程,采用HAL库编程实现:在STM32最小系统核心(STM32F103C8T6)下,分别用GPIOA-5、GPIOB-9、GPIOC-14 这3个引脚上控制LED灯(最高时钟2Mhz),轮流闪烁,间隔时长1秒
  • 在Keil下用软件仿真运行上面代码,并用虚拟逻辑分析仪观察 对应管脚上的输出波形(高低电平转换),看是否是1秒的周期
  • 流水灯代码编写可参考本人前一篇博客进行学习:
    https://blog.csdn.net/qq_53112972/article/details/127153401

2. 实验工具

  • STM32CubeMX 6.4.0、keil C51

3. STM32CubeMX 6.4.0环境介绍

  • 操作键介绍:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第22张图片
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第23张图片
    在这里插入图片描述
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第24张图片

  • 外设配置:
    ① System Core:用于配置GPIO、时钟源、中断系 统以及系统相关的外设
    ② Analog:用于配置模/数和数/模转换外设
    ③ Timers:用于配置定时器和实时时钟外设
    ④ Connectivity:用于配置I2C、SPI和UART等连接 外设
    ⑤ Multimedia:用于配置I2S等音频数据传输外设
    ⑥ Computing:用于配置CRC校验外设
    ⑦Middleware:用于配置RTOS和GUI等中间件

  • GPIO配置:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第25张图片

  • 时钟配置:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第26张图片
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第27张图片

三、 项目创建

1. 新建工程

  • 打开STMCubeMX,点击ACCEE TO MCU SELECTOR,创建项目:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第28张图片

  • Part Name里选择自己的芯片:

  • 本次实验采用STM32F103C8开发板,点击信息栏中的具体芯片信息选中:

  • 点击Start Project,就可以看到自己选择的芯片:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第29张图片

2. 引脚配置

  • 开发板界面分为引脚预览和系统预览
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第30张图片

引脚预览:可以查看引脚配置了什么功能,和各个引脚的位置;任意点击一个引脚即可设置该引脚的各种功能。绿色表示配置成功
系统预览:可以查看配置的各种外设和GPIO的状态。

  • 配置引脚时只需把目标LED对应引脚设置为GPIO_Output即可,按照题目要求,这里选择:PA5、PB9、PC14
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第31张图片
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第32张图片

3. 外设配置

  • 键入system core ,进入SYS,在debug下选择serial wire
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第33张图片
  • 点击RCC,将HSE设为Crystal/Ceramic Resonator(晶振):
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第34张图片
  • 配置GPIO:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第35张图片

GPIO output level :Low将该串口初始化为低电平,当然也可以选择High,就是将初始电平拉高,这里按我们电路的接法,所以应该拉低;
GPIO mode:Outpull Pushpull的意思是选择输出模式为推挽输出模式,还有其他几种输出模式;
GPIO Pull-up/Pull-down :No pull-up and no pull-down的意思是设置为输出没有上拉和下拉输出,其实安逻辑来说我们是需要给我们的LED给一个下拉电阻才能点亮的,但是在实际的运用中为了简便发现这样也可以点亮,并且因为电流大,所以LED亮度很高;
Maximum output speed :Low配置的是输出速度,这里配置输出速度为低,目前碰到的大多数情况都选择低就可以

4. 时钟配置

  • APB2总线的时钟由HSE控制。点击Clock Configuration,在这个界面得把PLLCL选上,同时把8MHz改成72,并回车,会出现下列提示框,点击ok
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第36张图片
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第37张图片

5. 工程配置

  • 注意:
    存储目录不可以有中文;
    在Project处,是工程的各种配置,只需设置几个,其他的默认即可
  • 点击Projiect Manager,如图所示进行配置:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第38张图片
  • 点击Code Generator,进行进一步配置:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第39张图片
  • 点击GENERATE CODE 创建工程:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第40张图片

6. 程序编写

  • 注意:所有自己编写的代码请放在/* USER CODE BEGIN XXX / / USER CODE END XXX */之间
    这样我们修改工程的时候你自己写的代码就不会被删除
  • 在main.c文件的main函数下的while循环中,添加下面几行代码即可:
        HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);//PA4
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);//PB9
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_SET);//PC14
		HAL_Delay(1000);//1s
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);//PA4
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);//PB9
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_SET);//PC14
		HAL_Delay(1000);//1s	
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);//PA4
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);//PB9
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_RESET);//PC14
		HAL_Delay(1000);//1s

在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第41张图片

  • 编译发现没有报错:

在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第42张图片

四、硬件烧录运行

1. 烧录工具

硬件工具:

  • st-link v2
  • STM32F103C8开发板
  • LED灯
  • 线路若干

软件工具:

  • keil c51

2. 结果展示

HAL库实现流水灯

五、Keil环境下的仿真运行

1. 仿真环境设置

  • 点击魔法棒,选择target,晶振选择为8MHZ
    (注意:这个选项在软件仿真中起到很重要的作用,如果选择错误,那么波形一定是错误的,因为时间不准确)
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第43张图片
  • 再次点击魔法棒,点击debug,勾选Use simulatorRun to main(),并且在Dialog DLL改为是DARMSTM.DLL,另一处改为 TARMSTIM.DLL;两处的Parameter改为-pSTM32F103C8
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第44张图片
  • 点击OK,仿真环境配置完成
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第45张图片

2. 虚拟逻辑分析仪观察输出波形

  • 设置完成后,开启调试模式,打开逻辑分析仪:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第46张图片
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第47张图片
  • 添加要观察的IO口:
  • 方法一:在左下角命令行输入dir vtreg命令,查看有哪些引脚可以被检测
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第48张图片
  • 方法二:直接键入PORTA.、PORTB.出来目标端口;如:porta.5
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第49张图片
  • 方法三:直接以 PORTX >> X 的形式输入,内容取决于代码中定义的管脚;如:PORTA>>5 (该方法也是较为推荐的)
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第50张图片
  • 这里使用方法三添加需要观察的IO口,即GPIOA-5、GPIOB-9、GPIOC-14口:
    注意:新建引脚,务必将Display Type处设置为Bit!
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第51张图片
  • 设置好之后,逻辑分析仪左侧会出现刚才设置的IO口:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第52张图片
  • 点击全速运行;执行一段时间后,点击停止按钮即可:
  • 另:点击in或out设置Grid的大小为1s,勾选signal info和cursor可以设置起始线看到相关信息:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第53张图片
  • 运行一段时间后,点击暂停;
  • 为了观察一下延时函数是否准确:将鼠标移动至第一个波形的一条下降沿处,并点击,锁定此刻的时间;再将鼠标移动至第二条波形的下降沿处与其重叠,观察二者的时间:
    在STM32Cubemx开发环境下,HAL库编程实现LED流水灯及Keil环境下的仿真运行过程_第54张图片
  • 由图像可以看出,几乎接近了完整的1秒

总结

通过这次实验,不仅理解了STM32cubemx的基础原理知识,同时通过在stm32cubeMX的开发环境下,运用HAL库编程实现LED流水灯及Keil环境下的仿真运行,观察其波形,又进一步加深了我对这部分知识的理解与运用。实操过程中,还是有些小问题,但是经过上网查询以及同学们的帮助下,完成了实验。
同时也期待大家能够积极留言,指出我存在的问题,谢谢!

参考资料:
https://blog.csdn.net/weixin_64559251/article/details/127176072?spm=1001.2014.3001.5502
https://blog.csdn.net/qq_46467126/article/details/120847240?spm=1001.2014.3001.5502

你可能感兴趣的:(stm32,单片机,arm,嵌入式硬件)