当前位置: 首页 > news >正文

[STM32L5] 【STM32L562E-DK试用】第2辑:综合芯片外设测试(GPIO、定时器、串口)

芯片的基本外设实际上是我们用的最多的部分,这里包括:
普通的引脚控制,典型的就是板载LED控制;
GPIO的输入采集,典型的就是板载的按键;
定时器定时功能,任务控制的基本时间基准;
高级定时的功能,典型的是PWM输出以及捕获,LED的呼吸灯就是一种典型的PWM控制;
串口功能,串口打印通常使我们调试的利器;
SPI通信,很多传感器以及显示都支持SPI通信;
IIC通信,通常用于传感器的通信。
以上是我们比较常用的芯片的外设,当然本次使用的STM32L562自然也是拥有这些的,想一想把他们融合在一起进行功能展示,剔除SPI和IIC两种通信(SPI可以在后续板载Flash芯片会介绍)。
我们先看看实际上,我们看的上面的物理外设主要就是LED和按键:

df1adcc4040d85089c10bdb9f6d0d7f5(28.45 KB, 下载次数: 0)

下载附件

2025-3-18 22:24 上传

这两个LED是我们首先看到的,分别为红色和绿色;

2025-3-18 22:24 上传

注意还有个在上方位置,对应是蓝色;

可以使用的按键只有一个,对应的引脚是PC13.
串口打印直接使用STlink的虚拟串口查看,对应的是串口1:

接下来就进行功能的设计,按键只有一个只能通过这个按键进行功能切换,一共有三个LED,可以让其不同模式进行不同展示,这里进行三个模式的设计,同时进行串口打印当前模式:
1、同步blink,所有灯同步亮灭;
2、走马灯,循环点亮;
3、呼吸灯
这里一些需要注意的是,能够是先PWM呼吸灯效果的只有蓝灯可以:

因为只有他能连接到定时器的CH通道。
接下来进行基础外设的初始化设计,首先是最贱的LED的GPIO控制:

接下来是按键采集,这里采用的是外部中断的方式,注意要开启对应的外部中断:

基础定时选用的普通定时器7,依然是注意开启定时器中断,配置的时候注意你实际选用的时钟频率:

蓝灯对应的是定时器15:

串口修改成PA9和PA10:

接下来我们就生成初始化代码进行软件逻辑的控制。
定时器中断的回调函数中进行各个模式定时控制:

复制

  1. <p>void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)</p><p>{</p><p> if (htim->Instance == TIM7) {</p><p> HAL_IncTick();</p><p>LED.Upcnt++;</p><p>if(LED.Mode_Dis == 2)</p><p>{</p><p>if(LED.Upcnt%2 == 0)</p><p>{</p><p>LED.PWMcnt = LED.Upcnt/2;</p><p>LED.UpFlag = 1;</p><p>}</p><p>}</p><p>else</p><p>{</p><p>if(LED.Upcnt >= 200)</p><p>{</p><p>LED.Upcnt = 0;</p><p>LED.state ++;</p><p>LED.UpFlag = 1;</p><p>}</p><p>}</p><p> }</p><p>}</p>


外部中断的处理进行模式的切换:

复制

  1. <p>void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)</p><p>{</p><p> if(GPIO_Pin == GPIO_PIN_13)</p><p> {/* KEY */</p><p> LED.Mode_Dis++;</p><p>LED.Mode_Dis %=3;</p><p>if(LED.Mode_Dis == 0)</p><p>printf("** LED Mode blinking ** \n\r");</p><p>else if(LED.Mode_Dis == 1)</p><p>printf("** LED Mode marquee ** \n\r");</p><p>else</p><p>printf("** LED Mode blinking ** \n\r");</p><p> }</p><p>}</p>


然后所有的判断处理来到while处的判断执行程序:

