news 2026/4/16 10:55:43

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[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所有,任何人未经允许禁止转载。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 9:20:30

救命神器8个降AI率网站推荐!千笔AI帮你轻松降AIGC

AI降重工具&#xff0c;论文写作的“隐形守护者” 在如今的学术环境中&#xff0c;AI生成内容&#xff08;AIGC&#xff09;已经成为高校和科研机构重点关注的对象。许多学生在使用AI辅助写作时&#xff0c;往往忽视了其带来的“AI痕迹”问题&#xff0c;导致论文查重率居高不…

作者头像 李华
网站建设 2026/4/15 16:15:45

ICOS Vision IC1021014 工业 VME 总线处理器卡板接口模块

ICOS Vision IC1021014 概述 ICOS Vision IC1021014 是一款基于 VME 总线架构的工业级处理器卡板接口模块&#xff0c;主要用于工业自动化、机器视觉和实时控制系统。该模块通常集成高性能处理器、内存和专用接口&#xff0c;支持 VME 总线标准&#xff0c;适用于严苛的工业环…

作者头像 李华
网站建设 2026/4/16 9:17:29

1GB大文件不再卡顿?揭秘JavaScript Streaming和背压的工作原理

最近有个同事在处理一个日志分析功能时&#xff0c;用户上传的日志文件可能达到500MB。初版代码长这样&#xff1a;// ❌ 危险的做法 const response await fetch(logFileUrl); const fullText await response.text(); // 一次性加载整个文件到内存 const lines fullText.sp…

作者头像 李华
网站建设 2026/4/16 9:24:01

直接上结论:专科生专属AI论文平台,千笔AI VS 锐智 AI!

随着人工智能技术的迅猛发展&#xff0c;AI辅助写作工具正逐步渗透到高校学术写作场景中&#xff0c;成为专科生、本科生及研究生完成毕业论文的重要助力。越来越多的学生开始借助AI工具提升写作效率、降低论文撰写难度。然而&#xff0c;面对市场上琳琅满目的AI写作平台&#…

作者头像 李华
网站建设 2026/4/11 19:58:34

PaperRed 智能降重 vs 其他软件:核心优势全解析(2026 最新)

PaperRed 智能降重功能凭借双降同步、深度语义重构、学科精准适配等核心优势&#xff0c;在众多降重工具中脱颖而出&#xff0c;成为大学生论文优化的首选。以下从技术、功能、效果、价格四大维度&#xff0c;对比其与传统降重软件&#xff08;如维普、PaperPass&#xff09;、…

作者头像 李华