网站设计有哪些公司,成都 网站备案 幕布拍摄点,网站建设服务市场趋势,免费自助建站软件有哪些第一章 STM32 CubeMX #xff08;CAN通信#xff09;基础篇 文章目录 第一章 STM32 CubeMX #xff08;CAN通信#xff09;基础篇STM32中文手册简介简介stm32f1系列CAN的特点CAN连接网络示意图硬件电路CAN波特率计数 一、 STM32 CubeMX设置设置波特率工程目录结构添加CAN驱…第一章 STM32 CubeMX CAN通信基础篇 文章目录 第一章 STM32 CubeMX CAN通信基础篇STM32中文手册简介简介stm32f1系列CAN的特点CAN连接网络示意图硬件电路CAN波特率计数 一、 STM32 CubeMX设置设置波特率工程目录结构添加CAN驱动代码主函数添加代码实验现象 总结 STM32中文手册简介
简介 stm32f1系列CAN的特点 CAN连接网络示意图
CAN收发器是外接器件例如TJA1050作用把差分信号转换为MCU能能识别的TTL信号。
硬件电路 CAN波特率计数 一、 STM32 CubeMX设置
设置波特率 工程目录结构 添加CAN驱动代码
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;
uint8_t CAN1_Send_Msg(uint8_t* msg,uint8_t len)
{ uint8_t i0;uint32_t TxMailbox;uint8_t message[8];TxHeader.StdId0X12; //标准标识符TxHeader.ExtId0x12; //扩展标识符(29位)TxHeader.IDECAN_ID_STD; //使用标准帧TxHeader.RTRCAN_RTR_DATA; //数据帧TxHeader.DLClen; for(i0;ilen;i){message[i]msg[i];}if(HAL_CAN_AddTxMessage(hcan, TxHeader, message, TxMailbox) ! HAL_OK)//发送{return 1;}while(HAL_CAN_GetTxMailboxesFreeLevel(hcan) ! 3) {}return 0;
}void MX_CAN1_Init(void)
{hcan.Instance CAN1;hcan.Init.Prescaler 9;hcan.Init.Mode CAN_MODE_NORMAL;hcan.Init.SyncJumpWidth CAN_SJW_1TQ;hcan.Init.TimeSeg1 CAN_BS1_5TQ;hcan.Init.TimeSeg2 CAN_BS2_2TQ;hcan.Init.TimeTriggeredMode DISABLE;hcan.Init.AutoBusOff ENABLE;hcan.Init.AutoWakeUp ENABLE;hcan.Init.AutoRetransmission DISABLE;hcan.Init.ReceiveFifoLocked DISABLE;hcan.Init.TransmitFifoPriority DISABLE;if (HAL_CAN_Init(hcan) ! HAL_OK){Error_Handler();}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();}}void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)//接受邮箱0挂起中断回调函数
{if(hcan-InstanceCAN1){HAL_CAN_GetRxMessage(hcan,CAN_FILTER_FIFO0,RXHeader,RXmessage);//获取数据}}主函数添加代码 实验现象 总结
提示这里对文章进行总结
例如以上就是今天要讲的内容本文仅仅简单介绍了stm32 CAN的使用而stm32 CAN提供了大量能使我们快速便捷地处理数据的函数和方法。