446_PIC18F系列MCU的中断实现

         全部学习汇总: https://github.com/GreyZhang/PIC18F

         最近在PICF18的平台上熟悉J1939的协议,第一个例子算是调试完了,使用的最简单的polling模式来实现的。但是如果想要让J1939的协议栈处理的能力更好,实时性更好且设计更加简单一些,需要使用中断。

         这样,我需要的中断是CAN通信的收发功能。

         看一下相关的文档:

         正好,我用到的两个MCU兼容性上基本上是一致的,中断的用法看上去没有太大的差异。

         状态的判断寄存器如下:

                  而中断使能的寄存器如下:

         以上只是部分。

         中断优先级的配置部分如上,只有高低两个优先级。

         相应BUFFER的中断使能也有一个专门的寄存器,这一系列的配置跟我接触的比较多的PPC平台其实也是差不多的。

         接下来,看看这个例子中相关代码:

         这里是中断的使能处理。

         看起来,这里是有5个BUFFER的中断处理。

         这是中断的处理,上面是汇编的处理向量定义,调用下面的中断ISR程序。之后,处理1939的中断ISR服务。

         处理的类别分别是收发和错误。

         为什么接收只有一个中断呢?

         其实,这里的代码说得清楚,开启了FIFO模式。

         上面差不多是ECAN的使用方式,差不多的驱动基础已经了解了。后面,可以深入了解一下协议栈本身的功能。