[STM32C0] 【STM32C092RC 测评】LED和按钮验证输入输出

[复制链接]
1895|3
 楼主| qintian0303 发表于 2025-5-2 16:05 | 显示全部楼层 |阅读模式
      LED和按钮验证输入输出实际上就是GPIO的输入输出的功能实现,这里我们使用两个LED作为输出,一个用户按键作为输入(通过我不中断的方式实现)。我们需要考虑的内容主要是原理图中的硬件配置是怎样的,初始化代码如何实现,软件上面需要如何编写,接下来我们就是通过这样的流程实现基本基本的目标功能。
一、硬件原理
      先看一下原理图方面:
      按键:
937b7d94bb510f3eb7add6f285a09914
      这里需要注意按键按下的时候对应引脚是低电平的,R34并没有焊接,也就是没有进行外部上拉操作,我们需要再配置的时候实现内部上拉;
      LED:
221e4e404205f285de90252e44d312cf
      两个LED的控制分别通过两个不同的引脚实现的控制,控制的电平还不同,这里我们要注意一下。
二、STM32CubeMX配置
      接下来我们看一下对应引脚的配置。
      按键需要配置为外部中断模式:
cb3fdeced4817a05319b27c8ffb30cb7
      同时需要配置为下降沿触发,内部上拉,开启对应的中断:
1f14bc858c6335c073231c62b1b539b7
      LED需要配置为输出模式:
0604d5bdf2f447f1f132f6611f3223c7
      为了控制的一致性需要根据原理图给与对应的初始电平状态。
三、软件设计
      接下来就是软件上的功能实现了,主要的内容就是需要我们重写外部中断的回调函数了,中断中可以看到已经处理:
86d9c3bd205ddf9c6f204d4505319a6b
      在main.c中重写回调函数,回调函数一般都是弱定义的,根据具体的触发方式进行,本次是通过下降沿触发:
  1. void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
  2. {
  3.      if(GPIO_Pin == GPIO_PIN_13)
  4.      {
  5.             HAL_GPIO_TogglePin(LD1_GPIO_PORT, LD1_Pin);
  6.             HAL_GPIO_TogglePin(LD2_GPIO_PORT, LD2_PIN);
  7.      }
  8. }

四、效果展示
      本次实现的功能就是通过外部中断采集的按键进行两个LED的外部翻转,效果如下:
dc1a79e8a038859c3cfc6f5c4dd20f70

AdaMaYun 发表于 2025-6-8 23:00 | 显示全部楼层
按钮操作输入操作
gaoyang9992006 发表于 2025-6-9 22:01 | 显示全部楼层
可以试着做一个扩展板子,将好玩的东西做到板子上。我今天刚好给一个开发板做了一个扩展板子,等两天到了再写 测评。

评论

确实可以,毕竟ST的板子相对来说还是比较规整的  发表于 2025-6-9 22:29
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:硬件工程师
简介:有着多年硬件开发经验的专业人员,专注于医疗电子领域,热衷于对新鲜事物的探索,喜欢DIY!

595

主题

2855

帖子

12

粉丝
快速回复 在线客服 返回列表 返回顶部