历史上的今天
返回首页

历史上的今天

今天是:2025年02月25日(星期二)

正在发生

2020年02月25日 | 通过BUG来理解STM32的HSE时钟

2020-02-25 来源:eefocus

  前言:最近在搞GPRS的时候,遇到了这么一个问题,所使用的单片机为STM32F103RBT6,刚开始先写了个串口打印的程序,波特率设置为19200,可是在上位机上输出的信息总是乱码,检查了好几遍的代码,硬件等等就是没找到问题。于是就在上位机上对波特率从115200往下一个一个的试,终于,当波特率设置为38400的时候,打印信息正确,额滴歌神啊,这是什么情况呢,我在程序中明明设置的波特率为19200,为什么上位机上波特率为19200的时候不对,而为38400的时候输出正确呢?于是,又回过头来检查电路原理图和代码,Oh,My god,原来问题在这里,因此这篇博客将以我遇到的问题为起点,对STM32的HSE时钟做一个总结。


一、问题

  通过检查电路原理图,发现问题的根源所在,电路中所使用的晶振为16M,而我们经常使用的晶振为8M的,所以导致波特率变为2倍。


二、解决方法

  因为使用的晶振为16M的,所以需要对程序中库函数要进行修改。那么,具体要修改哪呢? 

  1)修改system_stm32f10x.c文件。


/*

*@system_stm32f10x.c中的源代码部分

*@这部分代码为外部晶振为8M时的情况

*/

/*PLL configuration:PLLCLK = HSE * 9 = 72MHz */

    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));

    RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);

/*

*@对system_stm32f10x.c中的源代码修改如下

*@修改后的代码对应的外部晶振为16M

*/

     RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLMULL));

     RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_Div2 | RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);


  解释:通过对比发现,修改后的代码多了一句话。


    RCC_CFGR_PLLXTPRE_Div2


  那么,这句有什么作用呢? 

  RCC_CFGR:时钟配置寄存器,偏移地址为:0x04,复位值为:0x0000 0000。 

  PLLXTPRE:PREDIV1分频因子的低位。 

  Div2:二分频 

  所以增加的这句代码的意思就是对(3~25MHz)HSE振荡器进行二分频,而我们所使用的晶振为16M的晶振,二分频之后为8M,所以修改之后,波特率就一一对应了,而不再是二倍的关系了。 

  那么,这个bug就到此为止,解决了吗?No,这样程序还是有bug,那么bug在哪呢?又是如何解决呢? 

  2)修改stm32f10x.h文件


/*

*@stm32f10x.h中的源代码部分

*/

    #define HSE_VALUE   ((uint32_t)8000000)

/*

*@对stm32f10x.h做如下修改

*/

    #define HSE_VALUE   ((uint32_t)16000000)


  解释:这句代码应该就不用解释了吧,很明显,就是将HSE的值由8M修改为16M。 

  通过解决Bug,下面来对STM32的HSE时钟做一个简单的总结。


三、HSE时钟总结

1、高速外部时钟HSE的时钟源

  1)HSE外部晶体/陶瓷谐振器 

  2)HSE用户外部时钟


2、高速外部时钟HSE的范围

  HSE时钟的范围为3~25MHz。


3、HSE时钟树

这里写图片描述

3、寄存器配置

  略。感兴趣的读者可以阅读手册。

推荐阅读

史海拾趣

Amkor公司的发展小趣事

