网销工作内容简述,抖音优化排名,万网域名注册信息查询,wordpress主题放在做个笔记吧 #xff0c;免得以后忘记了
芯片是stm32F207 #xff0c;用cubeMX 6.80 版本生成
CAN 的使用总体包含4个部分
第一步#xff1a;CAN初始化#xff0c;配置波特率 (cubeMX 里面配置好后自动生成#xff0c;不需要手动添加)
MX_CAN1_Init();
第二步#…做个笔记吧 免得以后忘记了
芯片是stm32F207 用cubeMX 6.80 版本生成
CAN 的使用总体包含4个部分
第一步CAN初始化配置波特率 (cubeMX 里面配置好后自动生成不需要手动添加)
MX_CAN1_Init();
第二步接收部分的滤波器代码需要单独配置CUBEMX未生成此部分代码。 CAN_SetFilters();
第三步
//使能CAN
HAL_CAN_Start(hcan1); //激活接收 HAL_CAN_ActivateNotification(hcan1, CAN_IT_RX_FIFO0_MSG_PENDING)
第四步
//实现接收回调函数
HAL_CAN_RxFifo0MsgPendingCallback(); void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *CanHandle) { CAN_RxHeaderTypeDef RxHeader; if(HAL_CAN_GetRxMessage(CanHandle, CAN_RX_FIFO0, RxHeader, RX_data) !HAL_OK) { Error_Handler(); } /* 处理接收到的数据 */ if (hcan-Instance CAN1) { // user to do } } 这里重点记录CAN 的过滤器配置
HAL_StatusTypeDef CAN_SetFilters(void) { CAN_FilterTypeDef canFilter; HAL_StatusTypeDef result; //1. 设置FIFO 0 的筛选器 uint32_t StdId 0x50A; //标准CAN ID 是11位 canFilter.FilterBank 0; //筛选器组编号 canFilter.FilterMode CAN_FILTERMODE_IDMASK; //ID掩码模式 canFilter.FilterScale CAN_FILTERSCALE_32BIT; //32位长度 canFilter.FilterIdHigh StdId5; //CAN_FxR1 寄存器的高16位 canFilter.FilterIdLow 0x0000; //CAN_FxR1 寄存器的低16位 canFilter.FilterMaskIdHigh 0xFFE5;//最后一位不需匹配其余位完全匹配 //CAN_FxR2寄存器的高16位 canFilter.FilterMaskIdLow 0xFFFF;//0x0000; 完全匹配 //CAN_FxR2寄存器的低16位 canFilter.FilterFIFOAssignment CAN_RX_FIFO0; //应用于FIFO 0 canFilter.FilterActivation ENABLE; //使用筛选器 canFilter.SlaveStartFilterBank 0; //从CAN控制器筛选器起始的Bank resultHAL_CAN_ConfigFilter(hcan1, canFilter); //add HAL_CAN_ActivateNotification(hcan1, CAN_IT_RX_FIFO0_MSG_PENDING); HAL_CAN_Start(hcan1); return result; }