STM32 串口打印乱码(Cubemx)

STM32 串口打印乱码(Cubemx)

  • 时钟配置错误,CubeMX默认的外部晶振是25MHz,而板载的晶振为8MHz
  • STM32F407修改程序将外部25M晶振修改为8M(标准库、HAL库)

核心问题

  • 芯片型号与晶振配置:使用的STM32F407ZGT6芯片默认的系统时钟配置在标准库中假设为25 MHz的外部晶振。但实际上,硬件板子上使用的是8 MHz的晶振。
  • 影响的范围:系统时钟(包括PLL设置)错误会直接影响到所有依赖系统时钟的外设,包括但不限于UART(串口通信)。由于PLL(相位锁定环)用于倍频处理,晶振的频率直接影响到最终的系统时钟输出,如果晶振设置错误,计算出来的系统时钟频率也将错误。

通信现象解释

  • 接收无误,发送乱码:当串口调试助手发送数据到单片机时,接收部分仍然能够正常工作,可能是因为UART接收部分对时钟不精确度的容忍性相对更高。但在发送数据时,如果系统时钟频率不准确,将导致波特率计算错误,进而使得发送数据时序不正确,从而产生乱码。
  • 调试助手正常工作:由于单片机接收正确的数据并能正确回传到PC,说明PC端的串口调试助手设置是正确的,问题主要出在单片机发送部分的时钟配置。

解决步骤

  1. 时钟配置调整:需要重新配置STM32F407的时钟系统,确保基于实际的8 MHz晶振来设置。这包括调整PLL的参数,以确保系统核心时钟(HCLK)、外设时钟(PCLK1、PCLK2)和其他相关时钟正确设置。
  2. 标准库时钟配置:在使用STM32标准库时,通常需要修改system_stm32f4xx.c文件中的时钟设置部分,具体为修改宏定义HSE_VALUE(定义外部高速晶振的值),从默认的25000000更改为8000000
  3. 重新编译和下载:调整时钟设置后,重新编译程序,并下载到单片机中进行测试。

总结来说,确保单片机的系统时钟配置正确是关键步骤,特别是在使用不同于标准设置的硬件配置时。这将确保所有时钟敏感的外设,如UART,能够在正确的时钟下正常工作。

晶振配置错误后果

晶振配置错误导致的问题主要与单片机内部时钟源的设置密切相关。晶振是微控制器的主要时钟源之一,提供了系统运行的基础频率。这里是详细的解释:

晶振的角色和作用

晶振(Crystal Oscillator)在微控制器系统中充当基础时钟源,提供精确的、稳定的振荡频率。这个频率用作微控制器的主要时钟输入,影响系统的运行速度和各种外设的功能。

如何影响系统时钟

在STM32微控制器中,外部晶振的频率是系统时钟配置的基础。通过使用PLL(相位锁定环),这个频率可以被倍增,生成用于核心处理器(CPU)、存储器和外设的时钟信号。例如,如果晶振配置为8 MHz,但系统设置错误地认为是25 MHz,使用相同的PLL倍频设置将得到完全不同的输出频率。这会导致所有依赖这些时钟的微控制器功能出现问题。

对UART的具体影响

UART(通用异步接收/发送器)是依赖精确时钟来同步数据传输的外设。UART波特率,即每秒传输的位数,需要基于系统时钟精确计算。如果系统时钟不正确,将导致:

  • 发送的每个位的持续时间错误:如果系统时钟过高或过低,实际的波特率将与设置的波特率不匹配,导致接收端无法正确解析发送的数据。
  • 接收时钟容错:虽然UART接收逻辑设计有一定的容错能力,能在一定程度上适应波特率的偏差,但过大的时钟误差仍然会导致接收错误。

示范和验证

如果一个系统设计为使用25 MHz晶振,但实际装配了8 MHz晶振,没有相应调整时钟设置,则系统实际运行的核心频率可能远低于预期,或者PLL无法锁定导致系统不稳定。对于UART,这意味着如果预期的通信速率为115200波特率,实际的波特率可能完全不同,从而导致发送乱码。

结论

正确配置晶振和系统时钟是确保微控制器及其外设正常运行的关键。对于任何依赖精确时钟的应用,如串口通信、USB通信或任何形式的同步数据传输,确保晶振设置正确是至关重要的。这不仅影响系统的稳定性和性能,也是可靠通信的基础。

解决

  • 正确配置如下,注意红框部分

在这里插入图片描述

  • 错误配置如下,注意红框部分

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/2986.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全-Diffie Hellman密钥协商

