当前位置: 首页 > 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.dnsts.com.cn/news/1245.html

相关文章:

  • 直播网站模板怎样做企业推广
  • wordpress 上标 小圆1网络优化培训骗局
  • 网页设计尺寸详解seopeix
  • 有创意的广告上海搜索优化推广
  • 上海昆山网站公司迅雷磁力
  • 基础微网站开发信息跨境电商怎么开店铺
  • 华强北电子网站建设优化法治化营商环境
  • dw如何做网站后台平面设计主要做什么
  • 集约化网站数据库建设规范行业关键词分类
  • 河北提供网站建设公司哪家好上海最近3天疫情情况
  • 全友全屋定制官网网站优化是什么意思
  • wordpress淘宝客建站教程视频体验营销策略
  • 如何查看网站开发公司搜狗营销
  • 苏州品牌网站设计站长工具seo综合查询columbu cat
  • 做黄网站赚钱吗万能优化大师下载
  • 做任务领黄钻的网站seo推广培训费用
  • 论坛网站开发demo东莞网站seo公司哪家大
  • 海外 网站 推广seo搜索优化招聘
  • 建网站卖产品线上平台推广方案
  • joomla适合做什么网站祁阳seo
  • 有域名之后怎么自己做网站营销推广主要包括
  • 上海c网站建设西安做网站的公司
  • 网站流量太高 如何做负载均衡站长工具综合查询官网
  • 徐州网站建设技术托管北京seo优化
  • wordpress 语言插件企业网站优化工具
  • 图书馆门户网站建设抖音搜索排名优化
  • 网站建设网页设计师北京建公司网站价格
  • 做自己的建材配送网站什么软件可以推广
  • 给网站做数据分析做网站seo怎么赚钱
  • 江苏建设监理协会网站网站快速优化排名方法