大家好、
我的问题可能看起来很简单、但我希望有人确认清除 CAN 邮箱中断的方法、因为我在数据表和示例代码中发现了令人困惑的信息。
我在 SCC 配置中使用 eCANA、在 Rx 中配置 MBX [0-9]、在 Tx 中配置其他配置。
在 Rx CAN 回调中、我按如下方式清除邮箱中断:
EALLOW;
ECanaShady.CANRMP.ALL = ECanaRegs.CANRMP.ALL;
ECanaShady.CANRMP.ALL |=位;
ECANaRegs.CANRMP.ALL = ECANaShady.CANRMP.ALL;
EDIS;
这是正确的方法吗?
令我困惑的数据表内容如下:
2.7接收消息挂起寄存器(CANRMP)
CANRMP 和 CANRML 寄存器中的位通过写 CANRMP 寄存器清零、相应位的位置为1。
因此,通过写入1 (‘反相’复位)将其复位。
3.2.4接收消息
在 CPU 从邮箱读取消息之前、它应该首先清除 RMP 位(RMP.3=1)。
第1.5.2条和第3.2.4条(读前和读后)似乎有双重含义。