Amkor Technology是一家全球领先的半导体封装和测试服务提供商。以下是关于Amkor公司发展的五个相关故事:

  1. 成立与早期发展:Amkor Technology成立于1968年,总部位于美国亚利桑那州的钱德勒市。公司最初是一家小型半导体封装服务提供商,专注于为集成电路制造商提供先进的封装解决方案。在成立初期,Amkor致力于技术创新和质量控制,赢得了客户的信任和认可。

  2. 技术创新与产品多样化:随着电子行业的发展和技术的进步,Amkor不断进行技术创新,并扩展了产品线。公司推出了一系列新的封装技术和解决方案,包括先进的3D封装、薄型封装、系统封装等。这些技术创新和产品多样化使得Amkor能够满足不同客户的需求,并保持在市场竞争中的领先地位。

  3. 全球布局与生产基地建设:为了更好地服务全球客户,Amkor在全球范围内建立了多个生产基地和分销中心。除了在美国的设施外,公司还在亚洲、欧洲和其他地区建立了生产工厂和研发中心。这种全球布局有助于降低生产成本、提高生产效率,并加强了在全球市场的竞争力。

  4. 合作伙伴关系与客户服务:Amkor与全球各种半导体制造商建立了紧密的合作伙伴关系,共同推动技术创新和产品发展。公司致力于为客户提供优质的封装和测试解决方案,并与客户密切合作,开发定制化的解决方案。Amkor的客户服务团队提供全方位的技术支持和服务,确保客户的满意度和业务成功。

  5. 持续发展与业绩表现:Amkor持续实现了稳健的增长和良好的业绩表现。公司不断投入研发,并提升生产效率和管理水平,以提高盈利能力和市场竞争力。Amkor的业绩稳步增长,为股东创造了可观的价值,并使得公司成为半导体封装和测试服务领域的领先企业之一。

这些故事展示了Amkor Technology从成立初期到如今在技术创新、产品多样化、全球布局、合作伙伴关系建设和持续发展等方面取得的重要进展。

Helicomm公司的发展小趣事

在电子行业中,Helicomm公司凭借其深厚的技术积累和不断创新的精神,逐渐崭露头角并发展成为业界的佼佼者。以下是关于Helicomm公司发展起来的五个相关故事:

1. ZigBee技术的引领者

自2002年成立以来,Helicomm公司便致力于ZigBee及IEEE 802.15.4标准的研究与产品开发,成为全球ZigBee技术的引领者之一。公司不仅成功完成了IEEE 802.15.4和ZCP的双重资格认证,还推出了多款经过FCC认证的ZigBee模块,广泛应用于市政、安全、监测、物流、定位等领域。Helicomm的ZigBee模块为客户搭建了一条从芯片到应用的快速通道,极大地简化了无线产品的开发流程。(信息来源:百度百科)

2. 技术并购与子公司成立

2005年,Helicomm公司完成了对尉普(WirelessPlug)科技股份有限公司的并购,并成立了赫立讯科技(北京)有限公司,作为其在中国的全资子公司。这一举措不仅增强了Helicomm在全球无线通讯市场的竞争力,还为其在中国市场的拓展奠定了坚实的基础。赫立讯科技继承了尉普在无线传输终端产品方面的技术积累,进一步推动了ZigBee等无线通讯技术在中国的应用与发展。(信息来源:安阳市菲云网络科技有限公司网站)

3. 参与国际标准制定

作为ZigBee联盟的创始会员之一,Helicomm公司积极参与了ZigBee标准的制定与推广工作。通过与国际同行的紧密合作与交流,Helicomm不断提升自身在无线通讯领域的技术实力和影响力。其产品在符合国际标准的同时,也融入了公司的独特创新,满足了不同行业客户的多样化需求。(信息来源:综合多个来源)

4. 工业无线监控系统的创新

近年来,Helicomm公司联合柏元网控、研华科技等合作伙伴,共同推出了针对油田、水利等行业的工业无线监控系统方案。该系统方案充分利用了Helicomm在ZigBee、GSM/GPRS/CDMA等无线通讯技术方面的优势,结合合作伙伴在软件监控、硬件采集控制等方面的专长,为相关行业提供了高效、可靠的无线监控解决方案。这一创新不仅提升了行业的智能化水平,也进一步巩固了Helicomm在无线通讯领域的领先地位。(信息来源:重庆市智畅行物联科技有限公司网站)

5. 国际市场的拓展

