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

}
相关推荐
三伏5223 小时前
HAL_I2C_ER_IRQHandler函数解析
stm32·单片机·hal库
想放学的刺客4 小时前
单片机嵌入式试题(第19期)嵌入式系统故障诊断与固件升级设计
c语言·stm32·嵌入式硬件·物联网·51单片机
自动化控制仿真经验汇总4 小时前
Simulink电机控制安全-PART-直流电机-限位器
单片机·嵌入式硬件·安全
VekiSon4 小时前
ARM架构——C 语言+SDK+BSP 实现 LED 点灯与蜂鸣器驱动
c语言·开发语言·arm开发·嵌入式硬件
代码游侠5 小时前
ARM开放——阶段问题综述(一)
arm开发·笔记·嵌入式硬件·学习·架构
大江东去浪淘尽千古风流人物5 小时前
【Project Aria】Meta新一代的AR眼镜及其数据集
人工智能·嵌入式硬件·算法·性能优化·ar·dsp开发
一路往蓝-Anbo5 小时前
第46期:低功耗设计:软硬件协奏曲
驱动开发·stm32·单片机·嵌入式硬件
TEC_INO5 小时前
stm32_1:FreeRTOS
单片机·嵌入式硬件
不能跑的代码不是好代码5 小时前
STM32 标准外设库中关于 GPIO(通用输入输出) 模块的函数声明
stm32·单片机·嵌入式硬件