嵌入式系统开发08——stm32CubeMX+HAL库实现流水灯以及虚拟逻辑分析仪的使用

本文主要介绍如何安装 stm32CubeMX,并使用cubemx完成初始化过程,采用HAL库编程实现LED流水灯。还会涉及到如何在Keil下用软件仿真运行上面代码,并用虚拟逻辑分析仪观察对应管脚上的输出波形。

一、STM32CubeMX简介

STM32CubeMX 是一个图形化的工具,也是配置和初始化C代码生成器(STM32 configuration and initialization C code generation),也就是自动生成开发初期关于芯片相关的一些初始化代码。
1

它包含了 STM32 所有系列的芯片,包含示例和样本(Examples and demos)、中间组件(Middleware Components)、硬件抽象层HAL(Hardwaree abstraction layer)。

STM32CubeMX的特性如下:

1.直观的选择 STM32 微控制器。
2.微控制器图形化配置:
① 自动处理引脚冲突
② 动态设置确定的时钟树
③ 可以动态确定参数设置的外围和中间件模式和初始化
④ 功耗预测
3.C代码工程生成器覆盖了STM32 微控制器初始化编译软件,如IAR、KEIL、GCC。
4.可独立使用或作为 Eclipse 插件使用。

STM32CubeMX 是ST意法半导体的主动原创工具,它可以减轻开发的时间和费用。其集成了一个全面的软件平台,支持 STM32 每一个系列的MCU 开发。这个平台包括 STM32Cube HAL(一个 STM32 的抽象层集成软件,确保STM32 系列最大的移植性)。再加上兼容的一套中间件(RTOS、USB、TCP/IP 和图形),所有内嵌软件组件附带了全套例程。
注:关于 STM32CubeMX 的更多详细介绍可以进入ST官网
(https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/stm32cubemx.html)查看

二、STM32Cubemx的安装

1.安装jdk

  • 由于 STM32CubeMXJava 实现的,需要安装 jdk 环境。

  • jdk官网下载链接:
    https://www.oracle.com/java/technologies/javase-downloads.html

  • 网盘下载:(包括CubeMX和JDK)
    链接:https://pan.baidu.com/s/1DCEDhuiQFrfILFeQzr2d5Q?pwd=plt3
    提取码:plt3
    1
    注意选择windows环境

  • 双击 .exe文件进行安装,点击下一步,更改安装路径,点击下一步
    在这里插入图片描述

  • 安装完成,叉掉即可

2.安装STM32CubeMX

  • 官网下载(官网下载需要绑定邮箱或者注册)
    下载地址:
    https://www.st.com/en/development-tools/stm32cubemx.html

  • 网盘下载:(包括CubeMX和JDK)
    链接:https://pan.baidu.com/s/1DCEDhuiQFrfILFeQzr2d5Q?pwd=plt3
    提取码:plt3

2
我在官网没有注册上,建议使用网盘下载

  • 右键 .exe 文件,以管理员身份运行
    在这里插入图片描述
    在这里插入图片描述

  • 点击 Next
    在这里插入图片描述

  • 点击 ‘I accept the terms of…’->Next
    在这里插入图片描述

  • 勾选第一个,点击 Next
    在这里插入图片描述

  • 更改安装路径,点击 Next
    在这里插入图片描述

  • 直接点 NEXT ,其他不用设置,之后开始安装
    在这里插入图片描述

  • 点击 Next,点击 Done,完成安装
    在这里插入图片描述

三、安装HAL库

1.HAL固件库简介

STM32 HAL 固件库是 Hardware Abstraction Layer 的缩写,中文名称是:硬件抽象层HAL 库是 ST 公司为 STM32MCU 最新推出的抽象层嵌入式软件,为更方便的实现跨 STM32 产品的最大可移植性。HAL 库的推出,可以说ST也慢慢的抛弃了原来的标准固件库,这也使得很多老用户不满。但是 HAL 库推出的同时,也加入了很多第三方的中间件,有RTOS,USB,TCP / IP和图形等等。

