1、配置GPIO
新建完项目后,右键项目找到"S32 Configuration Tools"--》"Open Pins"进入PIN脚操作页面配置GPIO。这里用的MCU为S32K144:

打开界面后在引脚窗口选择要配置的PIN脚,点击后选择GPIO功能,选择输入"Input",选择后在下方的路由详情会显示当前选择的所有pin脚和功能

在路由详情里面的"Interrupt Configruation"里面选择对应的中断源

我这里选择下降沿产生中断,选择后保存,点击"更新源代码";更新代码

2、中断初始化
c
/* 假设您要为 PORTC 端口中断编写处理函数 */
void My_PORTC_IRQHandler(void);
void Init_My_Interrupt(void)
{
/* 第一步:安装(注册)中断处理函数
* 告诉系统,当 PORTC_IRQn 这个中断发生时,去调用 My_PORTC_IRQHandler 这个函数。
*/
INT_SYS_InstallHandler(PORTC_IRQn, &My_PORTC_IRQHandler, NULL);
/* 第二步:设置中断优先级
* 优先级数值(如8)需根据您的系统需求设置,数值越小优先级越高。
*/
INT_SYS_SetPriority(PORTC_IRQn, 8U);
/* 第三步:使能("打开")这个中断
* 执行此函数后,该中断线才会被NVIC(嵌套向量中断控制器)响应。
*/
INT_SYS_EnableIRQ(PORTC_IRQn);
}
3、中断回调函数
c
void My_PORTC_IRQHandlerr(){
//确认是哪个引脚触发的中断,是PTC15则tim++;然后清除中断标志位
//寄存器方式
// if (PORTC->ISFR & (1U << 15U)){
// tim++;
// PORTC->ISFR = (1U << 15U);
// }
//SDK函数方式
if(PINS_DRV_GetPortIntFlag(PORTC) == (1U << 15U)){
tim++;
PINS_DRV_ClearPinIntFlagCmd(PORTC, 15U);//
}
}