IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32CubeMX的搭建及使用HAL库实现LED闪烁 -> 正文阅读

[嵌入式]STM32CubeMX的搭建及使用HAL库实现LED闪烁

一、STM32的开发环境的搭建

1.安装jdk环境

a) 安装

由于STM32CubeMX是Java实现的,需要安装jdk环境;

下载链接:Java Downloads

打开exe,进入安装:
在这里插入图片描述
选择安装位置,点击下一步继续;
请添加图片描述
点击关闭,完成安装。
请添加图片描述

b) 配置

  1. 首先通过以下路径进入环境变量:
    计算机→属性→高级系统设置→环境变量
    请添加图片描述
    在这里插入图片描述
  2. 新建系统变量:
    请添加图片描述
    第一个变量名为JAVA_HOME
    变量值为安装jkd的目录,我的是C:\Program Files\Java\jdk-17.0.1
    请添加图片描述
    请添加图片描述
    第二个变量名为:CLASSPATH
    变量值: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
    注意最前面的点不可省略
    请添加图片描述
    第三个变量是修改Path变量:
    变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
    请添加图片描述
    请添加图片描述
    再点击确定,关闭窗口。
  3. 验证java是否配置成功:
    使用键盘上的win+R, 输入cmd
    请添加图片描述
    输入java -version注意中间有空格
    显示版本信息即为安装成功。
    请添加图片描述

2.安装STM32CubeMX

a) 软件下载

请添加图片描述
这里会跳出一个窗口,要求注册账号,填写有效的邮箱地址

进入邮箱,打开邮件中的下载链接即可下载软件。
请添加图片描述

b) 安装

以管理员身份运行安装下载的exe应用程序;
请添加图片描述
点击Next继续;
请添加图片描述
勾选"I accept …",点击Next继续;请添加图片描述
再勾选下面两个权限,点击Next继续;
请添加图片描述
选择安装位置,注意路径中不要出现中文,默认地址在C盘,点击确定继续;
请添加图片描述
直接点击Next继续;
请添加图片描述
进入安装;
请添加图片描述
安装进程Finished;
请添加图片描述
点击Done,完成安装。
请添加图片描述

3.安装固件库

运行STM32CubeMX程序,在窗口Help中选择Manage embedded software packages安装固件库;
请添加图片描述
根据自己的芯片类型,选择一个固件库,点击下方的Install Now直接下载安装,也可以使用From Local…进行下载,表示从本地安装,前提是已经在本地下载了对应的固件库;
请添加图片描述
进入下载页面;
请添加图片描述
下载完成后,前面的框显示为绿色
请添加图片描述
固件库便安装完成。

4.安装MDK5软件

我的设备已安装过Keil,如有需要可参考链接:
如何开始一个stm32的简单程序的编译

注意:安装过程结束后,要安装对应的固件库才能够做对应STM32的开发。

二、利用工具生成点亮LED灯的代码

1、打开STMCubeMX,点击ACCESS TO MCU SELECTOR创建新项目;
在这里插入图片描述
下载必要的文件;
在这里插入图片描述
2、进入主页面,在Part Number处选择芯片,这里以STMC8T6为例,然后点击下方一栏,会出现的一列芯片的信息,再点击Start Project;
在这里插入图片描述
3、点击System Core,选择SYS,在Debug处选择Serial Wire
在这里插入图片描述
4、再选择RCC配置时钟,可以看到有两个时钟,分别是HES和LSE。
在这里插入图片描述
我们采用是GPIO接口,而这些接口都在APB2里;
点击Clock Configuration观察时钟架构,可以看见APB2总线的时钟由HES控制,同时把中间的PLLCLK选上;
在这里插入图片描述
所以回到第一个页面,将HSE设为Crystal/Ceramic Resonator,勾选后RCC前面也会自动勾选上;在这里插入图片描述
5、接下来设置输出寄存器,选择进入GPIO界面,点击相应的引脚,选择GPIO_Output
在这里插入图片描述
这里选了三个,分别是PA4PB10PC14
请添加图片描述
在左边可以看到添加的三个引脚,并修改参数Maximun output speedMedium,然后在User Label添加引脚标签
请添加图片描述
6、点击上方的Project Manager,在Project页面,配置好项目名称路径,然后修改Toolchain/IDEMDK-ARM,版本根据自己的设备选择;

注意路径中不能含有中文,否则后面生成的文件不全。

