正点原子wukong开源飞控时钟配置之stm32CubeMX

本文详细指导如何通过STM32CubeMX配置时钟,重点讲解如何设置外部晶振、PLL及USB时钟,解决定时器3 84MHz PWM问题,并演示如何使用HAL库查看系统时钟频率。涉及关键步骤和代码实例,适合嵌入式开发人员参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
数字来源下面,go to define就能找到
在这里插入图片描述
再对照一下,这个说明还没改过来
在这里插入图片描述

重点来了:进过上面那些参数配置,各外设时钟配置成多少了?
使用stm32CubeMX直观了解一下:
首先打开RCC时钟,使能外部晶振作为时钟,才能修改
在这里插入图片描述

硬件接的是8M外部晶振,这改为8
在这里插入图片描述
修改时发现 PLL_Q 是灰色的,改不了
在这里插入图片描述
需要修改USB,这个时钟是USB的
在这里插入图片描述
最终结果:
在这里插入图片描述
可看到定时器3所在总线是APB1,84M,
在这里插入图片描述
飞控利用这个定时器生成驱动电调的PWM
在这里插入图片描述
验证定时器3时钟,频率84M
在这里插入图片描述

怎么查看时钟时钟呢?

添加以下代码(注意代码放的位置)再调试:
uint32_t SysClockFreq=0;
uint32_t PCLK2Freq=0;
uint32_t PCLK1Freq=0;
uint32_t HCLKFreq=0;
SysClockFreq=HAL_RCC_GetSysClockFreq();
PCLK2Freq=HAL_RCC_GetPCLK2Freq();
PCLK1Freq=HAL_RCC_GetPCLK1Freq();
HCLKFreq=HAL_RCC_GetHCLKFreq();
先初始化为0,便于观察
在这里插入图片描述
在运行完HAL_Init();之后,进入SystemClock_Config();函数前:
在这里插入图片描述

说明HAL_Init();初始化时,对时钟有做操作,都初始化为16M,简单初始化一下

运行完SystemClock_Config();函数后:

在这里插入图片描述
说明这个时候才按要求真正的初始化好了时钟

定时器挂载在不同总线:
在这里插入图片描述

APB1

在这里插入图片描述

APB2

在这里插入图片描述

AHB1

在这里插入图片描述

AHB2

在这里插入图片描述

类似可看我这篇,做个对比
MiniFly Firmware V1.1开源四轴代码分析七:系统时钟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值