STM32系列修改外部晶振以及代码的修改(f103、f105为例)

此文章为引用
正点原子详细讲解

刚刚接触STM32的时候,用的都是8M晶振。比如你想更换到为外部晶振为12M,但是主频仍想用72M的。该如何设置?或者想倍频到更高的主频该怎么修改?

例子就直接直接拿<正点原子>的例子吧!

属性原来现在
外部晶振8M12M
倍频96
主频72M72M

想从原来的8M修改到现在的12M,但是主频仍为72M,该如何修改:

(1)【设置外部晶振】打开stm32f10x.h,找到下图部分:

在这里插入图片描述

修改之前如上图一样,HSE_VALUE为外部晶振,如果你用的是f103的芯片,则修改下边这个为12M;

在这里插入图片描述

(2)【设置主频】打开system_stm32f10x.c,找到下图部分:

在这里插入图片描述

也可以根据自己的需要修改为56M、48M等;

(3)【设置倍频】打开system_stm32f10x.c,找到自己的想要的主频函数:

在这里插入图片描述

再找到这里(默认的情况下):

在这里插入图片描述

① 修改F103(外部晶振12M倍频到72M)

在这里插入图片描述

② 修改F105、F107(外部晶振12M倍频到72M):

在这里插入图片描述

正点原子的还有一个是F103倍频到128M的教程。单片机超频太多不稳定,建议先更换更快的晶振,在进行倍频到128M。

STM32F103系列微控制器通常需要通过外部晶体振荡器来提供精确的系统时钟。以下是设置外部8MHz晶振的基本步骤以及对应的C语言代码示例: 1. 首先,你需要配置GPIO管脚作为晶振的输入端口。例如,如果你选择PA9和PA10作为XTAL1和XTAL2,则可以这样做: ```c // 定义GPIO口映射 GPIO_InitTypeDef GPIO_InitStructure; // 设置GPIOA为推挽输出模式 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // Push-Pull Output GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; HAL_GPIO_Init(GPIOA, &GPIO_InitStructure); ``` 2. 接下来,连接外部晶振到相应的管脚上,并配置相应的时钟源(如PLL)使之锁定外部晶振频率。这通常涉及到系统时钟配置文件(SysTickConfig.h、SystemClock_Config.c等),其中可能包括以下代码: ```c // 配置 PLL (如果使用) RCC_PLLInitTypeDef RCC_PLLInitStruct; RCC_PLLInitStruct.PLLSource = RCC_PLLSOURCE_HSE; // 使用HSE作为源 RCC_PLLInitStruct.PLLM = 8; // 分频因子 M RCC_PLLInitStruct.PLLN = 336; // 锁定倍频系数 N RCC_PLLInitStruct.PLLP = RCC_PLLPRE_DIV2; // 输出分频 P RCC_PLLInitStruct.PLLQ = 7; // 锁定分频 Q HAL_RCC_PLLConfig(&RCC_PLLInitStruct); // 初始化并激活 PLL HAL_RCC_OscConfig(RCC_OscInitStruct); // 开启 HSE 和 PLL // 启动时钟发生器 HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5); // 设置时钟频率(比如 72 MHz 或者 144 MHz) ``` 这里假设你已经初始化了`RCC_OscConfig`结构体和`RCC_ClkInitStruct`,它们用于设置时钟源和最终系统频率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值