STM32/GD32学习指南-踩坑之(一)外部晶振配置,初始化失败,不起振

文章详细介绍了如何在GD32F450芯片上配置使用外部无源和有源晶振,包括修改系统时钟配置、宏定义以及处理RCU_CTL_HXTALSTB标志位问题。作者分享了在使用特定型号GD32F450VGH6时遇到的晶振不支持问题,提醒读者避免类似坑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GD32使用外部有源晶振和无源晶振的问题,型号为GD32 F450

一、GD32配置使用外部晶振

1.使用外部无源晶振

找到startup_gd32f450_470.s汇编文件,找到SystemInit()函数跳转进去

在底部找到system_clock_config()函数,再次跳转进去

选中宏定义:__SYSTEM_CLOCK_200M_PLL_IRC16M,跳转,如图

将内部时钟定义注释掉,打开相应的外部时钟的定义:__SYSTEM_CLOCK_200M_PLL_25M_HXTAL

根据自己的需求打开对应的系统时钟配置定义,比如我用的是外部25MHZ晶振,系统时钟配置为200MHZ,如果定义中没有自己想要的时钟转换关系,则需要自己编写对应的时钟配置函数,选取合适的分频倍频系数等。

 HXTAL_VALUE宏定义需要进行修改,改为外部时钟实际的频率,我用的25M,即改为25000000

同时__SYS_OSC_CLK宏定义改为:__HXTAL

 跳转到__SYSTEM_CLOCK_200M_PLL_25M_HXTAL对应的系统时钟配置函数:system_clock_200m_25m_hxtal(void)

此函数内即为配置系统各种总线时钟的代码,可根据自己需求修改。

2.使用外部有源晶振

使用有源晶振的话,需要在上述system_clock_200m_25m_hxtal(void)中添加一句话,在RCU_CTL |= RCU_CTL_HXTALEN;前面添加:

rcu_osci_bypass_mode_enable(RCU_HXTAL);

即启用旁路模式-也就是有源外部晶振

注意:无源外部晶振如果添加这句话,会一直卡死在该函数里面,导致时钟初始化失败。

二、踩坑过程

        开发过程中,遇到GD32初始化时钟一直卡在system_clock_200m_25m_hxtal(void)函数里面,卡在了RCU_CTL_HXTALSTB标志位的检测。该标志位表示晶振初始化是否稳定,为硬件置位,软件无法操作。刚开始尝试了各种网上的软件办法去解决,都没有用,还修改过硬件一些电路,最后发现是使用的那个型号的GD32片子有问题,其根本不支持外部晶振起振,有源无源都不支持,真的是贼坑,浪费了很多时间,具体型号是GD32 F450 VGH6,希望大家以后不要踩坑。

希望大家点赞、收藏、关注哦!!!ヾ(o◕∀◕)ノ

GD32是指在使用GD32芯片时,外部晶振无法正常启动运行的情况。根据引用和引用的内容,这可能是因为某些型号的GD32芯片支持外部晶振的起,无论是有源晶还是无源晶都无法使用。具体来说,引用中提到的GD32 F450 VGH6型号芯片就属于这种支持外部晶振的类型。 要解决这个问题,可以考虑使用内部晶取代外部晶振。根据引用的内容,当外部晶振无法起时,系统会自动切换到内部晶。因此,可以在程序中进行相应的设置,使系统可以正常运行。 另外,如果想继续使用外部晶振,可以根据引用的内容,在相应的初始化函数中添加RCU_CTL |= RCU_CTL_HXTALEN;这句话来启用有源晶。 总结起来,当遇到GD32的问题时,可以考虑使用内部晶替代外部晶振,或者根据具体情况添加相应的代码来启用有源晶。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [GD32替换STM32启动问题](https://blog.csdn.net/qq_37016048/article/details/125574506)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [STM32/GD32学习指南-之(外部晶振配置初始化失败](https://blog.csdn.net/qq_38584212/article/details/131164735)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

披着假发的程序唐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值