这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 【G32R501 Micro-EVB开发板】+02使用外部中断的方式点亮LED灯

共1条 1/1 1 跳转至

【G32R501 Micro-EVB开发板】+02使用外部中断的方式点亮LED灯

高工
2026-08-20 16:18:30     打赏

一:中断的基础知识

中断/事件分为内部中断/事件、外部中断/事件。在该手册中,外部中断指从VO引脚输入信号引起的中断/事件,在中断向量表中指EXTIx;其它中断指内部中断/事件,这些事件线可将器件从IDEL模式唤醒。

二:主要特征:

(1) 支持16个事件/中断请求

(2) 可独立配置作为外部/内部事件请求的线

(3) 每个事件/中断线都可独立屏蔽

(4) 可独立配置有效边沿

(5) 每个外部事件/中断线都可独立触发

(6) 每个外部中断线都有专用的状态位

(7) 可配置IO触发选

(8) 仿真所有外部事件中断

三:软件的配置流程:

3.1 初始化IO口为输入。

3.2 开启IO口复用时钟。

3.3 设置IO口与中断线的映射关系。

3.4 初始化线上中断,设置触发条件:上升沿,下降沿触发方式。

3.5 配置中断分组,并使能中断。

3.6 编写中断服务函数。 清除中断标志位

四:软件代码:

4.1 GPIO13的初始化代码:

void myGPIOInputInterrupt0_init()
{
    GPIO_setPadConfig(myGPIOInputInterrupt0, GPIO_PIN_TYPE_STD | GPIO_PIN_TYPE_PULLUP);
    GPIO_setDrivingCapability(myGPIOInputInterrupt0,GPIO_DRIVE_LEVEL_VERY_HIGH);
    GPIO_setQualificationMode(myGPIOInputInterrupt0, GPIO_QUAL_SYNC);
    GPIO_setDirectionMode(myGPIOInputInterrupt0, GPIO_DIR_MODE_IN);
    GPIO_setMasterCore(myGPIOInputInterrupt0, GPIO_CORE_CPU0);
}

4.2 中断代码的配置过程:

配置下降沿触发模式

    Interrupt_initModule();
    Interrupt_initVectorTable();
    Interrupt_setPriorityGroup(INTERRUPT_PRIGROUP_PREEMPT_7_6_SUB_5_0);
    Interrupt_setPriority(INT_XINT1, 0, 0);
    
    GPIO_setInterruptType(GPIO_INT_XINT1, GPIO_INT_TYPE_FALLING_EDGE);
    GPIO_setInterruptPin(myGPIOInputInterrupt0, GPIO_INT_XINT1);
    GPIO_enableInterrupt(GPIO_INT_XINT1);

    Interrupt_register(INT_XINT1, &gpioInterruptHandler);
    Interrupt_enable(INT_XINT1);

    Interrupt_enableMaster();

4.3 在外部中断回调中添加LED灯的闪烁控制代码

void gpioInterruptHandler(void)
{
    GPIO_togglePin(myGPIOOutput0);
}

五:中断应用的场景:

按钮/开关控制:当用户按下按钮或切换开关时,可以触发外部中断来响应用户的操作,例如控制LED的亮灭或执行特定功能。这种中断类型常用于用户界面交互,如按键控制设备启动、停止或切换模式。

传感器触发:当传感器检测到特定事件或条件发生时(如温度达到阈值、光线强度变化等),可以触发外部中断来及时处理传感器数据。这种中断类型在环境监测、工业自动化等领域有广泛应用。



关键词: G32R501     外部     中断    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]