2019-12-21 12:10发布
zzipeng 发表于 2018-3-3 12:11 判断CAN发送邮箱标志,如下所示:
SkyGz 发表于 2018-3-3 12:14 你这段代码, 是否理解为至少发送了2次.... while前那一行发送 是否可以不需要... ...
最多设置5个标签!
判断CAN发送邮箱标志,没有空闲邮箱就一直等待(可以再加上一个软件超时保护,防止一直死在这里),
有了就自动发了。。如下所示:
- void CAN_TX_SPeed(uint16_t id,int16_t data1)
- {
- CanTxMsg tx_message;
- tx_message.IDE = CAN_ID_STD;
- tx_message.RTR = CAN_RTR_DATA;
- tx_message.DLC = 2;
- tx_message.StdId = id;
- tx_message.Data[0] = (u8)(data1>>8);
- tx_message.Data[1] = (u8)data1;
- //CAN_Transmit(CAN1,&tx_message);
- while(CAN_Transmit(CAN1,&tx_message)==CAN_TxStatus_NoMailBox);
- }
复制代码ps,好像仍未解决如何知道对方收到没有~~啧啧啧
但是,并不能确定这个数据包是谁接收的。
所以要想知道目标设备是否收到这个数据包,只能让对方回复了。
二楼说的东西常用于485,CAN上常用的上层协议是CANopen
一般常规的应用,使用CANopen,有点浪费,能用到CANopen协议的1%内容就已经不错了。
你这段代码, 是否理解为至少发送了2次.... while前那一行发送 是否可以不需要...
对,我把他屏蔽掉~~以前的代码~~~献丑了
一周热门 更多>