- 打卡等级:常住居民I
- 打卡总天数:77
- 最近打卡:2025-04-15 13:59:49
高级会员
- 积分
- 575
|
如上,过一会就好了,
产品现象,就是反应有点慢,按理应该跟上面,074同时变化的
u8 rx_old;
//====初始化数据=====
CAN1_Tx.FF = STANDARD_FRAME; //标准帧
CAN1_Tx.RTR = 0; //0:数据帧,1:远程帧
CAN1_Tx.DLC = 0x08; //数据长度
CAN1_Tx.ID = 0x21A; //CAN ID
CAN1_Tx.DataBuffer[0] = 0x20; //数据内容
CAN1_Tx.DataBuffer[1] = 0x00;
CAN1_Tx.DataBuffer[2] = 0x00;
CAN1_Tx.DataBuffer[3] = 0x00;
CAN1_Tx.DataBuffer[4] = 0x00;
CAN1_Tx.DataBuffer[5] = 0x00;
CAN1_Tx.DataBuffer[6] = 0x00;
CAN1_Tx.DataBuffer[7] = 0x00;
/*
CAN2_Tx.FF = EXTENDED_FRAME; //扩展帧
CAN2_Tx.RTR = 0; //0:数据帧,1:远程帧
CAN2_Tx.DLC = 0x08; //数据长度
CAN2_Tx.ID = 0x03456789; //CAN ID
CAN2_Tx.DataBuffer[0] = 0x21; //数据内容
CAN2_Tx.DataBuffer[1] = 0x22;
CAN2_Tx.DataBuffer[2] = 0x23;
CAN2_Tx.DataBuffer[3] = 0x24;
CAN2_Tx.DataBuffer[4] = 0x25;
CAN2_Tx.DataBuffer[5] = 0x26;
CAN2_Tx.DataBuffer[6] = 0x27;
CAN2_Tx.DataBuffer[7] = 0x28;
*/
B_Can1Send = 0;
B_Can2Send = 0;
while(1)
{
if(B_1ms) //1ms到
{
B_1ms = 0;
KeyResetScan(); //P3.2口按键触发软件复位,进入USB下载模式,不需要此功能可删除本行代码
if(B_Can1Read)
{
B_Can1Read = 0;
CANSEL = 0; //选择CAN1模块
n = CanReadMsg(CAN1_Rx); //读取接收内容
if(n>0)
{
for(i=0;i<n;i++)
{
// CanSendMsg(&CAN1_Rx); //CAN总线原样返回
if (CAN1_Rx.ID == 0X74)
{
if(CAN1_Rx.DataBuffer[0] != rx_old)
{
rx_old = CAN1_Rx.DataBuffer[0];
CAN1_Tx.DataBuffer[0] = (CAN1_Rx.DataBuffer[0] )&0xF0;
}
}
printf("CAN1_rx From 产品 :ID=0x%03lX DLC=%d FF=%d RTR=%d ",CAN1_Rx.ID,CAN1_Rx.DLC,CAN1_Rx.FF,CAN1_Rx.RTR); //串口打印帧信息
for(j=0;j<CAN1_Rx.DLC;j++)
{
printf("0x%02X ",CAN1_Rx.DataBuffer[j]); //从串口输出收到的数据
}
printf("\r\n");
}
}
}
if(++msecond >= 100) //1秒到
{
msecond = 0;
//------------------处理CAN1模块-----------------------
CANSEL = 0; //选择CAN1模块
sr = CanReadReg(SR);
if(sr & 0x01) //判断是否有 BS:BUS-OFF状态
{
CANAR = MR;
CANDR &= ~0x04; //清除 Reset Mode, 从BUS-OFF状态退出
}
else
{
CanSendMsg(&CAN1_Tx); //发送一帧数据
}
/*
//------------------处理CAN2模块-----------------------
CANSEL = 1; //选择CAN2模块
sr = CanReadReg(SR);
if(sr & 0x01) //判断是否有 BS:BUS-OFF状态
{
CANAR = MR;
CANDR &= ~0x04; //清除 Reset Mode, 从BUS-OFF状态退出
}
else
{
CanSendMsg(&CAN2_Tx); //发送一帧数据
}*/
}
}
if(B_Can2Read)
{
B_Can2Read = 0;
CANSEL = 1; //选择CAN2模块
n = CanReadMsg(CAN2_Rx); //读取接收内容
if(n>0)
{
for(i=0;i<n;i++)
{
// CanSendMsg(&CAN2_Rx); //CAN总线原样返回
printf("CAN2_rx From CAN1_tx:ID=0x%03lX DLC=%d FF=%d RTR=%d ",CAN2_Rx.ID,CAN2_Rx.DLC,CAN2_Rx.FF,CAN2_Rx.RTR); //串口打印帧信息
for(j=0;j<CAN2_Rx.DLC;j++)
{
printf("0x%02X ",CAN2_Rx.DataBuffer[j]); //从串口输出收到的数据
}
printf("\r\n");
}
}
}
if (bUsbOutReady) //USB调试及复位所需代码
{
usb_OUT_done();
}
}
}
|
|