STM32F103的流水灯点亮版本1

文章目录
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等 省去了我们配置各种外设的时间,大大的节省了时间

安装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


双击应用程序包安装:

修改路径,点击下一步:

等待安装成功:


3. 安装STM32CubeMX 6.4.0
百度网盘:https://pan.baidu.com/s/1yKgxQk2vxyqAy4CrGHZYzA?pwd=8m4m
提取码: 8m4m

不想在百度网盘下载,可以去官网下载:
官网地址:www.st.com/stm32cubemx

双击应用程序文件进行安装:


同意协议,下一步:

勾选第一个即可(第二个选项是是否同意ST公司收集你的个人使用信息等):

自定义安装路径:
点YES(这句话是安装本软件可能会与文件夹之前文件冲突,导致文件夹之前文件丢失,点继续即可):

直接点NEXT,其他不用设置,之后开始安装:

安装完成,点Done退出:


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:

找到STM32F4,点击三角箭头:
购买最新的固件包:
点击“Install Now” 进行在线安装, 如下图:

开始安装:

方框变为绿色,表明固件包成功安装:

二、准备工作
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环境介绍
操作键介绍:

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

GPIO配置:


时钟配置:

三、 项目创建
1. 新建工程
打开STMCubeMX,点击ACCEE TO MCU SELECTOR,创建项目:


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

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

点击Start Project,就可以看到自己选择的芯片:


2. 引脚配置
开发板界面分为引脚预览和系统预览:

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

配置引脚时只需把目标LED对应引脚设置为GPIO_Output即可,按照题目要求,这里选择:PA5、PB9、PC14


3. 外设配置
键入system core ,进入SYS,在debug下选择serial wire:

点击RCC,将HSE设为Crystal/Ceramic Resonator(晶振):

配置GPIO:

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:


5. 工程配置
注意:
存储目录不可以有中文;
在Project处,是工程的各种配置,只需设置几个,其他的默认即可
点击Projiect Manager,如图所示进行配置:

点击Code Generator,进行进一步配置:

点击GENERATE CODE 创建工程:

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

     


编译发现没有报错:


四、硬件烧录运行
1. 烧录工具
硬件工具:

st-link v2
STM32F103C8开发板
LED灯
线路若干
软件工具:

keil c51
2. 结果展示

HAL库实现流水灯

五、Keil环境下的仿真运行
1. 仿真环境设置
点击魔法棒,选择target,晶振选择为8MHZ:
(注意:这个选项在软件仿真中起到很重要的作用,如果选择错误,那么波形一定是错误的,因为时间不准确)

再次点击魔法棒,点击debug,勾选Use simulator和Run to main(),并且在Dialog DLL改为是DARMSTM.DLL,另一处改为 TARMSTIM.DLL;两处的Parameter改为-pSTM32F103C8:

点击OK,仿真环境配置完成

2. 虚拟逻辑分析仪观察输出波形
设置完成后,开启调试模式,打开逻辑分析仪:


添加要观察的IO口:
方法一:在左下角命令行输入dir vtreg命令,查看有哪些引脚可以被检测

方法二:直接键入PORTA.、PORTB.出来目标端口;如:porta.5

方法三:直接以 PORTX >> X 的形式输入,内容取决于代码中定义的管脚;如:PORTA>>5 (该方法也是较为推荐的)

这里使用方法三添加需要观察的IO口,即GPIOA-5、GPIOB-9、GPIOC-14口:
注意:新建引脚,务必将Display Type处设置为Bit!

设置好之后,逻辑分析仪左侧会出现刚才设置的IO口:

点击全速运行;执行一段时间后,点击停止按钮即可:
另:点击in或out设置Grid的大小为1s,勾选signal info和cursor可以设置起始线看到相关信息:

运行一段时间后,点击暂停;
为了观察一下延时函数是否准确:将鼠标移动至第一个波形的一条下降沿处,并点击,锁定此刻的时间;再将鼠标移动至第二条波形的下降沿处与其重叠,观察二者的时间:

由图像可以看出,几乎接近了完整的1秒

总结

通过这次实验,不仅理解了STM32cubemx的基础原理知识,同时通过在stm32cubeMX的开发环境下,运用HAL库编程实现LED流水灯及Keil环境下的仿真运行,观察其波形,又进一步加深了我对这部分知识的理解与运用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值