GD32官方提供的固件库中使用的晶振配置一般为8M或25M,如果读者使用其他频率的晶振如何修改配置呢?本文为大家讲解如何修改。
以GD32F303为例,官方固件库中的晶振及时钟配置代码如下,改配置代码为使用外部8M晶振倍频到120M时钟。
在此我们举例,若外部晶振使用16M该如何配置,主要修改以下两点:
修改HXTAL_VALUE为16M,如下红色底纹部分。
#if !defined HXTAL_VALUE #ifdef GD32F30X_CL #define HXTAL_VALUE ((uint32_t)25000000) /*!< value of the external oscillator in Hz */ #else #define HXTAL_VALUE ((uint32_t)16000000) /* !< from 4M to 32M *!< value of the external oscillator in Hz*/ #endif /* HXTAL_VALUE */ #endif /* high speed crystal oscillator value */
修改时钟倍频到120M.如下红色底纹部分,配置15倍频,计算公式为16M/2*15=120M.
/* select HXTAL/2 as clock source */ RCU_CFG0 &= ~(RCU_CFG0_PLLSEL | RCU_CFG0_PREDV0); RCU_CFG0 |= (RCU_PLLSRC_HXTAL_IRC48M | RCU_CFG0_PREDV0); /* CK_PLL = (CK_HXTAL/2) * 15 = 120 MHz */ RCU_CFG0 &= ~(RCU_CFG0_PLLMF | RCU_CFG0_PLLMF_4 | RCU_CFG0_PLLMF_5); RCU_CFG0 |= RCU_PLL_MUL15;
PS:GD固件库中修改使用内部时钟非常方便,只要打开内部时钟的宏定义就可以啦。
/* select a system clock by uncommenting the following line */ /* use IRC8M */ //#define __SYSTEM_CLOCK_IRC8M (uint32_t)(__IRC8M) //#define __SYSTEM_CLOCK_48M_PLL_IRC8M (uint32_t)(48000000) //#define __SYSTEM_CLOCK_72M_PLL_IRC8M (uint32_t)(72000000) //#define __SYSTEM_CLOCK_108M_PLL_IRC8M (uint32_t)(108000000) //#define __SYSTEM_CLOCK_120M_PLL_IRC8M (uint32_t)(120000000)
关键字:晶振 GD32
引用地址:
更改晶振后如何修改配置?
推荐阅读最新更新时间:2024-11-21 14:25
汽车电子都应用哪些频点的贴片晶振
晶振通过与其它元器件的连接使用,产生脉冲起到信号源的作用,所以在电子圈中有一个很形象的比喻: 如果把芯片比如电路的控制大脑,那晶振产生的信号就是给大脑持续供需的血液。平时,在我们使用的手机,蓝牙耳机,音响,智能平衡车,智能家居,智能穿戴等领域都有晶振的身影。且在生活代步的汽车中也会应用晶振,谁能想到一辆汽车应用到的晶振就高达200多颗,可别小瞧这些晶振,它们遍布在汽车的钥匙系统,发动机,胎压监测,车载娱乐影音系统,倒车雷达,导航GPS,ADAS系统,智能驾驶舱,汽车防盗系统,自动车窗等控制系统。不同的晶振频率在系统中有不同的应用和功能,这取决于设备的工作需求和性能要求。 4MHZ:汽车仪表盘,发动机控制模块(ECM),空调控制
[嵌入式]
单片机40个晶振问题及解决方法小结
1、单片机晶振不起振原因分析 遇到单片机晶振不起振是常见现象,那么引起晶振不起振的原因有哪些呢? (1) PCB板布线错误; (2) 单片机质量有问题; (3) 晶振质量有问题; (4) 负载电容或匹配电容与晶振不匹配或者电容质量有问题; (5) PCB板受潮,导致阻抗失配而不能起振; (6) 晶振电路的走线过长; (7) 晶振两脚之间有走线; (8) 外围电路的影响。 解决方案,建议按如下方法逐个排除故障: (1) 排除电路错误的可能性,因此你可以用相应型号单片机的推荐电路进行比较。 (2) 排除外围元件不良的可能性,因为外围零件无非为电阻,电容,你很容易鉴别是否为良品。 (3) 排除晶振为停振品的可能性,因为你不会只试了一二个
[单片机]
200M示波器竟然无法测量10M晶振,原来是探头档位没选对!
为什么当我用示波器观察晶体振动引脚的波形时,我看不到波形或波形失真?200M示波器不能测量10M晶体振动吗? 1.常见晶振 首先,我们将简要介绍晶体振动。晶体振动一般可分为两类:无源晶体振动和有源晶体振动。 2、无源晶振 无源晶体振动是一种无极元件,需要时钟电路来产生振荡信号,不能自行振荡。无源晶体振动没有电压要求,信号电平可变,即根据振动电路确定。 图1无源晶振 3、有源晶振 有源晶体振荡器是一种完整的振荡器,除石英晶体外,还有晶体管和阻力元件。有源晶体振荡器不需要内部振荡器,信号质量好,相对稳定,连接方式相对简单,不需要复杂的配置电路。 4.晶振波形分析 晶体振动波形一般为正弦波或方波,当输出波形为方波时,一般上升边缘
[测试测量]
晶振的最大波特率及其误差介绍
用11.0592M和22.1184M,这样在通讯的时候误差最小。 Crystal(MHz) MaxBaudRate Error 1.000000 300 2.12% 1.843200 9600 0.00% 2.000000 300 0.79% 2.457600 300 0.78% 3.000000 1200 0.16% 3.579545 300 0.23% 3.686400 19200 0.00% 4.000000 1200 2.12% 4.194304 2400 1.14% 4.915200 1200 1.59% 5.000
[模拟电子]
细说单片机晶振电路中22pf或30pf电容的作用
单片机 模拟 器件搜索 单片机原理 单片机时序 单片机分类 单片机结构分析 单片机存储器 单片机程序的完善 单片机延时程序 单片机寻址 单片机指令系统 计数器与定时器 单片机中断系统 单片机串口 单片机看门狗 单片机烧写 单片机常见问题 您当前的位置: 首页 基础知识 单片机 单片机常见问题 细说单片机晶振电路中22pf或30pf电容的作用 来源:互联网 作者: 关键字: 单片机 晶振 刚学单片机的学长告诉我单片机的晶振电路中就是用22pf或30pf的电容就行,听人劝吃饱饭吧,照着焊电路一切ok,从没想过
[单片机]
关于51单片机晶振的21个问题
一 为什么51单片机爱用11.0592MHZ晶振? 其一:因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。 其二:用11.0592晶振的原因是51单片机的定时器导致的。用51单片机的定时器做波特率发生器时,如果用11.0592Mhz的晶振,根据公式算下来需要定时器设置的值都是整数;如果用12Mhz晶振,则波特率都是有偏差的,比如9600,用定时器取0XFD,实际波特率10000,一般波特率偏差在4%左右都是可以的,所以也还能用STC90C516 晶振12M 波特率9600 ,倍数时误差率6.
[单片机]
AVR单片机ATmega8内部晶振使用
ATmega8在使用内部晶振的时候,需要进行烧写方式的选择,来选择不同内部晶振大小。 对应UART的波特率设置和使用外部晶振的方式是一样的。 但是一般情况下,不建议使用内部晶振,因为内部晶振的精度不高,会因为温度等外部环境的影响,使得不准确。
[单片机]
GD32 MCU超频后无法再次下载程序的解决办法
我们知道,MCU的系统时钟主频就相当于人的心跳或脉搏,为所有的工作单元提供时间基数,所以一般在程序最开始的地方都需要进行主频配置。 GD32固件库中提供了多种宏定义,可以很方便的将系统时钟配置为想要的频率。 GD32固件库中所用的外部晶振配置一般为8M或25M,如果想要使用其他频率的晶振,可以参考FAQ《更改晶振后如何修改配置》。 有的小伙伴在做好PCB后,将程序下载进去发现运行异常,想要仿真查下原因时,发现下载不了程序了,这时候就要注意,是不是板子上的晶振和程序中配置的不匹配?比如程序中使用的晶振大小为8M,但板子上的是12M的晶振,结果你以为配置的是120M的主频,实际变成了180M了,这超频可太多了,当然就无法再下
[单片机]