STM32 CAN 在总线断开的时候怎么检测发送成功,现在两个节点互发数据 我把数据线断开怎么还是发送成功呢?
if(CAN_GetFlagStatus(CAN1,CAN_FLAG_BOF)==SET)
LCD_ShowString(60+80,190,200,16,16,"Failed"); //提示发送失败
else LCD_ShowString(60+80,190,200,16,16,"OK "); //提示发送成功
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
检测can邮箱发送状态,调用这个函数可以查看 ---CAN_TransmitStatus,楼主上面用的函数是用来查看有没有进入busoff的状态,同时楼主需明白,can总线需通信成功,必须同时存在两个节点,单独一个节点通信是不会成功,类型于发送节点can数据
需有接收节点ACK应答机制。
通过上面函数就可以知道如下四种状态
#define CAN_TxStatus_Failed ((uint8_t)0x00)/*!< CAN transmission failed */
#define CAN_TxStatus_Ok ((uint8_t)0x01) /*!< CAN transmission succeeded */
#define CAN_TxStatus_Pending ((uint8_t)0x02) /*!< CAN transmission pending */
#define CAN_TxStatus_NoMailBox ((uint8_t)0x04) /*!< CAN cell did not provide an empty mailbox */
就可以判断是否成功
你的意思是 接受节点需要加条回应机制才可以?
一周热门 更多>