建网站无锡,广州建设工程交易中心官网首页,最好的建设网站,Wordpress图墙主题文章目录 前言一、cubemx配置二、代码1.过滤器的配置#xff08;后续会介绍#xff09;2.main.c3.主循环 总结 前言 
介绍使用stm32cubemx来配置can#xff0c;本节讲解一个简答#xff0c;不需要stm32的can和外部连接#xff0c;直接可以用于验证的回环模式。 所谓回环模… 文章目录 前言一、cubemx配置二、代码1.过滤器的配置后续会介绍2.main.c3.主循环 总结 前言 
介绍使用stm32cubemx来配置can本节讲解一个简答不需要stm32的can和外部连接直接可以用于验证的回环模式。 所谓回环模式就是自己发给自己。 
参考 参考1 一、cubemx配置 
配置到合适的速率 要打开中断  
二、代码 
1.过滤器的配置后续会介绍 
在新版的cubemx中可以直接在 MX_CAN_Init();中加入过滤器配置老版的不行野火hal库视频里面介绍的不可以 在这个注释段内加入过滤器配置 /* USER CODE BEGIN CAN_Init 2 */CAN_FilterTypeDef sFilterConfig;sFilterConfig.FilterActivation  ENABLE;//打开过滤器sFilterConfig.FilterBank  0;//过滤器0 这里可设0-13sFilterConfig.FilterMode  CAN_FILTERMODE_IDMASK;//采用掩码模式sFilterConfig.FilterScale  CAN_FILTERSCALE_32BIT;//采用32位掩码模式sFilterConfig.FilterFIFOAssignment  CAN_FILTER_FIFO0;//采用FIFO0sFilterConfig.FilterIdHigh  0x0000; //设置过滤器ID高16位sFilterConfig.FilterIdLow  0x0000;//设置过滤器ID低16位sFilterConfig.FilterMaskIdHigh  0x0000;//设置过滤器掩码高16位sFilterConfig.FilterMaskIdLow  0x0000;//设置过滤器掩码低16位if(HAL_CAN_ConfigFilter(hcan,sFilterConfig) ! HAL_OK)//初始化过滤器{Error_Handler();}if(HAL_CAN_Start(hcan) ! HAL_OK)//打开can{Error_Handler();}if(HAL_CAN_ActivateNotification(hcan,CAN_IT_RX_FIFO0_MSG_PENDING) ! HAL_OK)//开启接受邮箱0挂起中断{Error_Handler();}/* USER CODE END CAN_Init 2 */2.main.c 
在开头的地方创建一些变量已经cna的接受回调函数 
CAN_TxHeaderTypeDef TXHeader;
CAN_RxHeaderTypeDef RXHeader;uint8_t TXmessage[8]  {0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77};
uint8_t RXmessage[8];
uint32_t pTxMailbox  0;void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)//接受邮箱0挂起中断回调函数
{if(hcan-InstanceCAN1){HAL_CAN_GetRxMessage(hcan,CAN_FILTER_FIFO0,RXHeader,RXmessage);//获取数据}}
void CAN_senddata(CAN_HandleTypeDef *hcan)
{TXHeader.StdId0x00000000;TXHeader.ExtId0x12345000;TXHeader.DLC8;TXHeader.IDECAN_ID_EXT;TXHeader.RTRCAN_RTR_DATA;TXHeader.TransmitGlobalTime  DISABLE;HAL_CAN_AddTxMessage(hcan,TXHeader,TXmessage,pTxMailbox);
} 
3.主循环 
只需要在主循环中调用这些就行。进入调试模式在回调函数的地方打断点就能看到了 CAN_senddata(hcan);	HAL_Delay(500);总结 
over