stm32外部时钟为12M时怎么办?

STM32主频调整指南

由于stm32的库默认是外部晶振8M的情况下实现的,所以配置波特率的时候也是按8M,包括主频,如果用12M晶振就需要改动几个地方:
在system_stm32f10x.c中找到相应类型的文件,进行如下修改。
1)72M主频:
8M时:
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);
12M:
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6);
2)stm32f10x.h中修改:
*#define HSE_Value ((uint32_t)12000000) /!< Value of the External oscillator in Hz /*

这里写图片描述
这里写图片描述

如果调试时遇到串口输出不正确的时候,可以直接查看stm32的内部时钟是多少。
举例说明:
/*

*/
void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks);
RCC_ClocksTypeDef ClockInfo;
int main(void)
{
RCC_GetClocksFreq(&ClockInfo);

/* Infinite loop */

while ( 1 )
{

}

}
通过观察ClockInfo这个结构体,可以清楚直观的看到配置的内部时钟信息。

您可以按照以下步骤来配置STM32系统钟为外部时钟源72M: 1. 首先,需要使能外部时钟源。如果您使用的是标准的STM32开发板,可能已经有一个外部时钟源(如晶体振荡器)连接到了MCU的钟输入引脚。您需要在代码中使能这个外部时钟源,可以通过RCC_ClockSecuritySystemCmd()函数实现。例如,如果您使用的是晶体振荡器,可以使用以下代码使能它: RCC_HSEConfig(RCC_HSE_ON); //使能HSE while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET); //等待HSE稳定 2. 接下来,需要将外部时钟配置为PLL输入钟。PLL是一种将输入钟倍频的电路,可以将外部时钟源的频率提高到MCU需要的频率。您可以使用以下代码将外部时钟配置为PLL输入钟: RCC_PLLConfig(RCC_PLLSource_HSE, 9, 1); //配置PLL输入钟为HSE/9,倍频系数为1 RCC_PLLCmd(ENABLE); //使能PLL while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //等待PLL稳定 注意,这里的倍频系数和分频系数需要根据您使用的外部时钟源的频率进行调整。例如,如果您使用的是8MHz的晶体振荡器,那么PLL输入钟为8MHz/9=0.8889MHz,倍频系数为72,分频系数为2,输出钟频率为0.8889MHz*72/2=32MHz。 3. 最后,需要将PLL输出钟作为系统钟源。您可以使用以下代码将PLL输出钟作为系统钟源: RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //将PLL输出钟作为系统钟源 while (RCC_GetSYSCLKSource() != RCC_CFGR_SWS_PLL); //等待系统钟源切换完成 这样,您就成功将STM32系统配置外部时钟源72M了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值