imac双系统-netcfg hlp
![5pic](/uploads/image/0425.jpg)
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
发布评论