关于STM32外接12MHz晶振的处理办法

发布者:数据迷航者最新更新时间:2017-11-04 来源: eefocus关键字:STM32  外接12MHz  晶振 手机看文章 扫描二维码
随时随地手机看文章

关于STM32外接12MHz晶振的处理办法

http://www.amobbs.com/thread-4478412-1-1.html

(出处: amoBBS 阿莫电子论坛)

由于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)
修改为:
#define HSE_VALUE    ((uint32_t)12000000)

    第二步,打开system_stm32f10x.c,修改PLL参数,将
   
    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);
修改为:  
   
    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编译环境的设置参数的优先级是高于原文件中的设置的。


关键字:STM32  外接12MHz  晶振 引用地址:关于STM32外接12MHz晶振的处理办法

上一篇:STM32之ADC+步骤小技巧
下一篇:stm32的重映射端口配置

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

stm32定时器优先级
什么是优先级   优先级是具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。   当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。 stm32定时器优先级   STM32 可以支持的 68 个外部中断通道,已经固定的分配给相应的外部设备。每个中断通道都具备自己
[单片机]
​意法半导体扩大STM32Cube开发环境,简化单核MPU裸机软件开发
2023 年 12 月 2 0 日, 中国 - 意法半导体新软件帮助工程师把STM32微控制器应用代码移植到性能更强大的STM32MP1微处理器上,将嵌入式系统设计性能提高到一个新的水平。 随着终端用户不断要求日常生活工作设备具有更多的功能和更快的响应速度,设备厂商需要使用有效的解决方案来提高产品性能。工业实时应用是一个典型的例子。 越来越多的加工设备、工厂自动化系统、物流零售技术、物联网设备和数字标牌要求主控制器具有更高的性能,而微控制器(MCU)无法满足性能要求。 意法半导体的STM32MP1微处理器(MPU)专注这些发展趋势,整合性能更强大的ARM®Cortex®-A7应用级体系架构与更高的处理能力
[单片机]
​意法半导体扩大STM32Cube开发环境,简化单核MPU裸机软件开发
【菜鸟入门】stm32的第一个程序--LED
经过今天一天的努力终于完成了我的stm32第一个程序;我也是今天才开始接触stm32。 由于苦于没有资料,木有例程,找到的例程都是带有库的,这样对stm32基础的管脚配置就不容易懂了,主要是没有一个具体的轮廓。 经过对库文件的研究,和看了好几节视频,又根据自己以前搞430和arm9的经验,就按着以前的思路进行研究,终于开发出自己的第一个LED程序; 1、创建工程 (1)Project -- New uvision Project (2)选择工程要保存的地方 (3)选择CPU (4)选择“是”(如果你使用从STM下载的库的话,就选“否”) (5)修改一下代码(如果不注视掉红色部分,会出现错误)
[单片机]
STM32学习之启动代码注释
;Reset_Handler 子程序开始 Reset_Handler PROC ;输出子程序Reset_Handler到外部文件 EXPORT Reset_Handler ;从外部文件引入__main函数 IMPORT __main ;从外部文件引入SystemInit函数 IMPORT SystemInit ;把SystemInit函数调用地址加载到通用寄存器R0 LDR R0, =SystemInit ;跳转到R0中保存的地址执行程序(调用SystemInit函数) BLX R0 ;把main函数调用地址加载到通用寄存器R0 LDR R0, =__main ;跳转到R0中保存的地址执
[单片机]
stm32串口通信流程图
1.写在前面 首先,你要知道STM32启动文件中启动流程,你就需要掌握一点汇编基础知识。 汇编语言属于机器语言,或者说低级语言,C语言属于高级语言,所以,汇编和C语言在语法上差异很大。 如果你学底层开发,汇编的一些基础知识需要掌握。不需要精通,但需要看懂常见的汇编代码。 2.说明 STM32的启动文件与编译器有关,不同编译器,它的启动文件不同。 虽然启动文件(汇编)代码各有不同,但它们原理类似,都属于汇编程序。 我们拿基于MDK-ARM的启动文件来举例,说一下要点内容。 3.分配堆栈 在基于MDK的启动文件开始,有一段汇编代码是分配堆栈大小的。 这里重点知道堆栈数值大小就行。还有一段AREA(区域),表示分配一段堆栈数
[单片机]
<font color='red'>stm32</font>串口通信流程图
STM32 BOOT引起硬件死机
STM32的三种启动方式依靠BOOT0和BOOT1两个引脚的电平来决定,ST官方推荐的是串联10k电阻然后在接高电平或接地。 我用0R直接接地的,没有串联10k电阻,造成STM32的硬件死机。在实际的应用中耽误不少时间,切记!
[单片机]
STM32 结构体对齐规则
1、对齐算法 在相同的对齐方式下,结构体内部数据定义的顺序不同,结构体整体占据内存空间也不同。 如下结构体定义: struct A { // a 的自身对齐值为 4,偏移地址为 0x00~0x03,a 的起始地址 0x00 满足 0x00%4=0 int a; // b 的自身对齐值为 1,由于紧跟 a 之后的地址,即 0x04 满足 0x04%1=0,所以 b 存放在 0x04 地址空间 char b; // c的自身对齐值为2,由于紧跟b之后的地址0x05%2不是0,而0x06%2=0 // 因此c的存放起始地址为0x06,存放在0x06~0x07空间。 // 在b和c之间的0x05地址则补空字节 shor
[单片机]
STM32微控制器中采用DMA实现方波的产生和捕获
   1 STM32微控制器介绍   STM32系列微控制器是ST公司基于Cortex-M3内核的高集成度的微控制器。它在性能、价格、功耗和实时性方面树立了一个新的标杆,集成了Cortex-M3内核,以及双ADC、多用途的通用时钟TIMx、RTC、I2C、SPI、UART、CAN、DMA、USB等丰富的外设。其功耗在全速72MHz所有模块都打开时也仅仅为36 mA,在低功耗模式下其功耗仅为2 A。   2 DMA和TIMx简介   STM32系列微控制器均含有DMA和通用时钟TIMx模块。其低端型号中仅包含DMA1,支持7个通道;高端型号还包括DMA2,支持5个通道。它的每个通道可任意指定工作模式,如内存到内存、内存到外设或外
[单片机]
<font color='red'>STM32</font>微控制器中采用DMA实现方波的产生和捕获
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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