这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 高校专区 » 竞赛辅导 » TC264学习(二)外部中断

共15条 1/2 1 2 跳转至

TC264学习(二)外部中断

高工
2022-01-14 11:35:03     打赏

一.外部中断说明:

1.256个向量第一个也就是第0号的中断向量无效.仅用来占位置.所以一共有255个向量,但是要占用256个向量的位置

2.向量表以优先级别排序数字越小优先级别越低,与arm,k60相反

3每个向量32 Byte,也就是8个word.如果中断Handler非常短,可以直接放在这32Byte的空间.一般是放跳转指令跳转到真正的中断Handler.(Tricore 1.6的中断向量可以选择32还是8 Byte, Tricore 1.3不能选择,只能32 Byte).

4.如果中断Handle超过了32Byte也放在向量表,显然后面的向量会被覆盖.如果被覆盖的向量是空的无问题.如果非空出现问题由程序员负责编译工具不检查这点!

5.发生中断后硬件自动保存Upper CSA.如需保存LowerCSA.需由程序员自己写指令来保存与恢复.

6.有4个中断向量留给软件.只能软件触发.方便RTOS设计,如上几篇贴子写的FreeRTOS就是利用了其中一个软件中断来实现延迟中断进行任务调度的效果.

7.中断不一定由CPU来响应对于TC1782,.还可能是由PCP来响应对于多核的器件还可由其它核来响应.某些中断必须由某个特定的中断master(CPU或者PCP)来响


 


二.如何开启外部中断


也就是说只能开启4个外部中断,且每组内不能重复。

GPIO外部中断配置:


 


/* GPIO外部中断   中断服务函数  中断号(cpu0,cpu1,DMA)  优先级*/

IFX_INTERRUPT(PIN_INT0_IRQHandler, PIN_INT0_VECTABNUM, PIN_INT0_PRIORITY);

IFX_INTERRUPT(PIN_INT1_IRQHandler, PIN_INT1_VECTABNUM, PIN_INT1_PRIORITY);

IFX_INTERRUPT(PIN_INT2_IRQHandler, PIN_INT2_VECTABNUM, PIN_INT2_PRIORITY);

IFX_INTERRUPT(PIN_INT3_IRQHandler, PIN_INT3_VECTABNUM, PIN_INT3_PRIORITY);

 


PIN_INTx_IRQHandler:中断服务函数名

PIN_INTx_VECTABNUM:选择中断的处理者(CPU0、CPU1、DMA)

PIN_INTx_PRIORITY:中断优先级(0-255),数字越大优先级越高,优先级0不可用

中断服务函数随便写

中断号里要选择用cpu0,cpu1,DMA的其中一个

优先级也要配置好1-255 数字越大优先级越高


 


中断服务函数:


 

void PIN_INT0_IRQHandler(void)

{

  //用户代码

}

 


初始化外部中断函数:


 


// *  参数说明:pin      : 管脚标号    lq_gpio.h中定义

//   mode     : GPIO 模式   lq_gpio.h中的宏定义中选择*

void PIN_Exti(GPIO_Name_t pin, IfxPort_InputMode mode)

{

}

 


完成这些就可以开启外部中断了


示例:


P15.4下降沿触发


/*************************************************************************

*  函数名称:void Test_GPIO_Extern_Int(void)

*  功能说明:测试外部中断

*  参数说明:无

*  函数返回:无

*  备    注:核心板上的LED固定时间P10.6翻转,LED灯闪烁,

*            当P15.4检测到下降沿时触发中断,P10.5翻转,LED闪烁,中断函数在LQ_GPIO.C中

*            可以把P15.4用杜邦线接到P10.6,触发中断后亮灯依次闪烁

*************************************************************************/

void Test_GPIO_Extern_Int(void)

{

PIN_Exti(P15_4, PIN_IRQ_MODE_FALLING);//配置P15_4 下降沿触发中断

while(1)

{

    LED_Ctrl(LED0,RVS);        //电平翻转,LED闪烁

delayms(500);              //延时等待

}

}

在LQ_GPIO.c中的编写中断服务函数:


/*************************************************************************

 *  函数名称:PIN_INT0_IRQHandler中断服务函数

 *  功能说明:

 *  参数说明:无

 *  函数返回:无

 *  备    注:外部中断1组管脚 使用的中断服务函数

 *************************************************************************/

void PIN_INT0_IRQHandler (void)

{

    /* 用户代码 */

    LED_Ctrl(LED1, RVS);        //电平翻转,LED闪烁

}





关键词: TC264     学习     外部中断    

专家
2022-01-14 12:49:52     打赏
2楼

谢谢分享


专家
2022-01-14 12:53:24     打赏
3楼

谢谢分享


专家
2022-01-14 13:11:05     打赏
4楼

学习学习


工程师
2022-01-14 13:13:19     打赏
5楼

学习了,感谢楼主分享


高工
2022-01-14 15:03:58     打赏
6楼

感谢楼主的分享,很实用了。


工程师
2022-01-14 16:05:04     打赏
7楼

谢谢分享


高工
2022-01-14 16:45:27     打赏
8楼

感谢楼主的分享,学习学习


专家
2023-01-13 08:33:49     打赏
9楼

谢谢分享


高工
2023-01-13 08:35:58     打赏
10楼

谢谢分享


共15条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]