自学内容网 自学内容网

GD32F470Z外部晶振不起振

亲测,主要的原因是因为系统配置里面选择的晶振,选择内部还是外部的无源晶振。

1.无源晶振

打开startup_gd32f450_470.s这个起始文件。

                ​​​​​​​        ​​​​​​​        

找到SystemInit。

跳进去这个函数。

在这个函数里面最底下找到system_clock_config();

然后跳进去这个函数。

这里我的外部晶振使用的是25M,就用25M来举例,如果使用别的,找到对应的晶振,操作相同。

然后跳进去所对应的晶振。

这里我用的GD32F470Z,芯片,所以找到对应的宏定义。然后进行定义。

这里__SYS_OSC_CLK系统的时钟使用的是内部晶振__IRC16M,所以修改为外部晶振__HXTAL

这里就已经把系统的时钟定义为外部时钟,这里外部时钟是不是我们所用25M,需要去查看。

HXTAL_VALUE,就是外部时钟的值,跳进去看看。

是25M,没问题,如果不是你所用的晶振的值,修改为你所用的晶振的值。

这样外部晶振的值也就设置好了。

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

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

接下来就是测试,将示波器来查看晶振的波形,就是将示波器的夹子连接晶振旁边的数字地,如果连的是模拟或者电源进来的地也能出来结果就是不太平稳。另一端连接晶振的一脚,结果如下:

2.使用外部有源晶振

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

rcu_osci_bypass_mode_enable(RCU_HXTAL);

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

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


原文地址:https://blog.csdn.net/mutou8541/article/details/145136705

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!