当前位置: 首页 > news >正文

媒易网络网站建设培训广州建筑业企业排名

媒易网络网站建设培训,广州建筑业企业排名,网站制作手机网站,网站开发薪酬一、所用材料#xff1a; STM32F103C6T6最小系统板 STM32CUBEMX#xff08;HAL库软件#xff09; MDK5 串口调试助手 二、所学内容#xff1a; 初步学习如何使用STM32的CAN通讯功能#xff0c;在本章节主要达到板内CAN通讯的效果#xff0c;即32发送CAN信息再在CAN接收…一、所用材料 STM32F103C6T6最小系统板 STM32CUBEMXHAL库软件 MDK5 串口调试助手 二、所学内容 初步学习如何使用STM32的CAN通讯功能在本章节主要达到板内CAN通讯的效果即32发送CAN信息再在CAN接收中断中用串口打印出来。 三、CUBEMX配置 第一步老三件套-RCC,SYS,时钟树配置 第二步串口配置 第三步CAN配置 关键步骤 波特率设置1M bit/s具体配置如下图TEST MODE - Loopback打开接收中断RX0 四、MDK5配置 一、can.h头文件配置 /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __CAN_H__ #define __CAN_H__#ifdef __cplusplus extern C { #endif/* Includes ------------------------------------------------------------------*/ #include main.h/* USER CODE BEGIN Includes *//* USER CODE END Includes */extern CAN_HandleTypeDef hcan;/* USER CODE BEGIN Private defines *//* USER CODE END Private defines */void MX_CAN_Init(void);/* USER CODE BEGIN Prototypes */ void CANFilter_Config(void); void CAN1_Send_Test(void); void CAN_Start_Init(void); void CAN1_Send(uint8_t* cdata); /* USER CODE END Prototypes */#ifdef __cplusplus } #endif#endif /* __CAN_H__ */ 二、can.c源文件配置 /* Includes ------------------------------------------------------------------*/ #include can.h/* USER CODE BEGIN 0 */ #include stdio.h #include usart.h #include main.h static CAN_TxHeaderTypeDef TxMessage; //CAN发送的消息的消息头 static CAN_RxHeaderTypeDef RxMessage; //CAN接收的消息的消息头 /* USER CODE END 0 */CAN_HandleTypeDef hcan;/* CAN init function */ void MX_CAN_Init(void) {hcan.Instance CAN1;hcan.Init.Prescaler 4;hcan.Init.Mode CAN_MODE_LOOPBACK;hcan.Init.SyncJumpWidth CAN_SJW_1TQ;hcan.Init.TimeSeg1 CAN_BS1_5TQ;hcan.Init.TimeSeg2 CAN_BS2_3TQ;hcan.Init.TimeTriggeredMode DISABLE;hcan.Init.AutoBusOff DISABLE;hcan.Init.AutoWakeUp DISABLE;hcan.Init.AutoRetransmission DISABLE;hcan.Init.ReceiveFifoLocked DISABLE;hcan.Init.TransmitFifoPriority DISABLE;if (HAL_CAN_Init(hcan) ! HAL_OK){Error_Handler();}/* USER CODE BEGIN CAN_Init 2 *//* USER CODE END CAN_Init 2 */}void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle) {GPIO_InitTypeDef GPIO_InitStruct {0};if(canHandle-InstanceCAN1){/* USER CODE BEGIN CAN1_MspInit 0 *//* USER CODE END CAN1_MspInit 0 *//* CAN1 clock enable */__HAL_RCC_CAN1_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();/**CAN GPIO ConfigurationPA11 ------ CAN_RXPA12 ------ CAN_TX*/GPIO_InitStruct.Pin GPIO_PIN_11;GPIO_InitStruct.Mode GPIO_MODE_INPUT;GPIO_InitStruct.Pull GPIO_NOPULL;HAL_GPIO_Init(GPIOA, GPIO_InitStruct);GPIO_InitStruct.Pin GPIO_PIN_12;GPIO_InitStruct.Mode GPIO_MODE_AF_PP;GPIO_InitStruct.Speed GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOA, GPIO_InitStruct);/* CAN1 interrupt Init */HAL_NVIC_SetPriority(USB_LP_CAN1_RX0_IRQn, 0, 0);HAL_NVIC_EnableIRQ(USB_LP_CAN1_RX0_IRQn);/* USER CODE BEGIN CAN1_MspInit 1 *//* USER CODE END CAN1_MspInit 1 */} }void HAL_CAN_MspDeInit(CAN_HandleTypeDef* canHandle) {if(canHandle-InstanceCAN1){/* USER CODE BEGIN CAN1_MspDeInit 0 *//* USER CODE END CAN1_MspDeInit 0 *//* Peripheral clock disable */__HAL_RCC_CAN1_CLK_DISABLE();/**CAN GPIO ConfigurationPA11 ------ CAN_RXPA12 ------ CAN_TX*/HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11|GPIO_PIN_12);/* CAN1 interrupt Deinit */HAL_NVIC_DisableIRQ(USB_LP_CAN1_RX0_IRQn);/* USER CODE BEGIN CAN1_MspDeInit 1 *//* USER CODE END CAN1_MspDeInit 1 */} }/* USER CODE BEGIN 1 */ /******************* 接受信息过滤器 *******************/void CANFilter_Config(void) {CAN_FilterTypeDef sFilterConfig;sFilterConfig.FilterBank 0; //CAN过滤器编号范围0-27sFilterConfig.FilterMode CAN_FILTERMODE_IDMASK; //CAN过滤器模式掩码模式或列表模式sFilterConfig.FilterScale CAN_FILTERSCALE_32BIT; //CAN过滤器尺度16位或32位sFilterConfig.FilterIdHigh 0x000 5; //32位下存储要过滤ID的高16位sFilterConfig.FilterIdLow 0x0000; //32位下存储要过滤ID的低16位sFilterConfig.FilterMaskIdHigh 0x0000; //掩码模式下存储的是掩码sFilterConfig.FilterMaskIdLow 0x0000;sFilterConfig.FilterFIFOAssignment 0; //报文通过过滤器的匹配后存储到哪个FIFOsFilterConfig.FilterActivation ENABLE; //激活过滤器sFilterConfig.SlaveStartFilterBank 0;if (HAL_CAN_ConfigFilter(hcan, sFilterConfig) ! HAL_OK) {Error_Handler();}else{ printf(HAL_CAN_ConfigFilter(hcan, sFilterConfig) is HAL_OK\r\n); } } /******************* 中断接受 *******************/ void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan) {uint8_t data[8];HAL_StatusTypeDef status;status HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO0, RxMessage, data);if (HAL_OK status){ printf(---Data Receieve!\r\n);printf(RxMessage.StdId is %#x\r\n, RxMessage.StdId);printf(data[0] is 0x%02x\r\n, data[0]);printf(data[1] is 0x%02x\r\n, data[1]);printf(data[2] is 0x%02x\r\n, data[2]);printf(data[3] is 0x%02x\r\n, data[3]);printf(data[4] is 0x%02x\r\n, data[4]);printf(data[5] is 0x%02x\r\n, data[5]);printf(data[6] is 0x%02x\r\n, data[6]);printf(data[7] is 0x%02x\r\n, data[7]); printf(---\r\n); HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); } }/******************* 发送函数 *******************/ void CAN1_Send_Test(void) {uint32_t TxMailbox;uint8_t data[4] {0x01, 0x02, 0x03, 0x04};TxMessage.IDE CAN_ID_STD; //设置ID类型TxMessage.StdId 0x111; //设置ID号TxMessage.RTR CAN_RTR_DATA; //设置传送数据帧TxMessage.DLC 4; //设置数据长度if (HAL_CAN_AddTxMessage(hcan, TxMessage, data, TxMailbox) ! HAL_OK){Error_Handler();} // else{ printf(HAL_CAN_AddTxMessage(hcan, TxMessage, data, TxMailbox) is HAL_OK\r\n); } }void CAN1_Send(uint8_t* cdata) {uint32_t TxMailbox;TxMessage.IDE CAN_ID_STD; //设置ID类型TxMessage.StdId 0x111; //设置ID号TxMessage.RTR CAN_RTR_DATA; //设置传送数据帧TxMessage.DLC 8; //设置数据长度 if (HAL_CAN_AddTxMessage(hcan, TxMessage, cdata, TxMailbox) ! HAL_OK){Error_Handler();} } /******************* CAN启动函数 *******************/ void CAN_Start_Init(void) {if (HAL_CAN_Start(hcan) ! HAL_OK) {Error_Handler();}else{ printf(HAL_CAN_Start(hcan) is HAL_OK\r\n); }/* 3. Enable CAN RX Interrupt */if (HAL_CAN_ActivateNotification(hcan, CAN_IT_RX_FIFO0_MSG_PENDING) ! HAL_OK) {Error_Handler();}else{ printf(HAL_CAN_ActivateNotification(hcan, CAN_IT_RX_FIFO0_MSG_PENDING) is HAL_OK\r\n); } } /* USER CODE END 1 */ 三、main.c文件配置 int main(void) {/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_CAN_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */CANFilter_Config();CAN_Start_Init();/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){CAN1_Send_Test();HAL_Delay(1000);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */ }四、串口打印结果 五、本文对应代码分享 https://download.csdn.net/download/qq_45854134/88522530
http://www.sadfv.cn/news/250103/

