S32DS for S32 Platform GPIO输入中断实践

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);//
	}

}
相关推荐
LCG元12 小时前
STM32实战:基于STM32F103的家用新风系统智能控制器(空气质量监测+PID调速)
stm32·单片机·嵌入式硬件
LCG元12 小时前
STM32实战:基于STM32F103的多通道工业数据采集与监控系统(Modbus RTU+上位机)
stm32·单片机·嵌入式硬件
资深流水灯工程师12 小时前
STM32 单片机 USB 通讯原理与 HAL 库实战详解
stm32·单片机·嵌入式硬件
资深流水灯工程师13 小时前
STM32 I2C 通讯原理与三种实现模式详解
stm32·单片机·嵌入式硬件
zlinear数据采集卡13 小时前
电源纹波杀手:LDO线性稳压电路的“降噪哲学”——基于ZLinear数据采集卡的深度解析
单片机·嵌入式硬件·fpga开发·硬件架构
资深流水灯工程师13 小时前
STM32 USART 通讯原理与三种模式详解
stm32·单片机·嵌入式硬件
资深流水灯工程师13 小时前
STM32 单片机 SPI 通讯原理详解
stm32·单片机·嵌入式硬件
EMTime13 小时前
玲珑GUI-工程设置
单片机·mcu·ui·用户界面
不做无法实现的梦~13 小时前
MAVLink 协议教程
linux·stm32·嵌入式硬件·算法
QiLinkOS14 小时前
【用呼吸重构创造价值关系——QiLink生态】
c语言·数据结构·c++·人工智能·单片机·嵌入式硬件·算法