当前位置: 首页 > article >正文

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);

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

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


http://www.kler.cn/a/504220.html

相关文章:

  • C#补充----反射,特性,迭代器,特殊语法,值类型运用类型。
  • golang运维开发-gopsutil(1)
  • 14X505-1《火灾自动报警系统设计规范图示》中相关数据和总线制的个人理解
  • 【微信小程序】5|我的页面 | 我的咖啡店-综合实训
  • 泛目录和泛站有什么差别
  • Android Room 报错:too many SQL variables (code 1 SQLITE_ERROR) 原因及解决方法
  • 【Hive】新增字段(column)后,旧分区无法更新数据问题
  • 1.13 多线程编程
  • 社群团购项目运营策略的深度剖析:融合链动2+1模式、AI智能名片与S2B2C商城小程序的综合应用
  • EasyExcel - 行合并策略(二级列表)
  • Elasticsearch:向量数据库基础设施类别的兴衰
  • 易我视频照片修复EaseUS Fixo Technician
  • 简聊MySQL并发事务中幻读、虚读问题的解决方案
  • GPU算力平台|在GPU算力平台部署Qwen-2通义千问大模型的教程
  • sniffer 日志分析吞吐问题
  • 结合night compute分析 利用tensor core 优化K值较大的矩阵乘(超过cublas50%)
  • vue的KeepAlive应用(针对全部页面及单一页面进行缓存)
  • 精通Python (10)
  • 【Linux】8.Linux基础开发工具使用(2)
  • React中的key有什么作用?
  • RabbitMQ-消息入队
  • HarmonyOS NEXT应用开发边学边玩系列:从零实现一影视APP (二、首页轮播图懒加载的实现)
  • SQL刷题快速入门(二)
  • ClickHouse-CPU、内存参数设置
  • 在Linux系统中无网络安装Nginx并配置负载均衡
  • 41_Lua函数