相关文章:

  • 汾阳市网架公司长沙seo网站建设费用
  • 英文网站seo 谷歌高端网站建设jm3q
  • 网站加入站长统计库存管理软件永久免费版
  • mu建站工具wordpress还能玩吗
  • 深圳网站建设专业乐云seo成都保洁公司
  • 网站快照优化公司站长统计 网站统计
  • 个人备案经营网站备案wordpress 导入html
  • 天猫网站做链接怎么做外卖网站设计
  • 宣讲家网站 家风建设开发 app
  • 专业网站建设是哪家好网站变app
  • 建设网站必须用dns岳阳网站界面设计
  • 网站建设制作设计seo优化湖南网络营销方式有哪些 各有什么特点
  • 营销网站开发找哪家360网站建设企业
  • 保定医疗网站建设公司软文时光发稿平台
  • 网站主机租用百度总部公司地址在哪里
  • 信誉好的专业网站建设最近最新新闻事件
  • 禹城网站制作谷歌浏览器app下载安装
  • 做网站有必要用wordpress嵌入式软件开发职业规划
  • 做结构图用什么网站12580黄页注册的公司
  • 傻瓜式网站制作国土资源部门网站建设制度
  • 东莞本地招聘网站有哪些最好加盟网站建设
  • 网站建设规划书模板目录在标题后 wordpress
  • 石家庄网站小程序个人建站怎么做网站好
  • 17.zwd一起做网站做展示网站
  • 高端型网站wordpress高亮代码大前端
  • 小说网站设计模板做网站留言板需要什么条件
  • 新乡建设公司网站转播新闻联播过程一套
  • 如何免费做网站优化给人做网站网站
  • 东莞网站制作品牌祥奔科技网站建设调研报告
  • 返利淘客网站源码电商怎么做