密钥协商是保密通信双方(或更多方)通过公开信道来共同形成密钥的过程。一个密钥协商方案中,密钥的值是某个函数值,其输入量由两个成员(或更多方)来提供。密钥协商的记过是参与协商的双方(或更多…

【linux】Linux第一个小程序-进度条

1. 预备知识:回车和换行 回车(Carriage Return,CR): 在早期的机械打字机中,回车指的是将打字机的打印头移回到行首的操作,这样打印头就可以开始新的一行的打印。在ASCII编码中,回车用…

AIGC-stable-diffusion(文本生成图片)+PaddleHub/HuggingFace

功能 stable-diffusion(文本生成图片)PaddleHub,HuggingFace两种调用方式 PaddleHub 环境 pip install paddlepaddle-gpu pip install paddlehub 代码 from PIL import Image import paddlehub as hub module hub.Module(namestable_diffusion)## 保存在demo…

NXP恩智浦 S32G电源管理芯片 VR5510 安全概念 Safety Concept (万字长文详解,配21张彩图)

NXP恩智浦 S32G电源管理芯片 VR5510 安全概念 Safety Concept (万字长文详解,配21张彩图) 1. 简介 本应用笔记描述了与S32G处理器和VR5510 PMIC相关的安全概念。该文档涵盖了S32G和VR5510的安全功能以及它们如何相互作用,以确保对ASIL D安全完整性级别…

STM32,复位和时钟控制

外部时钟 HSE 以后需要用到什么就这样直接拿去配就行了

【文件上传与包含漏洞综合利用】DVWA-文件上传-难度:High

实验过程和结果 步骤1:尝试直接上传php木马,失败,截图如下: 步骤2:将php木马后缀改为jpeg尝试上传,依旧失败,截图如下: 步骤3:将真实的jpeg图片1.jpeg上传,成…

企业微信hook接口协议,ipad协议http,外部联系人图片视频文件下载

外部联系人文件下载 参数名必选类型说明file_id是StringCDNkeyopenim_cdn_authkey是String认证keyaes_key是Stringaes_keysize是int文件大小 请求示例 {"url": "https://imunion.weixin.qq.com/cgi-bin/mmae-bin/tpdownloadmedia?paramv1_e80c6c6c0cxxxx3544d9…

智慧火电厂合集 | 数字孪生助推能源革命

火电厂在发电领域中扮演着举足轻重的角色。主要通过燃烧如煤、石油或天然气等化石燃料来产生电力。尽管随着可再生能源技术的进步导致其比重有所减少,但直至 2023 年,火电依然是全球主要的电力来源之一。 通过图扑软件自主研发 HT for Web 产品&#xf…

[Algorithm][前缀和][和为K的子数组][和可被K整除的子数组][连续数组][矩阵区域和]详细讲解

目录 1.和为 K 的子数组1.题目链接2.算法原理详解3.代码实现 2.和可被 K 整除的子数组1.题目链接2.算法原理详解3.代码实现 3.连续数组1.题目链接2.算法原理详解3.代码实现 4.矩阵区域和1.题目链接2.算法原理详解3.代码实现 1.和为 K 的子数组 1.题目链接 和为 K 的子数组 2.…

牛客 题解

文章目录 day4_17**BC149** **简写单词**思路:模拟代码: dd爱框框思路:滑动窗口(同向双指针)代码: 除2!思路:模拟贪心堆代码: day4_17 BC149 简写单词 https://www.now…

如何在 Ubuntu 14.04 上配置 StatsD 以收集 Graphite 的任意统计数据

介绍 Graphite 是一个图形库,允许您以灵活和强大的方式可视化不同类型的数据。它通过其他统计收集应用程序发送给它的数据进行图形化。 在之前的指南中,我们讨论了如何安装和配置 Graphite 本身,以及如何安装和配置 collectd 以编译系统和服…

【MATLAB源码-第197期】基于matlab的粒子群算法(PSO)结合人工蜂群算法(ABC)无人机联合卡车配送仿真。

操作环境: MATLAB 2022a 1、算法描述 基于粒子群优化(PSO)算法的无人机联合卡车配送系统是一个高效的物流配送策略,旨在优化配送过程中的成本、时间和资源利用率。该系统融合了无人机和卡车的配送能力,通过智能算法…

Tiny11作者开源:利用微软官方镜像制作独属于你的Tiny11镜像

微软对Windows 11的最低硬件要求包括至少4GB的内存、双核处理器和64GB的SSD存储。然而,这些基本要求仅仅能保证用户启动和运行系统,而非流畅使用 为了提升体验,不少用户选择通过精简系统来减轻硬件负担,我们熟知的Tiny11便是其中…

【简单介绍下机器学习之sklearn基础】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

【机器学习】深度神经网络(DNN):原理、应用与代码实践

深度神经网络(DNN):原理、应用与代码实践 一、深度神经网络(DNN)的基本原理二、DNN的优缺点分析三、DNN的代码实践四、总结与展望 在人工智能与机器学习的浪潮中,深度神经网络(Deep Neural Netw…

演示在一台Windows主机上运行两个Mysql服务器(端口号3306 和 3307),安装步骤详解

目录 在一台Windows主机上运行两个Mysql服务器,安装步骤详解因为演示需要两个 MySQL 服务器终端,我只有一个 3306 端口号的 MySQL 服务器,所以需要再创建一个 3307 的。创建一个3307端口号的MySQL服务器1、复制 mysql 的安装目录2、修改my.in…

安全开发实战(4)--whois与子域名爆破

目录 安全开发专栏 前言 whois查询 子域名 子域名爆破 1.4 whois查询 方式1: 方式2: 1.5 子域名查询 方式1:子域名爆破 1.5.1 One 1.5.2 Two 方式2:其他方式 总结 安全开发专栏 安全开发实战​​http://t.csdnimg.cn/25N7H 前言 whois查询 Whois 查询是一种用…

MCU功耗测量

功耗测量 一、相关概念二、功耗的需求三、测量仪器仪表测量连接SMU功能SMU性能指标 四、功耗测量注意点板子部分存在功耗MCU方面,可能存在干扰项仪器仪表方面 一、相关概念 静态功耗和动态功耗:动态功耗为运行功耗,功耗测量注重每MHz下的功耗…

DevOps文化对团队有何影响?

DevOps文化对团队有很多积极影响,包括提高团队效率、促进沟通与协作、提高产品质量和推动创新等方面。然而,实施DevOps文化也需要一定的挑战,如改变团队成员的观念、引入新的工具和流程等。因此,团队需要充分了解DevOps文化的价值…

【重磅开源】MapleBoot项目开发规范

基于SpringBootVue3开发的轻量级快速开发脚手架 🍁项目简介 一个通用的前、后端项目模板 一个快速开发管理系统的项目 一个可以生成SpringBootVue代码的项目 一个持续迭代的开源项目 一个程序员的心血合集 度过严寒,终有春日&#xff…