中级会员
- 积分
- 365
- 金钱
- 365
- 注册时间
- 2018-3-21
- 在线时间
- 64 小时
|
10金钱
当前调试CAN 通信,用的是STM32F4的开发板,使用的也是正点的例程跑,自测用例回环模式通信没问题
我现在想和一个CAN 设备通信,修改为了CAN_MODE_NORMAL,使用的是扩展帧,然后过滤器设置的全为0,当前值挂载了一个传感器,
我想发一条消息,结果死在了发送邮箱的while循环里
CAN1_Mode_Init(CAN_SJW_1TQ,CAN_BS2_6TQ,CAN_BS1_7TQ,6,CAN_MODE_NORMAL);
CAN_Config();
void CAN_Config(void)
{
CAN_FilterTypeDef sFilterConfig;
/*##-2- Configure the CAN Filter ###########################################*/
sFilterConfig.FilterBank = 0;
sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;
sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
sFilterConfig.FilterIdHigh = 0x0000;
sFilterConfig.FilterIdLow = 0x0000;
sFilterConfig.FilterMaskIdHigh = 0x0000;
sFilterConfig.FilterMaskIdLow = 0x0000;
sFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0;
sFilterConfig.FilterActivation = ENABLE;
sFilterConfig.SlaveStartFilterBank = 14;
}
u8 CAN1_Send_Msg(u8* msg,u8 len)
{
u8 i=0;
u32 TxMailbox;
u8 message[8];
//TxHeader.StdId=0x00;//0X12; //标准标识符
TxHeader.ExtId=0x08042320;//PRESS_O_R_PERIP_ID;//0x12; //扩展标识符(29位)
TxHeader.IDE=CAN_ID_EXT;//CAN_ID_STD; //使用标准帧
TxHeader.RTR=CAN_RTR_DATA; //数据帧
TxHeader.DLC=len;
for(i=0;i<len;i++)
{
message=msg;
}
if(HAL_CAN_AddTxMessage(&CAN1_Handler, &TxHeader, message, &TxMailbox) != HAL_OK)//发送
{
return 1;
}
while(HAL_CAN_GetTxMailboxesFreeLevel(&CAN1_Handler) != 3) {}
return 0;
}
当前就是死在了这里,得到的值位0,所以不知道什么原因导致的。麻烦请教一下
while(HAL_CAN_GetTxMailboxesFreeLevel(&CAN1_Handler) != 3) {}
|
|