初级会员

- 积分
- 159
- 金钱
- 159
- 注册时间
- 2013-7-22
- 在线时间
- 3 小时
|

楼主 |
发表于 2015-3-23 16:25:42
|
显示全部楼层
回复【3楼】正点原子:
---------------------------------
原子哥问题解决了,发现了点问题,在你的can程序中出现了点问题。
1.在你的can程序中函数在初始化封装后出现错误
在can.c中:
u8 CAN_Mode_Init(u8 tsjw,u8 tbs2,u8 tbs1,u16 brp,u8 mode)
在main.c主函数中:
CAN_Mode_Init(CAN_SJW_1tq,CAN_BS1_8tq,CAN_BS2_7tq,5,CAN_Mode_LoopBack);
其中tbs2对应了CAN_BS1_8tq、tbs1对应了CAN_BS2_7tq,会导致波特率计算错误,can在正常模式就会无法通信
2.在can.c中发送函数u8 Can_Send_Msg(u8* msg,u8 len)里,发送完成后返回值总是1,应该是if(i>=0XFFF)return 1;中i的值超过0xfff,应该表示超时错误
同时在主函数中
res=Can_Send_Msg(canbuf,8);//
if(res)LCD_ShowString(60+80,190,200,16,16,"Failed");
else LCD_ShowString(60+80,190,200,16,16,"OK ");
返回值为1表示发送失败,但我在实际调试中,数据发送成功,i的最大值为何为为oxfff????? |
|