第3章 外部中断介绍及基础使用

第三章 外部中断介绍及基础使用

1. F28P550的中断系统

C28x CPU 有 14个 外围中断线。其中两个中断(INT13和INT14)分别直接连接到CPU定时器1和2。其余的12个中断通过增强型外设中断扩展模块(ePIE,或简称PIE)连接到外设中断信号。PIE将多达16个外设中断复用到每个CPU中断线,并扩展向量表以允许每个中断具有ISR(中断服务程序)。这使得CPU能够支持大量外设。

中断路径分为3个阶段:外设(peripheral)、PIE 和 CPU。每个阶段都有启用寄存器和标志位寄存器。系统允许CPU处理一个中断,让其他中断等待,在软件中就可以实现优先级嵌套中断,并在某些关键任务期间禁用中断。下图给出了F28P550的中断架构

在上图中,可以发现,TMS320F28P550 GPIO中断,只有5个通道 XINT1 ~ XINT5​​,在引脚中断上支持边沿触发(上升沿、下降沿或双边沿),用于快速响应外部事件(如按键、传感器信号等)。中断触发后,CPU 会暂停当前任务,跳转到中断服务程序(ISR)执行,完成后恢复原程序。

2. 外部中断使用示例

使用KEY按键触发蓝色LED灯点亮和熄灭,软件上将KEY按键的引脚配置使用CPU外部中断的方式。

2.1 CCS&syscfg配置

打开工程下的 .syscfg 文件。配置KEY按键的引脚为GPIO输入模式,并开启外部中断,配置为下降沿触发中断。

因为案例中用到了蓝色LED灯用来展示状态,所以还需要配置LED灯的引脚为输出模式。

2.2 用户代码

配置开启了中断服务函数的配置后,后面在写代码时,需要根据配置的中断服务函数名称编写对应的中断程序。根据上图的配置,到时候在代码中加入外部中断函数即可:

//KEY引脚的外部中断服务函数
__interrupt void INT_GPIO_KEY_XINT_ISR(void)
{
  //要在中断实现的功能

  //清除中断标志位
  Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP1);
}

3. 外部中断相关函数介绍

//*****************************************************************************
//
//! 翻转指定引脚的电平状态。
//!
//! \param pin 为指定GPIO引脚的数字编号。
//!
//! 此函数会切换由 \e pin 参数指定的输出引脚的电平状态(高变低/低变高)。
//! 若引脚配置为输入模式,调用此函数无效。
//!
//! 引脚通过数值编号指定,例如:GPIO34 对应的 \e pin 参数值为 34。
//!
//! \return 无返回值。
//
//*****************************************************************************
static inline void GPIO_togglePin(uint32_t pin);

//*****************************************************************************
//
//! 确认并清除PIE中断组标志
//!
//! \param group 指定需要确认的中断组
//!
//! 该函数用于确认指定的中断组,并清除该组内所有中断标志位。
//!
//! \e group参数必须是以下值的逻辑 或 组合:
//! \b INTERRUPT_ACK_GROUP1, \b INTERRUPT_ACK_GROUP2, \b INTERRUPT_ACK_GROUP3
//! \b INTERRUPT_ACK_GROUP4, \b INTERRUPT_ACK_GROUP5, \b INTERRUPT_ACK_GROUP6
//! \b INTERRUPT_ACK_GROUP7, \b INTERRUPT_ACK_GROUP8, \b INTERRUPT_ACK_GROUP9
//! \b INTERRUPT_ACK_GROUP10, \b INTERRUPT_ACK_GROUP11,
//! \b INTERRUPT_ACK_GROUP12.
//!
//! \return 无返回值
//
//*****************************************************************************
static inline void Interrupt_clearACKGroup(uint16_t group);

posted @ 2025-07-19 16:19  hazy1k  阅读(48)  评论(0)    收藏  举报