STM32 串口配置的波特率 与 实际波特率不同解决方案

发布者:电子设计探索者最新更新时间:2019-08-10 来源: eefocus关键字:STM32  串口配置  波特率 手机看文章 扫描二维码
随时随地手机看文章

现象

初始化配置stm32串口1的波特率为115200,设置串口调试助手的波特率也为115200。


接收数据时,发现数据为乱码。当将串口调试助手的波特率改为76800时,能够正确接收到数据。


问题:stm32实际波特率与设置波特率不同


原因和解决方法

这种情况,排除硬件的问题的话,一般是时钟配置问题。我们从串口的时钟源入手。


最后定位到 stm32f10x.h  头文件中,其中HSE(外部高速晶振)的值需要根据外部实际晶振的标称值进行更改。

图1 stm32f10x.h中HSE值


由于之前的开发板上,使用的为12M晶振,而本次使用的为8M晶振,所以出现这种问题。将HSE_VALUE更改为8000000后,解决问题。

关键字:STM32  串口配置  波特率 引用地址:STM32 串口配置的波特率 与 实际波特率不同解决方案

上一篇:STM32三线控制八个发光二极管(74HC595)
下一篇:STM32 USB HID设置(STM32CubeMX)

推荐阅读最新更新时间:2024-11-16 22:45

比较精简的stm32编码器程序
01.#define ROTATE_A PAin(2) 02.#define ROTATE_B PAin(3) 03.s16 DATA=0; 04. 05.void EXti2_IRQHandler(void) 06.{ 07. IF(EXTI_GetITStatus(EXTI_Line2) != RESET) 08. { 09. if(ROTATE_A!=ROTATE_B) 10. { 11. DATA++; 12. } 13. else DATA--; 14. EXTI_ClearITPendingBit(EXTI_Line2); 15. }
[单片机]
比较精简的<font color='red'>stm32</font>编码器程序
STM32推挽输出和开漏输出的区别
当端口配置为输出时: 开漏模式:输出 0 时,N-MOS 导通,P-MOS 不被激活,输出0。 输出 1 时,N-MOS 高阻, P-MOS 不被激活,输出1(需要外部上拉电路);此模式可以把端口作为双向IO使用。 推挽模式:输出 0 时,N-MOS 导通,P-MOS 高阻,输出0。 输出 1 时,N-MOS 高阻,P-MOS 导通,输出1(不需要外部上拉电路)。
[单片机]
关于STM32中的GPIO位设置的相关纪要与总结
1.在对GPIOx_ODR的个别位进行编程时,软件不需要禁止中断。 2.GPIO具有锁定机制。主要是在一些关键引脚上为了防止程序跑掉而引起不必要的后果。 3.GPIO的库函数问题, GPIO_SetBits:置所选端口的一个或者多个位高; GPIO_ResetBits:相应的设置相应的一个或者多个位高; GPIO_Init:设置A,B,C,D,E端口的任一个I/O的输入输出配置信息,初始化I/O芯片; GPIO_Pin:设置带选择的引脚号(GPIO_Pin_1:选中1引脚); GPIO_Speed:设置所选中的引脚的频率(GPIO_Speed_10MHz); GPIO_Mode:设置所选中的引脚的工作状态,做以上几步都必须先定
[单片机]
STM32单片机编程方式及工作原理
STM32单片机编程可以使用多种不同的编程语言和工具,下面是一些常用的编程方式: C语言编程:C语言是STM32单片机编程中最常用的编程语言之一,STM32提供了官方的标准外设库和HAL库来简化编程过程。 Keil:Keil是一款集成开发环境(IDE),它可以与多种编译器和调试器一起使用,包括ARM编译器和CMSIS-DAP调试器,使得开发者可以方便地进行编程、编译和调试。 STM32CubeIDE:STM32CubeIDE是STMicroelectronics提供的官方集成开发环境,可以使用C/C++语言编程,支持多种STM32单片机系列,提供了一系列的图形化工具和代码生成器,使得开发者可以更加方便地进行开发、调试和优化。
[单片机]
如何使用MDK编译器让STM32程序HEX文件中加入固件版本信息
本文介绍一个小技巧: 使用MDK编译器,让STM32程序HEX文件中加入固件版本信息。 代码 代码如下: //------------------------------------------------------------------------------#include 《absacc.h》 //------------------------------------------------------------------------------#define VERINFO_ADDR_BASE (0x8009F00) // 版本信息在FLASH中的存放地址const char Hardware_Ver[] _
[单片机]
如何使用MDK编译器让<font color='red'>STM32</font>程序HEX文件中加入固件版本信息
stm32在Keil5调试提示: uvision IDE已停止工作
1 http://blog.csdn.net/qq_33259138/article/details/70224581 现象是程序编译下载都没有问题,开始Debug调试之后,只要进入C源代码文件,立即崩溃。 在论坛上找到一种解决办法,将你的工程拷出来,发到一个短路径文件夹下,再次编译,崩溃就没有了。 按论坛里大神说法是,Debug调试程序路径不能超过170个字节。 2http://www.openedv.com/posts/list/52892.htm 1, 是不是安装在中文目录了? 2,是不是系统用户名是中文的? 3 https://weibo.com/p/2304187e4cac0d0102vyxf?s
[单片机]
<font color='red'>stm32</font>在Keil5调试提示: uvision IDE已停止工作
STM32的AD9854 DDS模块调试总结
  DDS基本原理和特点   1、DDS基本原理   直接频率合成技术实际上是通过将存储的波形数据,通过特定算法,经过高速D/A转换器转换成所需要模拟信号的数字合成技术。其基本原理框图如图1所示。   由图1可见,其主要由标准参考频率源、相位累加器、波形存储器、数/模转换器等部分组成。其中,参考频率源一般是一个高稳定的晶体振荡器,其输出信号用于DDS中各部件同步工作。当频率合成器正常工作时,在标准频率参考源的控制下(频率控制字K决定了其相位增量),相位累加器则不断地对该相位增量进行线性累加,当相位累加器积满量时就会产生一次溢出,从而完成一个周期性的动作,即合成信号的一个频率周期。累加器的输出地址对波形ROM进行寻址,从而把存
[单片机]
<font color='red'>STM32</font>的AD9854 DDS模块调试总结
s3c6410串口裸机开发串口波特率计算
假设时钟选择为PCLK(S3C6410为66Mhz) 由以下两个公式可以帮助我们通过设置相关寄存器来决定串口波特率 公式1: 公式2: 我们可以先通过公式2算出DIV_VAL的值,然后将接近DIV_VAL的值赋给寄存器UBRDIVn,然后在根据公式1算出num of 1's in UDIVSLOTn。其中UDIVSLOTn的赋值可以根据下表来设置: 通过上述配置,就将UBRDIVn和UDIVSLOTn的值确定下来,从而得到我们想要的波特率bps 将此公式和表格列出,方便以后再做开发使用。 参考: S3C6410 datasheet
[单片机]
s3c6410<font color='red'>串口</font>裸机开发<font color='red'>串口</font><font color='red'>波特率</font>计算
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved