一:中断的基础知识
中断/事件分为内部中断/事件、外部中断/事件。在该手册中,外部中断指从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的亮灭或执行特定功能。这种中断类型常用于用户界面交互,如按键控制设备启动、停止或切换模式。
传感器触发:当传感器检测到特定事件或条件发生时(如温度达到阈值、光线强度变化等),可以触发外部中断来及时处理传感器数据。这种中断类型在环境监测、工业自动化等领域有广泛应用。
我要赚赏金
