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

}
相关推荐
小向是个Der8 小时前
嵌入式进阶——MCU上电后的动作
c语言·单片机·mcu·学习·链接脚本
Kuakewei8889 小时前
PW6606快充协议诱骗芯片:纯硬件电阻配置五档电压方案
嵌入式硬件
车软学堂9 小时前
从测试转开发,到底要补什么
网络·人工智能·python·功能测试·单片机·车载系统·自动化
LCG米10 小时前
STM32 ADC多通道DMA定时器触发实测:TRGO触发链、采样率精确控制与乒乓缓冲落地
stm32·单片机·嵌入式·adc
iCxhust10 小时前
SEGGER 的 J-Scope
单片机·嵌入式硬件
路上有只喵12 小时前
认识元器件 · 单片机(MCU/MPU/SOC) · 实战篇2
单片机·嵌入式硬件
单片机仿真设计12 小时前
Proteus仿真51单片机的智能温控风扇调速系统设计(仿真图+程序)
单片机·嵌入式硬件·proteus
youcans_13 小时前
【嵌入式软件AI编程】22. STM32 基础实验:GPIO外部中断
stm32·单片机·嵌入式硬件·ai编程·claude
未来_攻城狮14 小时前
STM32F407VGT6 芯片详解:高性能 Cortex-M4 MCU 入门指南
stm32·单片机·嵌入式硬件
xcLeigh14 小时前
FreeRTOS实战:用STM32+SEGGER打造工业级实时嵌入式系统
人工智能·stm32·单片机·嵌入式硬件·ai