GD32常见时钟配置类问题
前言描述
本文仅为个人的所遇问题的总结记录,谢谢!
问题1:寄存器数据写入失败
问题描述:在使用GD32F470 RTC外设时,反馈其他功能正常,但RTC寄存器总是写入失败
问题排查:
1、使用固件库带有的RTC例程在硬件上测试,RTC寄存器写入正常,代码正常运行。
2、将测试能运行正常的代码复制到异常的程序中,测试RTC寄存器依然写入不进去。
3、将其他异常代码全部注释掉,保留RTC测试代码,代码运行正常。
4、使用异常代码在配置RTC寄存器之前,分别获取CK_SYS、CK_AHB、CK_APB1、CK_APB2 的时钟频率,发现时钟都被配置为240Mhz。
5、将APB1时钟修改为60Mhz后,测试数据写入寄存器正常。
问题原因:
查看GD32F470使用手册,RTC是连接在APB1时钟总线上
由于APB1总线被配置为240Mhz,APB1处于超频状态,时钟不稳定,导致寄存器写入失败。
问题2:同样的代码,修改软件中的芯片型号后,设备运行变慢
问题描述:硬件使用GD32F130C8T6,软件选择GD32F130C6T6,设备运行正常。后面使用中,想将软件型号选择修改为GD32F130C8T6,但修改后,设备运行变的非常缓慢。
问题排查:
1、软件选择GD32F130C6T6,运行获取时钟频率函数,发现CK_SYS和CK_AHB时钟频率为72Mhz
2、软件选择GD32F130C8T6,运行获取时钟频率函数,发现CK_SYS和CK_AHB时钟频率为8Mhz
3、在选择GD32F130C8T6后,使用代码配置系统时钟为72Mhz后,设备运行正常
4、由于修改芯片型号导致时钟配置错误,同时GD32F130系统最高时钟频率为48Mhz,异常代码将时钟频率配置为72Mhz,已经处于超频状态。
问题原因:
资料截图:
官网资料截图:
资料和官方资料有差异,在使用时需要注意资料的更新