本文主要是介绍GD32固件库里时钟配置时的神秘代码?高频切低频时芯片会发生什么,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在GD固件库的时钟配置函数里看到这样一段神秘代码,研究分析后不得不佩服原厂固件库里的细节处理:
查看定义是一段代码,对AHB 2分频后延时了一段时间:
在这段代码后面可以看到程序将RCU_CFG0和RCU_CFG1两个时钟寄存器做了复位:
如果是程序复位启动后第一次执行这段代码,应该是没有什么意义的,但产品设计时一般都会有一个BootLoader和APP两段程序,当BootLoader跳转到APP时,MCU的时钟已经处于一个高频状态,直接执行RCU的复位意味着时钟会立刻切到内部8M运行。
而通过查看DATASHEET,可以看到MCU在最大主频下和默认复位主频下的电流差距是很大的:
这样的内部电流瞬间变化一般会导致内部电源的波动,这种波动情况下执行的指令是不可靠的,如果硬件设计时MCU去耦电容设计不合理,很可能加剧这个波动,此时如果指令错误了那很可能会跑飞进入hardfault。
而GD固件库里这个神秘代码,在高频的情况下可以将系统时钟降低一半并延时等待稳定,最后再复位时钟寄存器降到8M的系统时钟。这样就让电流变化有一个过渡,避免了内部电源波动过大。
GD32MCU技术交流群:859440462
更多GD32 MCU相关咨询:单片机开发板_国产mcu视频_GD32 - 苏州聚沃电子科技有限公司
这篇关于GD32固件库里时钟配置时的神秘代码?高频切低频时芯片会发生什么的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!