复制

  1. <p>void LED_Alter(void)</p><p>{</p><p>if(LED.Mode_Dis != LED.Mode_OidDis)</p><p>{</p><p>if(LED.Mode_Dis == 2)</p><p>{</p><p>HAL_TIM_MspPostInit(&htim15);</p><p>HAL_TIM_PWM_Start(&htim15,TIM_CHANNEL_1);</p><p>HAL_TIMEx_PWMN_Start(&htim15, TIM_CHANNEL_1);</p><p>__HAL_TIM_SET_COMPARE(&htim15,TIM_CHANNEL_1,500);</p><p>LED_Red_ON;</p><p>LED_Green_OFF;</p><p>}</p><p>else</p><p>{</p><p>LED_GPIO_init();</p><p>LED_Green_OFF;</p><p>LED_Red_OFF;</p><p>LED_Blue_OFF;</p><p>}</p><p>LED.Upcnt = 0;</p><p>LED.Mode_OidDis = LED.Mode_Dis;</p><p>}</p><p>if(LED.UpFlag == 1)</p><p>{</p><p>if(LED.Mode_Dis == 0)</p><p>{</p><p>LED.state %= 2;</p><p>if(LED.state == 0)</p><p>{</p><p>LED_Green_OFF;</p><p>LED_Red_OFF;</p><p>LED_Blue_OFF;</p><p>}</p><p>else</p><p>{</p><p>LED_Green_ON;</p><p>LED_Red_ON;</p><p>LED_Blue_ON;</p><p>}</p><p>}</p><p>else if(LED.Mode_Dis == 1)</p><p>{</p><p>LED.state %= 3;</p><p>LED_Green_OFF;</p><p>LED_Red_OFF;</p><p>LED_Blue_OFF;</p><p>switch(LED.state)</p><p>{</p><p>case 0:</p><p>LED_Red_ON;</p><p>break;</p><p>case 1:</p><p>LED_Green_ON;</p><p>break;</p><p>case 2:</p><p>LED_Blue_ON;</p><p>break;</p><p>default:</p><p>break;</p><p>}</p><p>}</p><p>else</p><p>{</p><p>if(LED.PWMcnt <= 100)</p><p>{</p><p>__HAL_TIM_SET_COMPARE(&htim15,TIM_CHANNEL_1,LED.PWMcnt*10);</p><p>if(LED.PWMcnt == 100)</p><p>{</p><p>LED_Green_toggle;</p><p>LED_Red_toggle;</p><p>}</p><p>}</p><p>else if(LED.PWMcnt > 100 && LED.PWMcnt <= 200)</p><p>{</p><p>__HAL_TIM_SET_COMPARE(&htim15,TIM_CHANNEL_1,(200-LED.PWMcnt)*10);</p><p>if(LED.PWMcnt == 200)</p><p>{</p><p>LED_Green_toggle;</p><p>LED_Red_toggle;</p><p>}</p><p>}</p><p>else</p><p>{</p><p>LED.PWMcnt = 0;</p><p>LED.Upcnt = 0;</p><p>}</p><p>}</p><p>LED.UpFlag = 0;</p><p>}</p><p>}</p>


整体的操作效果如下:

串口接收如下:

什么时候论坛可以直接上传视频啊?


---------------------
作者:qintian0303
链接:https://bbs.21ic.com/icview-3439822-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

http://www.jsqmd.com/news/337659/

相关文章:

  • 收藏必学!RAG技术完全指南:让大模型告别“胡说八道“,企业级AI知识库构建实战
  • 互联网大厂Java求职面试实战:全栈技术与AI应用深度解析
  • Rust 输了?在 AI Agent 的战场上,TypeScript 才是唯一的“神”
  • 1GB大文件不再卡顿?揭秘JavaScript Streaming和背压的工作原理
  • iMeta高引论文 | 张龙超/王金勇/刘娣/李明洲/印遇龙/王立贤-率先完成猪T2T基因组组装
  • 如何理解工业超级智能体及其核心价值?
  • IDC 机房的隐形防线:如何用边缘温湿度节点实现“零盲区”环境监控?
  • 收藏级|小白/程序员大模型学习指南(避坑+实战,零基础也能上手)
  • 北京全域高丽参上门回收|记录者商行:深耕匠心,守护每一份珍品的健康价值 - 品牌排行榜单
  • GPT-5.2与Sora2强强联手:万字深度解析下一代多模态架构与Python落地实战(建议收藏)
  • 福州留学中介top10,好评多!留学选择必看指南 - 留学机构评审官
  • 本地部署 DeepSeek+VS Code,搭建本地大模型
  • 2026年市场技术好的不锈钢中厚板厂家哪个好, 304 不锈钢冷热轧板材/不锈钢冷轧板,不锈钢中厚板源头厂家哪个好 - 品牌推荐师
  • 2026年 吹塑场馆椅厂家推荐排行榜:HDPE吹塑座椅/中空吹塑看台椅/抗老化塑料椅,专业实力与耐用性深度解析 - 品牌企业推荐师(官方)
  • 合肥硕士留学中介如何选?看排名更需反馈及时的服务体验 - 留学机构评审官
  • 沈阳福道金属制品有限责任公司:2026年旗杆厂家推荐,不锈钢旗杆/电动旗杆/锥形旗杆/学校旗杆/手动旗杆全系供应 - 品牌推荐官
  • CodeForces 随机乱做
  • NRF24L01通信案例
  • 济南留学中介top10排名揭晓,好评多机构值得关注 - 留学机构评审官
  • 递归函数 - 练习3
  • 2026年 吹塑制品厂家实力推荐榜:PE吹塑/中空吹塑/定制加工/食品级吹塑,专业制造与创新设计深度解析 - 品牌企业推荐师(官方)
  • AI-豆包调试FIFO存储过程
  • 计算机毕业设计springboot再生资源回收(废品回收)管理系统 基于SpringBoot的绿色回收智能调度平台 SpringBoot驱动的社区废品循环服务系统
  • 多家外资车企销量回升,给国产电车淘汰潮再添一根稻草,部分电车企业或在年内倒下!
  • 递归函数 - 练习2
  • 2026年好用的家用净水器品牌企业有哪些,家用净水器品牌推荐 - 工业设备
  • 计算机毕业设计springboot楼盘销售系统 基于SpringBoot的房产营销与交易管理平台 利用SpringBoot实现的商品房在线认购与推广系统
  • 如何挑选优质冲压制品厂家?这几点很重要,排名前五冲压制品直销厂家推荐排行榜宏罡通用设备发展迅速,实力雄厚 - 品牌推荐师
  • 2026年意大利进口岩板品牌厂家,上海地区如何选靠谱的 - 工业品牌热点
  • 基于STM32的蓝牙频谱灯音乐喷泉