标准库 对比起来,STM32的HAL库更加的抽象,ST最终的目的是要实现在 STM32系列MCU之间无缝移植,甚至在其他 MCU 也能实现快速移植。

并且从16年开始,ST公司就逐渐停止了对标准固件库的更新,转而倾向于HAL固件库和 Low-layer底层库的更新,停止标准库更新,也就表示了以后使用 STM32CubeMX 配置 HAL/LL库 是主流配置环境;

2.HAL的安装

  • 打开安装好的 STM32CubeMX 软件
    在这里插入图片描述

  • 点上面的 Help -> Manage embedded software packages
    在这里插入图片描述

  • 会跳出来一个选择型号界面 勾选上你要安装的HAL库,因为我用到的是 STM32F103C8T6,所以我这里选择 STMF1 Series,点击 Install Now 直到安装成功。 如下图
    在这里插入图片描述

  • 等待下载
    在这里插入图片描述

  • 安装成功后,前面的小框会变成绿色
    在这里插入图片描述

四、利用STMCubeMX点亮LED灯

1.任务要求

用stm32CubeMX完成初始化过程,采用HAL库编程实现LED流水灯。
在Keil下用软件仿真运行上面代码,并用虚拟逻辑分析仪观察 对应管脚上的输出波形(高低电平转换),看是否是1秒的周期。

2.环境要求

硬件环境:STM32F103C8T6
软件环境:STM32CubeMX软件、KEIL MDK-arm软件,以及STM32F1xxHAL库

3.STMCubeMX使用方法

  • 使用步骤
    在这里插入图片描述
  • 启动界面
    在这里插入图片描述
  • 目标选择
    在这里插入图片描述
  • 配置主界面
    在这里插入图片描述
  • 引脚分配
    在这里插入图片描述
  • 选择引脚功能
    在这里插入图片描述
  • 外设配置

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

  • 配置时钟模式

时钟配置步骤:
① 修改时钟源频率
② 选择锁相环输入时钟
③ 选择系统时钟源
④ 设置HCLK时钟频率

在这里插入图片描述

  • 配置GPIO
    在这里插入图片描述
  • 工程配置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

4.目标选择

  • 在主界面选择 File–>New Project 或者直接点击 ACCEE TO MCU SELECTOR

在这里插入图片描述

  • 进行芯片型号选择,一般直接在左上角 Part Number 搜索自己的芯片型号即可,这里选择 STMF103C8

在这里插入图片描述

  • 先点击一次搜索出的芯片,然后点击 Start Project

在这里插入图片描述

  • 点进去就可以看到自己选择的芯片了
    在这里插入图片描述

5.引脚分配

这里分为 引脚预览系统预览
淡黄色这种颜色表示不可配置引脚,电源专用引脚以黄色突出显示,其配置不能更改。
深黄色这种颜色表示配置了一个I/O口的功能,但是没有初始化对应外设功能,引脚处于no mode状态。
绿色表示配置成功。
引脚预览 可以查看引脚配置了什么功能,和各个引脚的位置;任意点击一个引脚即可设置该引脚的各种功能。
系统预览 是查看配置的各种外设和GPIO的状态。

  • 把LED对应的引脚 PA5、PB9、PC14 设置为 GPIO_Output
    在这里插入图片描述

6.外设配置

  • 点击 System Core,进入配置系统调试接口 SYS,在 Debug 下选择 Serial Wire
    在这里插入图片描述

7.时钟配置

  • 默认时钟是使用内部RC振荡器,需要配置RCC使用外部时钟源

  • 点击 RCC,有两个时钟,一个是 HSE 和 LSE,将HSE设为Crystal/Ceramic Resonator(晶振)
    在这里插入图片描述

  • 点击 Clock Configuration ,将 HCLK 设置成 72MHz
    在这里插入图片描述

  • 点击 OK
    在这里插入图片描述

8.工程配置

  • 点击 Project Manage,这里就是工程的各种配置,我们只用到有限几个,其他的默认即可 。
    存储目录不可以有中文
    在这里插入图片描述

  • 点击 Code Generator,进行进一步配置。
    在这里插入图片描述

  • 点击 GENERATE CODE 创建工程,点击 Open Project 打开工程文件
    在这里插入图片描述

