[应用方案] 芯圣MCU按键中断控制LED的简单应用

[复制链接]
 楼主| 周半梅 发表于 2024-10-4 08:26 | 显示全部楼层 |阅读模式
最近在使用芯圣MCU进行一个小项目,需求是通过按键中断控制LED的开关。芯圣的MCU使用起来还是蛮顺手的,特别是在中断处理这块性能不错。下面分享一个简单的代码示例,利用按键触发中断,实现LED状态的切换。

硬件准备:
  • 芯圣MCU开发板
  • 一个LED连接到GPIO口
  • 一个按键连接到另一个GPIO口(配置成输入模式)

代码实现:
  • 初始化GPIO和中断配置:
首先需要初始化GPIO端口,一个输出用于LED,另一个输入用于按键。我们还需要设置按键引脚的中断触发,配置为下降沿触发(按键按下时触发中断)。
  1. #include "XMCU.h"

  2. void GPIO_Init(void) {
  3.     // 初始化LED GPIO端口为输出模式
  4.     GPIO_Config(LED_PIN, GPIO_MODE_OUTPUT);
  5.    
  6.     // 初始化按键GPIO端口为输入模式,配置为下降沿触发中断
  7.     GPIO_Config(BUTTON_PIN, GPIO_MODE_INPUT);
  8.     EXTI_Config(BUTTON_PIN, EXTI_TRIGGER_FALLING);
  9. }

  10. void EXTI_IRQHandler(void) {
  11.     // 检测按键中断触发
  12.     if (EXTI_GetITStatus(BUTTON_PIN) != RESET) {
  13.         // 切换LED状态
  14.         GPIO_TogglePin(LED_PIN);
  15.         
  16.         // 清除中断标志
  17.         EXTI_ClearITPendingBit(BUTTON_PIN);
  18.     }
  19. }

  20. int main(void) {
  21.     // 初始化MCU系统时钟
  22.     SystemInit();
  23.    
  24.     // 初始化GPIO
  25.     GPIO_Init();
  26.    
  27.     // 主循环
  28.     while (1) {
  29.         // 主循环可以添加其他功能逻辑
  30.     }
  31. }
  • 主要功能说明:
    • 当按下按键时,产生中断,进入中断处理函数 EXTI_IRQHandler(),并切换LED的状态。
    • 通过调用 GPIO_TogglePin() 实现LED的亮灭切换。

总结:这个简单的按键控制LED的例子展示了芯圣MCU如何轻松实现中断控制。在实际项目中,中断能有效减少主循环的繁琐逻辑处理,让处理器有更多的时间处理其他任务。

公羊子丹 发表于 2024-10-4 08:27 | 显示全部楼层
这个代码挺实用的,简单明了,适合小项目用!
帛灿灿 发表于 2024-10-4 08:27 | 显示全部楼层
我刚好在用芯圣MCU,这个按键控制LED的方案可以直接拿来用,太好了!
童雨竹 发表于 2024-10-4 08:28 | 显示全部楼层
中断处理看起来很高效啊,学到了!
万图 发表于 2024-10-4 08:28 | 显示全部楼层
这种按键控制的例子很经典,学着试试,先感谢了!
Wordsworth 发表于 2024-10-4 08:28 | 显示全部楼层
请教一下,如果要加个消抖功能,代码怎么改比较好?
Bblythe 发表于 2024-10-4 08:28 | 显示全部楼层
挺不错的,尤其是中断部分,代码很简洁,赞一个!
Pulitzer 发表于 2024-10-4 08:29 | 显示全部楼层
LED切换的代码逻辑很清楚,适合初学者上手!
Uriah 发表于 2024-10-4 08:29 | 显示全部楼层
这个芯圣MCU真的不错,性价比高,还这么好用。
Clyde011 发表于 2024-10-4 08:29 | 显示全部楼层
不知道这个方案能不能用在其他MCU上?结构差不多吧?
suncat0504 发表于 2024-10-29 12:17 | 显示全部楼层
代码清晰、简洁,中文注释,值得学习。
地瓜patch 发表于 2024-10-29 16:40 来自手机 | 显示全部楼层
这种短小例程把中断原理讲明白了
gangong 发表于 2024-12-17 22:27 | 显示全部楼层
真牛不错了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

149

主题

5762

帖子

1

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

149

主题

5762

帖子

1

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