Helicomm公司的产品不仅在中国市场取得了显著成绩,还成功打入国际市场,赢得了广泛的认可。公司凭借其先进的技术、稳定的产品性能和优质的本地化服务,在国际市场中建立了一席之地。特别是在水利、交通、环保、气象等领域,Helicomm的无线通讯产品得到了广泛应用,为全球客户提供了可靠的无线通讯解决方案。(信息来源:综合多个来源)

以上五个故事展示了Helicomm公司在电子行业中的发展历程和成就,体现了其在无线通讯领域的深厚技术实力和不断创新的精神。

Condor公司的发展小趣事

关于Condor公司在电子行业的发展,以下是五个相关故事:

  1. Condor的创始与早期发展

Condor公司成立于1893年,起初主要涉及离心机、挤奶机以及泵的生产。随着技术的不断进步和市场需求的变化,公司逐渐转型,开始专注于压力和液位控制组件及系统解决方案的研发与生产。这一转变使得Condor在电子行业中崭露头角,为其后续的发展奠定了坚实的基础。

  1. 专利技术的突破

1935年,Condor取得了世界上的泵压力开关上的第一个专利,这一创新性的技术突破为公司的快速发展注入了新的动力。随着这项专利技术的应用,Condor的产品开始在各种工业领域中得到广泛应用,特别是在需要精确控制压力和液位的场景中,如汽车、冶金、水火核风电等行业。

  1. 国际市场的拓展与合作

随着全球化进程的加速,Condor开始积极拓展国际市场。公司与多个国家的合作伙伴建立了长期稳定的合作关系,共同开发新产品,拓展新的应用领域。这一战略举措不仅提升了Condor在全球电子行业中的影响力,也为其带来了更多的商业机会。

  1. 产品质量的持续提升

Condor一直坚持以最高的质量要求来生产每一款产品。为了确保产品质量,公司在生产过程中严格把控每一个环节,从原材料采购到最终的产品测试,都遵循严格的标准和流程。这种对质量的执着追求,使得Condor的产品在市场上赢得了良好的口碑和客户的信赖。

  1. 技术创新的持续推进

作为家族企业,Condor始终保持着对技术创新的热情和投入。公司不断引进新的技术和设备,优化生产流程,提高产品的性能和可靠性。同时,Condor还积极与科研机构和高校合作,共同研发新的技术和产品,以满足市场不断变化的需求。这种持续的技术创新为Condor在电子行业中保持领先地位提供了有力支持。

以上五个故事展示了Condor公司在电子行业中的发展历程和关键转折点,体现了其对技术、质量和市场的敏锐洞察力和持续创新精神。如需更多信息,建议查阅Condor公司官网或相关新闻报道。

EHC(ELECTRONICHARDWARE)公司的发展小趣事

在电子行业中,产品质量是企业生存和发展的关键。EHC公司深知这一点,因此一直将品质管理作为企业发展的重要战略。公司建立了完善的质量管理体系,从原材料采购到生产制造再到产品出厂,每一个环节都经过严格的把控。这种对品质的坚持和追求让EHC公司的产品在市场上赢得了广泛的信任和认可。

E Connector Solutions公司的发展小趣事

E Connector Solutions公司自成立以来,一直注重技术创新。在早期阶段,公司研发团队通过深入的市场调研,发现电子连接器市场存在着对高速、高密度连接器日益增长的需求。公司投入大量研发资源,成功开发出一款新型连接器产品,其传输速度更快、密度更高,满足了市场的需求。随着产品的推出,E Connector Solutions公司逐渐在市场中树立了技术领先的形象,赢得了客户的信赖。

BERNSTEIN公司的发展小趣事

随着工业技术的不断发展,BERNSTEIN公司始终保持着对技术创新的热情。在公司的发展史上,它涉足了几乎所有的重要技术发展的阶段,从电子开关到传感器,再到工业机箱等领域,都取得了显著的成就。尤其是在工业安全技术方面,BERNSTEIN公司凭借其卓越的技术实力和产品质量,成为了行业内的佼佼者。

