STM32使用16M外部晶振时串口乱码

发布者:糖果龙猫最新更新时间:2018-08-21 来源: eefocus关键字:STM3  16M  外部晶振  串口乱码 手机看文章 扫描二维码
随时随地手机看文章

1.出现的问题:

修改RCC配置代码如下:

将语句:RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); //之前使用8MHz外部晶振,9倍频到72MHz

修改为:RCC_PLLConfig(RCC_PLLSource_HSE_Div2, RCC_PLLMul_9); //使用16MHz外部晶振之后,2分频再9倍频到72MHz

测试中发现串口1一直是乱码。


2.解决办法:

(1).去除库文件:stm32f10x.h的只读属性。

(2).此文件中找到语句:#define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */

(3).将这条语句更改为:#define HSE_VALUE    ((uint32_t)16000000) /*!< Value of the External oscillator in Hz */


关键字:STM3  16M  外部晶振  串口乱码 引用地址:STM32使用16M外部晶振时串口乱码

上一篇:STM32库函数的使用过程中晶振参数与实际不符的问题
下一篇:STM32内部flash分配

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

STM32笔记(七)---Systick系统定时器
一、 概念 1-1 Systick简介 SysTick—系统定时器是属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit 的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK 等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复。 因为 SysTick 是属于 CM3 内核的外设,所以所有基于 CM3 内核的单片机都具有这个系统定时器,使得软件在 CM3 单片机中可以很容易的移植。系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。 1-2 Systick功能框图 counter(STK_VA
[单片机]
STM32笔记(七)---Systick系统定时器
串口显示乱码的原因总结
1.USB转串口的问题 解决方法:我曾用一个12块钱的那种U转串,出现过乱码,换一个好的就没事了 2.波特率不同步的问题 解决方法:两边设置的波特率的一样,会导致这样的问题 3.在通信波特率为 38400 时,通信正常,arm 板上解受到的数据(ascII码)显示正常。 但是当波特率为 115200 时,解受到的数据就出现乱码的现象! 真的不知道,原因出现在哪里! 希望高手们,大虾们,帮我解决下这个问题! 谢谢…… 解决方法:暂无 4.用ARM2103 给电脑发送信息,用串口高度精灵看,一直接收的都是错误码 解决方法: 我用的44b0曾经出现过显示乱码的问题,在超级终端上显示的; 后来才发现是在boot汇编
[单片机]
<font color='red'>串口</font>显示<font color='red'>乱码</font>的原因总结
STM32F103外部晶振由8M变为12M
官方提供的库文件中,HSE(外部高速时钟)默认为8MHz,最高主频为8*9=72MHz,如果将HSE变为12MHz,不修改库文件的话,最高主频则变为12*9=108MHz,最典型的问题就是USART可以通信,但是接收到的数据与发送的不一致,并且找不到啥原因,害的我瞎折腾了一整天,下面列举需要修改的地方。 1、修改stm32f10x.h中的HSE_VALUE,原本的代码如下: #if !defined HSE_VALUE #ifdef STM32F10X_CL #define HSE_VALUE ((uint32_t)25000000) #else #define HSE_VALUE ((uint
[单片机]
STM32字符转整型处理
/* USER CODE BEGIN Header */ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include main.h #include usart.h #include gpio.h /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include stdl
[单片机]
STM32字符转整型处理
MSP430F4152使用外部高频晶振的配置
外部晶振为3.6864MHz // 关闭FLL+ __bis_SR_register(SCG0); // 关闭锁频环 SCFQCTL |= SCFQ_M; // DCO (2分频: 0.65MHz/2= 0.325MHz) SCFI0 = FLLD_2; // LFXT1设置为高频模式 3.6864MHz FLL_CTL0 |= XTS_FLL; while(FLL_CTL0 & XT1OF); // 等待LFXT1稳定 do{ // 清楚震荡器失效标志 IFG1 &= ~OFIFG; // 延时 for(i = 0xFF; i 0; i--);
[单片机]
STM32关于优先级设定的理解 NVIC_SetPriority()
Systick模块初始化配置函数(Systick_config)中设定模块中断优先级的函数为: NVIC_SetPriority((SysTick_IRQn, (1 __NVIC_PRIO_BITS) - 1); 参数SysTick_IRQn为systick基址,这个没什么好说的 关键在参数 (1 __NVIC_PRIO_BITS) - 1);这个参数即占先优先级值,其中—NVIC_PRIO_BITS是stm32.h中的宏定义,库函数默认为4,表示用4位表示占先优先级,因为m3内核只有4位用来表示占先优先级和响应优先级,那么响应优先级就剩下0位了,也就是没有响应优先级之分, 按照上式计算若NVIC_PRIO_BIT
[单片机]
stm8 16M晶振下精确软件延时
void inerDelay_us(unsigned char n) { for(;n 0;n--) { asm( nop ); //在STM8里面,16M晶振,_nop_() 延时了 333ns asm( nop ); asm( nop ); asm( nop ); } } //---- 毫秒级延时程序----------------------- void Delayms(unsigned int time) { unsigned int i; while(time--) for(i=900;i 0;i--) inerDelay_us(1); }
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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