STM32外部晶振8M更改为25M

注:修改F4去stm32f4xx.h/system_stm32f4xx.c , 修改F3去stm32f10x.h/system_stm32f10x.c


修改的地方之一:stm32f4xx.h里面的HSE_VALUE,系统默认采用外部8M晶振,所以 #define HSE_VALUE    ((uint32_t)8000000) ,现把它修改为 #define HSE_VALUE    ((uint32_t)25000000)  


修改的地方之二:系统通过PLL倍频到168M,所以在配置PLL的时候,也需要作相应的修改。在system_stm32f4xx.c里,需要把PLL_M修改为25,不然会超频到336M的主频,使STM32不能正常工作,常见表现为掉进HardFault_Handler()中。如果固件库为V1.5.0,就不需要改(无此内容)。
### STM32标准库配置以支持25MHz晶振 为了将STM32的标准库配置从8MHz晶振改为25MHz,主要涉及修改系统时钟设置以及PLL(锁相环)参数。具体操作如下: #### 修改硬件连接 确保使用的开发板上已经安装了25MHz的晶体振荡器,并且正确连接到MCU的相关引脚。 #### 配置RCC寄存器 通过调整`SystemInit()`函数中的相关代码来改时钟源频率。这部分通常位于启动文件(`startup_stm32f10x.s`)或初始化文件中。对于基于STM32F1xx HAL库的新项目可以直接编辑`main.c`内的相应部分;而对于旧版本则需找到对应的初始化位置[^1]。 ```c // 假设使用的是 STM32F103系列 void SystemClock_Config(void){ RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; // 初始化HSE (High Speed External) Oscillator to 25 MHz RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; // 设置 PLL 输出为 72 MHz, 即 HSE * 9 if(HAL_RCC_OscConfig(&RCC_OscInitStruct)!=HAL_OK){ Error_Handler(); } // Initialize SysTick with the new frequency value. RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; RCC_ClkInitStruct.APB2CLK Divider = RCC_HCLK_DIV1; if(HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2)!=HAL_OK){ Error_Handler(); } } ``` 上述代码片段展示了如何启用外部高速振荡器(HSE),并通过PLL将其倍频至所需的系统工作频率(此处设定为目标值72MHz)[^2]。注意这里假设目标频率仍保持不变,即最终希望达到72MHz的工作频率。如果需要不同的输出频率,则应适当调整PLL乘法因子(RCC_PLL_MULX)。 #### 新Flash等待周期 当提高CPU运行速度时,可能还需要增加FLASH访问延迟以匹配高的处理速率。这一步骤同样是在`SystemClock_Config()`函数内完成,一般情况下只需简单调用一次`__HAL_FLASH_SET_LATENCY(__HAL_FLASH_GET_LATENCY() + 1)`即可满足需求。 #### 测试验证 最后编译程序并下载到目标设备上测试新配置的效果。确认所有功能正常运作之后,可以继续后续的应用开发。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值