S32K1XX_外部中断的实现

本文章介绍外部中断的实现方式,比如检测到上升沿或者下降沿,就触发中断,让LED灯状态反转。

提一点实际应用,外部中断在实际工程中的应用比较少,但是也有,通常都是用采集高低电平的方式,实现外部信号的采集,比较少会去采集跳变沿。

首先在PIN配置中,设置哪个脚为采集(输入)口,在如下例程中,设定PTC13为输入口

在这里插入图片描述
代码实现部分就很简单了,初始化中配置配置中断输入口,设置中断函数,最后使能中断即可。
本例程使用的是按键,按下短接到VCC,设定的为上升沿触发中断,因为有时候配置的有多个输入口,需要再次判断对应引脚的中断标志位是否为1,判断不同的中断,再去执行对应的中断函数。

void Ext_Int_IRQ (void) //中断处理函数,函数名在之后的中断函数中调用就可以跳转了
 {
	if( PINS_DRV_GetPortIntFlag(PORTC) >> 13 &0x0001)  //获取中断标志位状态
	{
		PTD->PTOR = 1 <<16 ;   //LED 电平翻转
	}
	 PINS_DRV_ClearPortIntFlagCmd(PORTC); //清除中断标志
 }

int main(void)
{
    CLOCK_SYS_Init(g_clockManConfigsArr,   CLOCK_MANAGER_CONFIG_CNT, g_clockManCallbacksArr, CLOCK_MANAGER_CALLBACK_CNT);
    CLOCK_SYS_UpdateConfiguration(0U, 1);    // 时钟初始化

    PINS_DRV_Init(NUM_OF_CONFIGURED_PINS0, g_pin_mux_InitConfigArr0);      //GPIO初始化

	 PINS_DRV_SetPinIntSel(PORTC,13,PORT_INT_RISING_EDGE); //设置PTC13作为输入

	 INT_SYS_InstallHandler(PORTC_IRQn,&Ext_Int_IRQ,NULL); //设中断函数
	 INT_SYS_EnableIRQ(PORTC_IRQn); //使能PTC中断

    while(1);
}

实现的效果就是按下按键,LED灯状态反转。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值