大家好、
使用 HALCG 软件配置后、是否可以中断从消息框接收数据、客户想知道如何区分消息框可以过滤接收到的数据?
中断接收代码如下:
void canMessageNotification (canbase_t *节点、uint32 MessageBox)
{
/*在用户代码开始和用户代码结束之间输入用户代码。 *
/*用户代码开始(15)*/
如果(节点== canREG1)
{
while (!canIsRxMessageArrived (canREG1、canMESSAGE_BOX5))
;
canGetData (canREG1、canMESSAGE_BOX5、CAN1_Rx_DATA);//复制到 RAM *
CAN1_ID_DATA[0]= canGetID (canREG1、canMESSAGE_BOX5)>0;
CAN1_ID_DATA[1]= canGetID (canREG1、canMESSAGE_BOX5)>8;
CAN1_ID_DATA[2]= canGetID (canREG1、canMESSAGE_BOX5)>16;
CAN1_ID_DATA[3]= canGetID (canREG1、canMESSAGE_BOX5)>>24;
CAN1_Rx_FLAG=1;
}
/*节点2 -接收完成*/
如果(节点== canREG2)
{
while (!canIsRxMessageArrived (canREG2、canMESSAGE_BOX1));///等待 CAN2接收数据接收完成
canGetData (canREG2、canMESSAGE_BOX1、Rx_PTR);//复制到 RAM *
CAN2_ID_DATA[1]= canGetID (canREG2、canMESSAGE_BOX1)>0;//获取帧 ID 的第一个字节
CAN2_ID_DATA[2]= canGetID (canREG2、canMESSAGE_BOX1)>8;//获取帧 ID 的第二个字节
CAN2_ID_DATA[3]= canGetID (canREG2、canMESSAGE_BOX1)>16;//获取帧 ID 的第三个字节
CAN2_ID_DATA[4]= canGetID (canREG2、canMESSAGE_BOX1)>24;//获取帧 ID 的第四个字节
num++;
如果(num > 8)
num = 0;
RX_PTR += 8;
CAN2_Rx_FLAG = 1;
}
上面的代码不能识别由多个滤波器过滤的 CAN 数据、并且需要一个函数来使 CAN 消息框过滤接收到的数据中断响应、以区分中断中的 CAN 消息框。
请帮您检查此问题吗?
谢谢。
此致、
樱桃