【stm32cubeMX】使用HAL库点亮LED流水灯
stm32cubeMX使用HAL库点亮LED流水灯
- 1.安装STM32CubeMX
- 2.安装HAL库
- 3.新建项目
- 4.keil仿真调试
- 五、实现
- 六、参考资料
1.安装STM32CubeMX
官网下载(官网下载需要绑定邮箱或者注册)
也可链接:点击链接使用百度网盘下载
提取码:8520
(1)管理员身份运行安装程序,点击next:
(2)点击"I accept the terms of this license agreement",接着选择Next:
(3)勾选第一个即可,第二个选项是是否同意ST公司收集你的个人使用信息等:
(4)选择安装位置,默认位置是安装在C盘中(注意:安装位置不要出现中文):
(5)直接点NEXT,其他不用设置 之后开始安装:
(6)安装完成,点Done退出:
2.安装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库是主流配置环境;
(1)打开安装好的STMCubeMX
(2)点击HELP->Manage embedded software packages :
(3)会跳出来一个选择型号界面 勾选上你要安装的HAL库, 点击“Install Now” 直到安装成功。 如下图:
3.新建项目
(1)回到STMCubeMX的主界面,创建新项目:
(2)在part name里选择自己的芯片,点击信息栏中的具体芯片信息选中,点击start project:
(3)点击system core,进入SYS,在debug下选择serial wire:
(4)配置时钟,进入上面的rcc,有两个时钟,一个是hse和lse,我们要用是GPIO接口,而这些接口都在APB2里:
接下来观察时钟架构,APB2总线的时钟由hse控制,同时在这个界面得把PLLCLK右边选上:
(5)将hse那里设为Crystal/Ceramic Resonator:
(6)接下来就是点击相应的引脚设置输出寄存器了,就是output那一项,一共选了三个,是PA5,PB9,PC15:
(7)点击project manager,配置好自己的路径和项目名,然后IDE那项改为MDK-ARM:
(8)进入 code generate界面,选择生成初始化.c/.h文件,后面点击generate code,选择open project,然后就到KEIL5了:
4.keil仿真调试
(1)打开main.c文件,滑倒主函数那一部分:
(2)将下面代码放入主函数中(替代里面的内容)
SystemClock_Config();//系统时钟初始化MX_GPIO_Init();//gpio初始化while (1){ 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);//PC15熄灯HAL_Delay(1000);//延时1sHAL_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);//PC15熄灯HAL_Delay(1000);//延时1sHAL_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);//PC15亮灯HAL_Delay(1000);//延时1s}
(3)观察GPIO端口的输出波形
(1)Target界面中,选择跟正确的晶振大小,我使用的是8MHz的外部晶振。这个选项在软件仿真中起到很重要的作用,如果选择错误,那么波形一定是错误的,因为时间不准确。
(2)Debug页的设置:
(3)点击Debug,进入调试界面:
(4)选择逻辑分析仪:
(5)选择要观察的引脚:
①点击Setup Logic Analyzer
②添加要观察的引脚:
(6)观察波形:
引脚为低电平的灯亮,高电平的灯不亮,高低电平转换周期(LED闪烁周期)为1s左右。
在单独使用keil写流水灯的时候,自己要写的相关语句比较多,用STMCubeMX+keil+hal库实现点灯比较容易。
五、实现
将文件编辑为hex后下板,连接红黄绿三色灯
QQ视频20221010220746
六、参考资料
【STM32】STM32 CubeMx使用教程一–安装教程
使用STMCubeMX生成代码(使用hal库)实现流水灯
【stm32cubeMX】使用HAL库点亮LED流水灯相关推荐
- stm32cubeMX使用HAL库点亮LED流水灯
系列文章目录 文章目录 系列文章目录 一.实验工具 二.STM32CubeMX生成代码使用HAL库点亮流水灯 1.安装STM32CubeMX 2.安装HAL库 3.新建项目 4.keil仿真调试 三. ...
- 【嵌入式知识07】借助stm32CubeMX,使用STM32F103C8T6点亮LED流水灯
本文目录 一.简述 二.STM32CubeMX简介 1.利用CubeMX新建工程点亮LED灯 1)前期准备 2)新建工程 2.界面讲解 3.配置引脚 4.时钟源配置 5.工程管理 三.点亮LED 1. ...
- STM32CubeMX基于HAL库点亮LED灯
开发环境:Windows 软件: 1.STM32CubeMX 6.3.0 2.MDK 5.14 一.cubeMX的基本配置 1.选择MCU 2.配置时钟 查看电路图,8MHz的高速外部晶振接到 OSC ...
- GPIO端口初始化设置,STM32F103点亮LED流水灯过程
文章目录 一.STM32F103系列芯片地址映射和寄存器映射原理 1.什么是寄存器 2.地址映射和寄存器映射 3.寄存器地址查找 二.GPIO端口初始化设置 1.GPIO简介 2.配置时钟 3.输入输 ...
- STM32F03寄存器方式点亮LED流水灯
STM32F03寄存器方式点亮LED流水灯 文章目录 STM32F03寄存器方式点亮LED流水灯 一.题目内容 二.STM32F03系列芯片的地址映射和寄存器映射映射原理:了解GPIO端口的初始化设置 ...
- STM32F103C8T6以寄存器方式借助面包板搭建电路点亮LED流水灯详解
文章目录 一.寄存器原理 1.什么是寄存器 2.如何访问寄存器 二.GPIO端口的初始化设置 1.时钟配置 (1)找到时钟使能寄存器映射基地址 (2)找到端口偏移地址以及对应端口所在位置 (3)使能对 ...
- STM32F103寄存器方式点亮LED流水灯
实验要求:以 STM32最小系统核心板(STM32F103C8T6)+面板板+3只红绿蓝LED 搭建电路,使用GPIOB.GPIOC.GPIOD这3个端口控制LED灯,轮流闪烁,间隔时长1秒.1)写出 ...
- 【嵌入式08】STM32F103C8T6寄存器方式借助面包板点亮LED流水灯详解
文章目录 一.题目简述 二.简述:初始化GPIO,点亮LED灯 三.工程文件模板的建立 四.使用寄存器点亮LED灯--代码部分 1.硬件连接设计 2.打开之前建立的工程模板 3.代码编写 4.硬件连接 ...
- 点亮led流水灯c语言程序,用数组的指针控制LED流水灯--C语言编程
#include/************************************************* 函数功能:延时约150ms (3*200*250=150 000μs=150ms ...
最新文章
- ZooKeeper基础学习
- 社交系统/社群系统ThinkSNS+ alpha.2 版本发布!
- Python脱产8期 Day09 2019/4/23
- python 合并重叠数据
- boost::adjacent_find相关的测试程序
- java基础----Date、DateFormat
- 苹果原壁纸高清_周易壁纸 | 八卦图阵高清壁纸
- mvc html validator,ASP.NET MVC实现Validation验证器扩展
- Delphi-IOCP学习笔记九======性能测试和IOCP源码下载5000个连接数
- android dialogfragment 简单,使用DialogFragment
- java String 常用方法集合
- 分子重构技术_4. 串珠模型重构
- 谁抢光了你的火车票?
- latex里图片大小如何调整_怎样用latex修改插入图形的大小,使图形大小一致。...
- 教你将PDF转换Word的方法
- Apache Log4j 2.0-rc1 发布
- Ubuntu / Windows 查看域名系统 (Domain Name System,DNS)
- Lanczos插值,最邻近插值,双线性二次插值,三次插值
- linux ppp用户管理,linux下ppp拨号上网
- 微信小程序使用 setInterval 制作计时器后台延迟问题
热门文章
- 解决Python调试OSError: [WinError 193] %1 不是有效的 Win32 应用程序
- 一文概览2D人体姿态估计
- 定位教程6---上下相机
- 设置网站页面标题的注意事项
- 用scratch编写游戏“小蝌蚪成长”中使背景大于480*360
- 诊断数据库ODX—数据库框架(基于ISO22901详解)
- HDU 4147 KFC -Z+W
- 10、面试官对于分布式搜索引擎的4个连环炮
- Indy:Connection Closed Gracefully
- C语言strtok函数的用法