9.程序编写

  • 打开 main.c 文件,找到主函数,在 main.c 文件的 main 函数下的 while 循环中,添加下面的几行代码
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);//PA5亮灯
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);//PA5熄灯
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);//PA5熄灯
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

在这里插入图片描述

  • 提醒:所有自己编写的代码请放在/* USER CODE BEGIN XXX / / USER CODE END XXX */之间;这样我们修改工程的时候你自己写的代码就不会被删除。

10.编译烧录

(1) 在keil中进行编译

  • 先通过 ST-LinkC8T6 连接到电脑上,接线方法见 嵌入式系统开发07——STM32F103C8T6下C语言寄存器方式实现LED流水灯
    在这里插入图片描述

  • 点击魔法棒,选择 Debug,勾选 Use:ST-Link Debugger,点击 Setting
    在这里插入图片描述

  • 连接成功可以看到以下内容,点击确定
    在这里插入图片描述

  • Output 下勾选 Create HEX File ,点击OK
    在这里插入图片描述

  • 接下来进行编译,这里我直接点击 Build,发现编译失败,并且提示下列信息
    在这里插入图片描述

这里是因为 Compiler Version 5 编译器在 Keil 5.37 以后就不再默>认安装,从这个版本开始,Keil 默认安装的是 Compiler Version 6.18

  • 解决办法:点击魔法棒,在 Target 选择Use default compiler version 6
    在这里插入图片描述

  • 再点击 Build,发现编译成功
    在这里插入图片描述

(2)烧录
BOOT 都设置为 0
在这里插入图片描述

  • 点击 Download ,进行烧录
    在这里插入图片描述

  • 这里会提示下面的信息,直接点确定就行了
    在这里插入图片描述

  • 烧录成功
    在这里插入图片描述

  • 按下 C8T6 上的 RESET键,连接对应管脚的LED就被点亮了
    在这里插入图片描述

  • 实现效果

    HAL库实现流水灯

五、仿真调试

1.设置仿真模式

  • 点击 魔法棒,在 Debug 设置里下面两项内容进行更改:

Dialog DLL默认是DARMSTM.DLL
Parameter默认是-pSTM32F103VC

在这里插入图片描述

2.使用逻辑分析仪

  • 模式设置完成后,开启调试模式,打开逻辑分析仪
    在这里插入图片描述

  • 逻辑分析仪界面如下
    在这里插入图片描述

  • 给逻辑分析仪中添加要观察的IO口:

方法一:在左下角命令行输入dir vtreg命令,查看有哪些引脚可以被检测
在这里插入图片描述

方法二:直接键入PORTA.5、PORTB.9、PORTC.14目标端口
在这里插入图片描述

方法三:直接以 PORTX >> X 的形式输入,内容取决于代码中定义的管脚;如:PORTA>>5 (推荐)
在这里插入图片描述

  • 将新添加引脚的 Display Type处设置为 Bit在这里插入图片描述

  • 设置好之后,逻辑分析仪左侧会出现刚才添加的三个IO口,点击 (RUN)运行
    在这里插入图片描述

  • 执行一段时间后,点击停止按钮即可
    在这里插入图片描述

  • 将光标移动到波形处,按住Ctrl,滑动鼠标滚轮,将 Grid 设置为1s,观察波形
    在这里插入图片描述

  • 发现波形的周期非常接近 1s

六、总结

通过本次学习,我初步掌握了用cubemx完成初始化的过程,也实现了利用HAL库编程实现LED流水灯,还掌握了在Keil下用虚拟逻辑分析仪的使用方法。HAL库提供的可视化界面大大提高了编程效率,


参考列表:
1.stm32cubeMX使用HAL库点亮LED流水灯
2.搭建STM32开发环境——STM32CubeMX,Keil5
3.stm32CubeMX+Keil使用HAL库点灯,并使用逻辑分析仪观察周期
4.Keil5遇到:*** Target ‘xxx‘ uses ARM-Compiler ‘Default Compiler Version ‘ which is not available.

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

6¿6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值