原创 【意法半导体 STM32 WL55】3、GPIO输入输出测试

2025-5-25 11:21 1022 0 分类: MCU/ 嵌入式 文集: 试用活动

在上一篇章中,我们旨在验证程序的实用性,借助LED(即引脚输出)作为测试媒介。LED与按钮的验证,实质上是对GPIO输入输出功能的实践探索。此开发板在按键与LED控制方面颇为丰富,因此我们选用了三个LED作为输出展示,同时配置了三个用户按键作为输入源,并采用中断机制来实现其功能。接下来,我们的核心关注点在于:如何设计原理图中的硬件配置、如何编写初始化代码、以及在软件层面如何实现预期功能。遵循这一流程,我们将稳步迈向基本目标功能的实现。

一、硬件原理

先看一下原理图方面:

按键:

image.png

这里需要注意按键按下的时候对应引脚是低电平的,没有进行外部上拉操作,我们需要再配置的时候实现内部上拉,三个按键的操作模式相同的;

LED:

image.png

在这里还看不到实际使用的引脚;

image.png

结合上图就清晰了,绿灯对应的PB9,红灯对应PB11,蓝灯对应的是PB15,控制模式是相同的都是通过高电平电量。

二、STM32CubeMX配置

接下来我们看一下对应引脚的配置。

按键需要配置为外部中断模式:

image.png

同时需要配置为下降沿触发,内部上拉,开启对应的中断:

image.png

image.png

LED需要配置为输出模式:

image.png

为了控制的一致性需要根据原理图给与对应的初始电平状态,关闭对应的是低电平。

三、软件设计

接下来就是软件上的功能实现了,主要的内容就是需要我们重写外部中断的回调函数了,中断中可以看到已经处理:

image.png

在main.c中重写回调函数,回调函数一般都是弱定义的,根据具体的触发方式进行,本次是通过下降沿触发:


void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if(GPIO_Pin == B1_Pin) { HAL_GPIO_TogglePin(LED_BLUE_GPIO_Port, LED_BLUE_Pin); } else if(GPIO_Pin == B2_Pin) { HAL_GPIO_TogglePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin); } else if(GPIO_Pin == B3_Pin) { HAL_GPIO_TogglePin(LED_RED_GPIO_Port, LED_RED_Pin); } }


四、效果展示

本次实现的功能就是通过外部中断采集的按键进行LED的外部翻转,每个按键控制一个LED,效果如下:

作者: 无言的朝圣, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-4014618.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
0
关闭 站长推荐上一条 /3 下一条