问答坊 | AI 解惑

简化的6通道串行通讯板怎么设计?

以下设计题中,主CPU芯片均采用ATMega128L-8AU,供电电源为12V DC。 1. ATMega128L的工作电源为2.7V~5.5V DC,因此需要为CPU设计一个合适的电源系统,请使用LM2576-ADJ设计一个三端稳压电路,输出5V DC/3A供整个设计使用,需要设计电源指示灯 ...…

查看全部问答>

乔布斯你凭什么这么牛?

最近IT业的人没有不知道iPhone 4的信号门,为此展开的口水战也屡见于各大媒体。“信号门”本不是什么好事,对于其他公司甚至可能是灭顶之灾,但苹果有个乔布斯,信号门不仅乔布斯出尽风头,出现在各大媒体头版头条,iPhone 4手机的销售也好像丝毫没 ...…

查看全部问答>

MTK6225 手机开发板(含源代码)

MTK6225 手机开发板(含源代码) 有诚意者请联系 Qq:296662705 硬件特性: 1、 CPU:mtk6225 2、 TFLASH 卡接口 3、 176X220 2.6寸TFT LCD,最高支持320*240*16的TFT LCD 4、 4线触摸屏接口 5、 双声道音频输出 6、 一个Camera 130万像素 ...…

查看全部问答>

嵌入式设备里,添加java游戏,如何支持Java?

因为手头的开发板是mips32+linux,嵌入式设备里,想添加java游戏,应该移植哪种JVM比较好,比较快,比较容易?据说kaffe是一个不错的JVM,有没有移植过的朋友,可以参考指点的,谢谢!…

查看全部问答>

问问linux、嵌入式行业的开发人员

总说linux开发或者linux下的嵌入式开发,尽管在网上能搜罗到不少相关的信息,但总归没有一个清晰的概念和界定。 究竟在实际工作中是哪些东西的开发?分为哪几种?需要什么知识? 注:小弟我现在做java,由于对底层的偏爱,想转底层开发,学习 ...…

查看全部问答>

有北京的朋友和我一起买扬创s3c2440的板子吗 ?

有北京的朋友和我一起买扬创s3c2440的板子吗 http://www.yctek.com/shop/view_47.html 团够就可以便宜的。有意思的朋友可以留言。我看了。比这个价格还要便宜好几百呢。人越多他们说越便宜。…

查看全部问答>

3.3V转5V,大家在实践中都用什么芯片

3.3V转5V,大家在实践中都用什么芯片?…

查看全部问答>

Xilinx FPGA & MATLAB SYSTEM GENERATOR FIR COMPILOR 调通了

基于MATLAB SYSTEM GENERATOR 的FIR滤波器终于调通了,模型如下: 参数如下:   输出波形如下图所示: 上图中,第一个波形是待滤波的波形,第二个是FIR数字滤波器的输出波形,第三个是MATLAB自带的滤波器。   然而,上述结果 ...…

查看全部问答>

IAR中跑的好好的,换到MDK中就会莫名其妙的进Fault中断,请各位帮忙看看!

下面的程序在IAR中用的好好的,但是自己有点吹毛求疵了,还是习惯用MDK,所以就转到MDK下用,程序什么的都不变,只是把对应的driverlab.a文件换成了对应的driverlib.lib文件,build没有问题,下载进去也没问题,前面的串口输出也没问题,但程序一跑 ...…

查看全部问答>

任务栈空间检测机制(rtos使用者必看)

目前绝大部分的rtos都是没有基于mmu或者mpu来运行的,也就是说没有内存保护机制。在没有内存保护机制的前提下,最揪人心的莫过于任务栈空间的溢出了,任务栈空间的溢出随时就像一颗定时炸弹等着引爆,使用者浑身不自在。有没有100%的任务栈空间溢出 ...…

查看全部问答>