历史上的今天
今天是:2024年08月28日(星期三)
2018年08月28日 | 关于STM32外接4—16MHz晶振主频处理方法
2018-08-28 来源:eefocus
由于STM32F10x库官方采用的是默认的外接8MHz晶振,因此造成很多用户也采用了8MHz的晶振,但是,8MHz的晶振不是必须的,其他频点的晶振也是可行的,只需要在库中做相应的修改就行。
在论坛上看到很多用户反映,使用外接12MHz的晶振,会造成很多的问题,如USART的波特率不正确,Systick走时不准等问题,在无论是在实际调试还是在软件模拟中都会发现这个情况,其实,这不能怪ST官方,我们必须肯定ST官方为方便用户开发所做的努力,下面我们就通过简单的三个步骤就可以让你随意的使用4—16MHz之内任何频点的晶振,我们以STM32F10x_StdPeriph_Lib_V3.4.0为例说明。
第一步,打开stm32f10x.h,将
#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
修改为:
#define HSE_VALUE ((uint32_t)12000000) /*!< Value of the External oscillator in Hz */
第二步,打开system_stm32f10x.c,修改PLL参数,将
/* PLL configuration: PLLCLK = HSE * 9 = 72 MHz */
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);
修改为:
/* PLL configuration: PLLCLK = HSE * 6 = 72 MHz */
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_PLLMULL6);
至此,原文件已经修改完成,如果你想将主频修改至其他频率,请自行修改。但是,到现在,如果您直接编译调试的话,就会出现上文所说的USART的波特率不正确,Systick走时不准等问题,原因就是我们需要进行第三部的修改,这个修改不是在原文件中,而是在编译环境中。我们已Keil MDK为例说明。
第三步,打开你已经建立的STM32工程,选择Projects-〉Options for target ***,找到Target标签,你会发现,外接的晶振默认还是8MHz,我们将外接的晶振参数修改为12MHz,确定保存,再编译,调试,你就会发现,所有的参数都回归的正常轨道,设置波特率为9600,它也不会跑到14400,设置Systick为1ms中断,它不会1.5ms中断。
现在,我们也得出了一个结论,在keil MDK编译环境的设置参数的优先级是高于原文件中的设置的。
史海拾趣
|
现在在有扬创的一嵌入式开发板做个东西,板子是去年买的,当时用自己写的一个EVC程序通过GPRS模块来收发短信都没问题,不过不知道怎么现在在同样的板子上用同样的程序却总是出现串口问题。 我用之前没问题的收发短信程序 ...… 查看全部问答> |
|
请问IR2136驱动IGBT管这个三极管是什么管子(有图示)? 想自已DIYG一个简易的变频器,拆开单位用到的一种国产变频器(好象它的返修是最少的), 描下其用IR2136驱动IGBT管的电路,就是看不明白其中的D2,D3是什么管子?那位大虾可以说说吗? 我开始以为是PNP三极管,但用数字万用表测量C脚,B脚之间 ...… 查看全部问答> |
|
单片机MSC-51学习笔记1第二章 CS-51单片机的结构 本章的重点 MCS-51 单片机的内部结构 MCS-51 单片机的引脚功能 MCS-51 单片机CPU的结构特点 MCS-51 单片机的存储器组织特点及访问方式 MCS-51 单片机的低功耗方式及应用 一、MCS-5 ...… 查看全部问答> |
|
51MCU中。用编译器将HEX程序文件载入单片机ROM里的时候,是将其放在MCU的内部存储器还是外部存储器呢? 还有,在EA置低的时候为什么单片机最小系统也还是可以工作的? 大神们请为小弟耐心解答!万分感谢!!… 查看全部问答> |
|
最近遇到一个很麻烦的问题,采用AT89C2051单片机写一个小程序,使用的是C语言,进行简单的IO口输出控制操作(输出0,1)。keil中编译通过,使用编程器烧写成功。但是就是简单的让P1口和P3口输出0,和1,都不能工作。 用示波器测得各引脚电平如下:P ...… 查看全部问答> |
|
「ADI模拟大学堂」混频器的基础理论和应用(2014.3.4) replyreload += \',\' + 1640264;「ADI模拟大学堂」混频器的基础理论和应用(2014.3.4) (每日一份资料) 「ADI模拟大学堂」每天更新一份资料,资料更新目录在后面,希望大家支持。希望能获得大家的回帖,我也不用做回复可见。希望大家喜欢ADI的资 ...… 查看全部问答> |
|
坛友们,再来发帖,虽然跟我们坛不是直接关联的,但是我们坛里高手云集,欢迎加入!大虾们见多识广,如果看到有如下人才出现,请不吝推荐给我: 一. 锂电研发高级工程师: 1、硕士,博士优先; 2、5年以上圆柱锂离子电芯研发经验; 3、具备 ...… 查看全部问答> |




