STM32F4使用HAL库配置串口时,发送乱码

项目场景:

STM32F4使用cubeMX HAL库配置串口时,发送乱码


问题描述

前提:串口相关配置,如波特率等等都正常
但发送时会出现乱码,如下图请添加图片描述

原因分析:

没找到原因,希望有知道的小伙伴可以交流一下。

解决方案:

我最终,一点点控制变量发现是时钟配错了,应该勾选上面的,勾选下面的会导致异常。
请添加图片描述
修改后:正常发送
请添加图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是使用HAL配置STM32F4的CAN通信步骤: 1.初始化CAN总线 ```c CAN_HandleTypeDef hcan; hcan.Instance = CAN1; hcan.Init.Prescaler = 4; //钟分频系数 hcan.Init.Mode = CAN_MODE_NORMAL; //工作模式 hcan.Init.SyncJumpWidth = CAN_SJW_1TQ; //同步跳转宽度 hcan.Init.TimeSeg1 = CAN_BS1_11TQ; //间段1 hcan.Init.TimeSeg2 = CAN_BS2_2TQ; //间段2 hcan.Init.TimeTriggeredMode = DISABLE; hcan.Init.AutoBusOff = DISABLE; hcan.Init.AutoWakeUp = DISABLE; hcan.Init.AutoRetransmission = ENABLE; hcan.Init.ReceiveFifoLocked = DISABLE; hcan.Init.TransmitFifoPriority = DISABLE; if (HAL_CAN_Init(&hcan) != HAL_OK) { /* 初始化失败 */ Error_Handler(); } ``` 2.配置CAN过滤器 ```c CAN_FilterTypeDef filter; filter.FilterBank = 0; filter.FilterMode = CAN_FILTERMODE_IDMASK; filter.FilterScale = CAN_FILTERSCALE_32BIT; filter.FilterIdHigh = 0x0000; filter.FilterIdLow = 0x0000; filter.FilterMaskIdHigh = 0x0000; filter.FilterMaskIdLow = 0x0000; filter.FilterFIFOAssignment = CAN_FILTER_FIFO0; filter.FilterActivation = ENABLE; filter.SlaveStartFilterBank = 14; if (HAL_CAN_ConfigFilter(&hcan, &filter) != HAL_OK) { /* 配置过滤器失败 */ Error_Handler(); } ``` 3.配置CAN中断 ```c void HAL_CAN_RxCpltCallback(CAN_HandleTypeDef* hcan) { /* 读取接收缓存中的数据 */ /* 重新启动接收 */ HAL_CAN_Receive_IT(hcan, CAN_FIFO0); } HAL_CAN_Receive_IT(&hcan, CAN_FIFO0); //启动接收中断 ``` 4.发送CAN消息 ```c CAN_TxHeaderTypeDef txHeader; uint8_t txData[8]; txHeader.StdId = 0x123; txHeader.ExtId = 0; txHeader.RTR = CAN_RTR_DATA; txHeader.IDE = CAN_ID_STD; txHeader.DLC = 8; txHeader.TransmitGlobalTime = DISABLE; txData[0] = 0x01; txData[1] = 0x02; txData[2] = 0x03; txData[3] = 0x04; txData[4] = 0x05; txData[5] = 0x06; txData[6] = 0x07; txData[7] = 0x08; if (HAL_CAN_AddTxMessage(&hcan, &txHeader, txData, &txMailbox) != HAL_OK) { /* 发送失败 */ Error_Handler(); } ``` 以上是STM32F4使用HAL配置CAN通讯的基本步骤,需要根据具体情况进行相应的修改和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值