imac双系统-netcfg hlp

5pic
2023年4月6日发(作者:lsasecretsview软件)

PIC16位单片机CAN(5)中断

CAN数据的接收使用中断来处理。ECAN模块会产生三种不同中断,每

种中断都具有自己的中断向量、中断允许控制位、中断状态标志和中断优先级

控制位。这些中断是:?CiTXECAN发送数据请求?CiRXECAN接收数据就

绪?CiECAN事件中断具体这三种中断的意义就不说了,看手册就行了。我使

用的是事件中断也就是当成功接收报文并装入一个接收缓冲区(报文缓冲区

0至31)时产生中断。中断算是比较简单的,看一下初始化代码:/*Enable

ECAN1Interrupt*/voidInterrupt_Init(void){=1;//使能全局中

断=0;//使能中断嵌套IPC8bits.C1IP=6;//ECAN1事件中

断优先级6IFS2bits.C1IF=0;//ECAN1事件中断标志状态位IEC2bits.C1IE=

1;//ECAN1事件中断允许位//=1;=1;//接收

缓冲区中断允许位}再看中断处理函数代码:void

__attribute__((__interrupt__,no_auto_psv))_C1Interrupt(void){IFS2bits.C1IF=0;

//clearinterruptflagECAN1事件中断标志状态位if(){

=0;}if()//接收缓冲区中断标志位{//

readthemessageif(1==1)//接收缓冲区n满位{//

rx_=1;1=0;}//

rxECAN1(&rx_ecan1message);=0;//接收缓冲区中断标志

位清0Nop();Nop();}}中断处理函数的写法可以参考文档的第六章,中断的示例

代码。_C1Interrupt代表是CAN1事件中断,这个名称必须看编译器的说明文

档,在头文件里可能是找不到的。MPLAB?XC16CCOMPILERUSERSGUIDE

里面的第十一章就是说的中断向量的名称写法。tips:感谢大家的阅读,本文由

我司收集整编。仅供参阅!

更多推荐

5pic