news 2026/5/31 0:30:44

[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/5/28 18:13:02

韩国英拓克ID261/70A/220V现场控制器

韩国英拓克 (Entec) ID261/70A/220V 现场控制器详解 一、 概述 韩国英拓克&#xff08;Entec&#xff09;作为工业自动化领域的重要参与者&#xff0c;其产品以可靠性和稳定性著称。ID261系列现场控制器是该公司面向工业现场控制需求设计的一款核心产品。型号“ID261/70A/220…

作者头像 李华
网站建设 2026/5/28 22:59:05

互联网大厂Java求职面试实战:全栈技术与AI应用深度解析

互联网大厂Java求职面试实战&#xff1a;全栈技术与AI应用深度解析 面试场景背景 在互联网大厂Java岗位的面试中&#xff0c;面试官严肃专业&#xff0c;面对的是搞笑又有点水的程序员谢飞机。面试围绕Java核心语言、构建工具、Web框架、数据库、微服务、安全、消息队列、缓存、…

作者头像 李华
网站建设 2026/5/29 14:18:58

Pytest自动化测试框架之Allure报告

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 简介 Allure Framework是一种灵活的、轻量级、多语言测试报告工具。 不仅可以以简洁的网络报告形式非常简洁地显示已测试的内容&#xff0c; 而且还允许参与开…

作者头像 李华
网站建设 2026/5/30 3:19:28

Unity3D 八大菜系连连看

基于 Unity3D 引擎开发“八大菜系连连看”小游戏。玩家通过鼠标或触控拖动菜谱图片&#xff0c;靠近对应菜系时自动吸附并显示虚线提示。游戏限时 30 秒&#xff0c;全部完成或时间结束即判定结束。结束后进行评分&#xff0c;标注正确、错误及未吸附菜谱&#xff0c;并支持重新…

作者头像 李华
网站建设 2026/5/28 23:46:42

入门网络安全必看十大书籍,看完至少走五年弯路!

前言 对于初学者来说&#xff0c;了解网络安全的入门知识是非常重要的。以下是我推荐的10本入门网络安全必看的书籍 1.《黑客攻防技术宝典》 作者&#xff1a;余洪涛&#xff0c;出版社&#xff1a;清华大学出版社 这本书是网络安全初学者入门的好选择。书中讲解了黑客攻击…

作者头像 李华
网站建设 2026/5/29 23:35:42

同城汽修新选择:Java改装系统源码剖析

以下是对基于Java的同城汽车改装维修系统源码的深度剖析&#xff0c;涵盖技术架构、核心功能、关键代码及行业优势&#xff1a; 一、技术架构&#xff1a;高可用与跨平台的核心支撑 微服务架构&#xff1a;系统采用Spring Boot Spring Cloud框架&#xff0c;将用户管理、订单…

作者头像 李华