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

}
相关推荐
LCMICRO-133108477462 小时前
长芯微LD9689完全P2P替代AD9689,是一款双通道、14位、2.0 GSPS/2.6 GSPS模数转换器(ADC)
网络·单片机·嵌入式硬件·网络协议·fpga开发·硬件工程·高速adc
逐步前行10 小时前
STM32_TIM_寄存器操作
stm32·单片机·嵌入式硬件
0南城逆流011 小时前
【STM32】知识点介绍七:PWM功能
stm32·单片机·嵌入式硬件
智者知已应修善业11 小时前
【51单片机独立按键控制数码管移动反向,2片74CH573/74CH273段和位,按键按下保持原状态】2023-3-25
经验分享·笔记·单片机·嵌入式硬件·算法·51单片机
我是一棵无人问荆的小草11 小时前
单片机通电后延迟启动策略
单片机·嵌入式硬件
坏柠12 小时前
ESP32-S3 蓝牙 BLE 从零到一:广播、服务、特征,用一个智能灯的例子全讲透
嵌入式硬件
日更嵌入式的打工仔12 小时前
UART RX为什么要上拉
单片机
三佛科技-1873661339715 小时前
FT32F030F6AP7高性能32位RISC内核MCU解析(兼容STM32F030K6TP7)
stm32·单片机·嵌入式硬件
LCMICRO-1331084774616 小时前
长芯微LDC90810完全P2P替代ADC128D818,是一款八通道系统监控器,专为监控复杂系统状态而设计。
stm32·单片机·嵌入式硬件·fpga开发·硬件工程·模数转换芯片adc
嵌入式老菜鸟qq12524277316 小时前
关于S2-LP休眠
单片机·嵌入式硬件·mcu·射频工程