请添加图片描述
7、再点击进入Code Generate界面,在Generated files勾选Generate peripheral initialization as a pair of '.c/.h' files per peripheral生成初始化.c/.h文件;
请添加图片描述
8、最后点击右上方的GENERATE CODE,即可生成代码;
请添加图片描述
点击Open Project便可直接进入工程。
请添加图片描述

三、MDK5生成.hex文件

3.1 在main函数中插入代码

继续上面的操作,进入工程后,通过目录找到并打开main.c文件,找到主函数int main(void)的部分;
请添加图片描述

/* USER CODE BEGIN /
用户代码
/ USER CODE END*/

如果要在STM32CubeMX生成的工程中添加代码,要在提示 /* USER CODE BEGIN* /和/* USER CODE END*/之间添加代码,这样STM32CubeMX重新生成代码时才不会将自己添加的代码删除掉。
此外,注意使用CubeMX配置生成的工程中的注释最好不要随便删除掉。

while循环的 /* USER CODE BEGIN 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_10,GPIO_PIN_RESET);//PB10亮灯
	HAL_Delay(500);//延时0.5s
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10,GPIO_PIN_SET);//PB10熄灯
	HAL_Delay(500);//延时0.5s
		
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_RESET);//PC14亮灯
	HAL_Delay(500);//延时0.5s
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_SET);//PC14熄灯
	HAL_Delay(500);//延时0.5s

如下图所示,注意要插入到while函数的括号范围内;
请添加图片描述

3.2 调试编译

编译程序,无报错且生成相应的.axf文件;
请添加图片描述
在文件夹LED_test中,可找到生成的.hex文件;
请添加图片描述

四、程序烧录

烧录过程的操作和软件下载可参考我的上一篇博文:
使用STM32寄存器点亮LED流水灯

在这里插入图片描述

五、运行结果

面包板工作如下,LED三色灯正常亮灯,间隔闪烁。
请添加图片描述

六、MDK5模拟示波器

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

6.1 配置工程

点击魔术棒进入工程配置,首先在Target窗口,设置晶振为8MHz;
请添加图片描述
配置Debug
1、勾选Use Simulator
2、勾选Run to main
3、修改左边的Dialog.DLL为DARMSTM.DLL
4、修改右边的Dialog.DLL为TARMSTM.DLL
5、修改两边的Parameter为-pSTM32F103C8

DARMSTM.DLL和TARMSTM.DLL在STM32的单片机中应该都是固定的;
Paramter是根据采用的具体芯片,应与Target中STMicroelectronics 保持一致。

在这里插入图片描述

6.2 调试观察

1、点击窗口右上角的Start Debug Session进行仿真调试;
在这里插入图片描述
2、调试后,选择逻辑分析仪Logic Analyer
请添加图片描述
3、选择要观察的引脚:
点击Setup Logic Analyzer
请添加图片描述
添加要观察的引脚;

如PA4可直接输入PORTA.4;
图中选择的三个引脚分别是PA4、PB10和PC14,GPIOA对应的为PORTA,那么GPIOB对应的也应该写成PORTB,以此类推。其中PORTA & 0x00001000后再右移4位也就把PA4的状态获取出来,1是高电平,0是低电平。PB10和PC14同理。

选择Bit,便于观察波形;
颜色是为了区分不同的引脚,根据需要配置即可。

注意:如果上述步骤中Debug没有正确修改正配置,那么在添加引脚的时候就会出现Unknown Signal 的报错

请添加图片描述
4、运行程序;
在这里插入图片描述
5、观察波形,把光标移动到逻辑分析仪显示波形的区域,上下滚动滑轮,就可以放大和缩小波形,即可观察各个引脚的波形图;
请添加图片描述

七、总结

本次实验安装了两个软件jkd和Cube,配置后使用Cube自动生成代码,再烧录到硬件上,体会到了使用工具的便捷性,且大大提高了工作效率,若是熟悉操作更能在高效下保证代码的准确性。通过逻辑分析仪代替示波器,更能在仿真出现问题时,定位到问题所在,再逐步解决!

八、参考文献

1 .搭建STM32开发环境——STM32CubeMX,Keil5

2.STM32实现LED闪烁——基于HAL库

3.基于 MDK 创建 STM32 汇编程序:串口输出 Hello world

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-28 12:32:33  更:2021-10-28 12:33:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:28:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码