金牌会员
 
- 积分
- 1790
- 金钱
- 1790
- 注册时间
- 2018-3-26
- 在线时间
- 294 小时
|
发表于 2020-6-1 18:53:10
|
显示全部楼层
0x05就是我通过的ID,其他的ID都不能接收
- u8 CAN1_Mode_Init(u32 tsjw,u32 tbs2,u32 tbs1,u16 brp,u32 mode)
- {
- CAN_FilterConfTypeDef CAN1_FilerConf;
-
- CAN1_Handler.Instance = CAN1;
- CAN1_Handler.pTxMsg = &TxMessage; //发送消息
- CAN1_Handler.pRxMsg = &RxMessage; //接收消息
- CAN1_Handler.Init.Prescaler = brp; //分频系数(Fdiv)为brp+1
- CAN1_Handler.Init.Mode = mode; //模式设置
- CAN1_Handler.Init.SJW = tsjw; //重新同步跳跃宽度(Tsjw)为tsjw+1个时间单位 CAN_SJW_1TQ~CAN_SJW_4TQ
- CAN1_Handler.Init.BS1 = tbs1; //tbs1范围CAN_BS1_1TQ~CAN_BS1_16TQ
- CAN1_Handler.Init.BS2 = tbs2; //tbs2范围CAN_BS2_1TQ~CAN_BS2_8TQ
- CAN1_Handler.Init.TTCM = DISABLE; //非时间触发通信模式
- CAN1_Handler.Init.ABOM = DISABLE; //软件自动离线管理
- CAN1_Handler.Init.AWUM = DISABLE; //睡眠模式通过软件唤醒(清除CAN->MCR的SLEEP位)
- CAN1_Handler.Init.NART = ENABLE; //禁止报文自动传送
- CAN1_Handler.Init.RFLM = DISABLE; //报文不锁定,新的覆盖旧的
- CAN1_Handler.Init.TXFP = DISABLE; //优先级由报文标识符决定
-
- if(HAL_CAN_Init(&CAN1_Handler)!=HAL_OK) return 1; //初始化
-
- CAN1_FilerConf.FilterIdHigh = (((u32)(0x15-0x10)<<21)&0xffff0000)>>16; //32位ID CAN_ID
- CAN1_FilerConf.FilterIdLow = (((u32)(0x15-0x10)<<21)|CAN_ID_STD)&0xffff;
- CAN1_FilerConf.FilterMaskIdHigh = 0xFFFF; //32位MASK
- CAN1_FilerConf.FilterMaskIdLow = 0xFFFF;
- CAN1_FilerConf.FilterFIFOAssignment = CAN_FILTER_FIFO0; //过滤器0关联到FIFO0
- CAN1_FilerConf.FilterNumber = 0; //过滤器0
- CAN1_FilerConf.FilterMode = CAN_FILTERMODE_IDLIST; //标识符列表模式
- CAN1_FilerConf.FilterScale = CAN_FILTERSCALE_32BIT; //过滤器位宽为32位
- CAN1_FilerConf.FilterActivation = ENABLE; //激活滤波器0
- CAN1_FilerConf.BankNumber = 14;
-
- if(HAL_CAN_ConfigFilter(&CAN1_Handler,&CAN1_FilerConf)!=HAL_OK) return 2;//滤波器初始化
- return 0;
- }
复制代码
|
|