STM32运行过程中降低系统时钟频率

1. 概述

为了降低功耗,需要在运行过程中,降低STM32H7的系统时钟。之前没有用到过,降主频对外设会不会有什么影响,甚至导致死机等异常?问了问,都觉得直接降就可以了,没有问题的。
在STMF103测试了下,将72M降为16M,这里简单记录过程。基础工程STM32CubeMX使用之串口通信

2. 直接修改外部时钟

2.1 生成时钟函数

通过修改STM32CubeMX配置分频系数,得到72M和16M的时钟初始化函数:

2.1.1 设置系统时钟为16M:

在这里插入图片描述
生成code,得到SystemClock_Config(),将函数名称修改为SystemClock_Config_16M()。

2.1.2 配置时钟72M:

在这里插入图片描述
生成code,得到SystemClock_Config()。

2.2 测试降频

在main函数中增加测试代码:
在这里插入图片描述
结果发现只打印出第一句:
在这里插入图片描述
仿真查看,是设置16M时,HAL库返回失败:
在这里插入图片描述

3. 借助内部时钟

想到STM32在进入主函数,调用SystemClock_Config()之前是如何运行的呢?是内部时钟。那么就尝试下先将72M切换为内部时钟,再切换回16M外部时钟。

3.1 生成时钟函数

STM32CubeMX配置为使用内部时钟:
在这里插入图片描述
生成code,得到SystemClock_Config(),将函数名称修改为SystemClock_Config_HSI()。

3.2 测试降频

修改测试程序:
在这里插入图片描述
查看测试结果:
在这里插入图片描述

4. 直接降频失败原因

已经实现了降频,再来看下为什么直接改外部时钟会失败。仿真查看,最后返回错误是因为寄存器倍频值与传入不符:
在这里插入图片描述
分析HAL_RCC_OscConfig函数:
在这里插入图片描述
前半部分是设置时钟源,后半部分是设置锁相环PLL。直接由72M切换为16M,则判断PLL是系统时钟,且已经ON的状态,进入最下面的else分支。这时读取寄存器内的倍频值(72M),发现与传入的倍频值(16M)不相等,则返回HAL_ERROR。
在这里插入图片描述
从这里看出,如果再次配置72M,是可以配置成功的。测试了下也确实如此,可以重复配置系统时钟为72M,而不是最开始认为的不能再次设置。

为什么函数逻辑是这样的呢?查找了下HAL_RCC_OscConfig函数,结果找到一个链接,也是通过内部时钟来实现:STM32实战项目:HAL_RCC_OscConfig中程序卡死问题解决办法
根据链接方式,查找了下《STM32F10xxx参考手册中文版》,也找到了这个说明:
在这里插入图片描述

还是基础不太好吧。先上手用,用起来又没有回过头系统学习。


另外,调整主频后,需要重新初始化外设。测试比较简单,实际应用可能还需要先关闭外设,否则切换过程中有通信需求,是否会有影响?

  • 10
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32时钟树配置是指通过配置相关寄存器来设置STM32微控制器的时钟源和时钟分频。时钟树的配置对于STM32设备的正常运行和性能优化非常重要。时钟树配置决定了各个模块的时钟频率和时钟源的选取,包括系统时钟、外设时钟和总线时钟等。 在STM32CubeMX软件,提供了可视化的方式来配置STM32的时钟树,方便开发人员进行定制化的设置。通过STM32CubeMX,我们可以选择不同的时钟源以及设置时钟分频器来满足具体的需求。可以根据具体的应用要求,合理配置时钟树,以获得最佳的性能和功耗平衡。 配置STM32时钟树的步骤包括: 1. 打开STM32CubeMX软件并创建新的工程。 2. 在时钟树配置界面,选择合适的时钟源,例如内部RC振荡器、外部晶体振荡器或者外部时钟源等。 3. 根据实际需求配置各个模块的时钟频率和时钟源,例如CPU、外设、总线等。 4. 设置时钟分频器,根据需求进行精确的时钟分频,以满足系统的性能和功耗要求。 5. 生成代码并导出配置文件,以便在开发环境使用。 通过合理配置STM32的时钟树,可以实现对系统时钟的灵活控制,提高系统的稳定性和性能。同时,时钟树配置也是低功耗和EMC设计的关键,可以有效降低功耗和电磁干扰。 引用提供了详细介绍STM32时钟树配置和原理的文档,引用介绍了时钟树在STM32的重要性,引用推荐了可视化配置STM32时钟树的工具。这些资料可以帮助开发人员更好地理解和配置STM32的时钟树。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值