//CAN通信初始化函数uint8_tCAN_Init(CAN_TypeDef*CANx,CAN_InitTypeDef*CAN_InitStruct);//筛选器初始化函数voidCAN_FilterInit(CAN_FilterInitTypeDef*CAN_FilterInitStruct);//发送信息函数uint8_tCAN_Transmit(CAN_TypeDef*CANx, CanTxMsg* TxMessage);//发送信息状态函数uint8_tCAN_TransmitStatus(CAN_TypeDef...
结构体CanRxMsg和结构体CanTxMsg比较接近,分别用来定义发送消息和描述接受消息。5)CAN状态获取对于CAN发送消息的状态,挂起消息数目等等之类的传输状态信息,库函数提供了一些列的函数,包括CAN_TransmitStatus()函数,CAN_MessagePending()函数,CAN_GetFlagStatus()函数等等,大家可以根据需要来调用。至此,CAN就可以开始正常工...
037 TransmitMailbox = CAN_Transmit(CAN1,&TxMessage); 038 while(CAN_TransmitStatus(CAN1,TransmitMailbox) != CANTXOK); 039 printf("\r\n The CAN has send data: %d ,%d,%d ,%d,%d ,%d,%d ,%d \r\n", 040 TxMessage.Data[0], 041 TxMessage.Data[1], 042 TxMessage.Data[2], 043 T...
//循环等待 一段时间等待发送结束 while ((CAN_TransmitStatus(CAN1, mbox) == CAN_TxStatus_Failed) && (i < 0xfff)) i++; if (i > 0xff) { return 1; } else { return 0; } } } //=== 接收函数 //接收函数 //1.判断CAN接收邮箱是否收到数据 //2.BUF 数据缓存区,定义全局变量数组用...
while((CAN_TransmitStatus(TransmitMailbox) != CANTXOK) && (i != 0xFF))//通过检查CANTXOK位来确认发送是否成功 { i++; } return (TestStatus)ret; } CAN_Transmit()函数的操作包括: 1. [选择一个空的发送邮箱] 2. [设置Id]* 3. [设置DLC待传输消息的帧长度] ...
登录后复制uint8_tCAN_Transmit(CAN_TypeDef*CANx,CanTxMsg*TxMessage) 发送之前需要配置好消息的结构体,消息结构体成员如下 •CAN状态获取库函数提供了很多可以获取CAN状态标志的函数,比如 登录后复制uint8_tCAN_TransmitStatus(CAN_TypeDef*CANx, uint8_tTransmitMailbox)FlagStatusCAN_GetFlagStatus(CAN_TypeDef*...
//数据段长度(0~8)for(uint8_ti=0;i<Length;i++){TxMessage.Data[i]=Data[i];}uint8_tTransmitMailbox=CAN_Transmit(CAN1,&TxMessage);//获取邮箱号uint32_tTimeout=0;while(CAN_TransmitStatus(CAN1,TransmitMailbox)!=CAN_TxStatus_Ok)//检查是否传输完成{Timeout++;if(Timeout>100000){break;...
while((CAN_TransmitStatus(CAN1, TransmitMailbox) != CANTXOK) && (i != 0xFFFF)) { i++; } i = 0; while((CAN_MessagePending(CAN1, CAN_FIFO0) < 1) && (i != 0xFFFF)) { i++; } /* receive */ RxMessage.StdId=0x00; RxMessage.IDE=CAN_ID_STD; RxMessage.DLC=0; RxMessage...
代码中并没有检测发送状态,如果需要,您可以调用库函数CAN_TransmitStatus检查发送状态。 while循环中在其它时间一直检查flag标志,当接收到报文时,我们的中断服务函数会把它置1,所以我们可以通过它获知接收状态,当接收到报文时,我们把它使用宏CAN_DEBUG_ARRAY输出到串口。 40.6.3 下载验证 下载验证这个CAN实验时,我们...
mbox= CAN_Transmit(CAN1, &TxMessage);while((CAN_TransmitStatus(CAN1, mbox)==CAN_TxStatus_Failed)&&(i<0XFFF))i++; //等待发送结束if(i>=0XFFF)return 0;return 1;}u8 CAN_GetMsg(u8 *msg1,u8 *msg2){if(Rx_flag == 1)//发现数据{...