完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
STM32系列修改外部晶振以及代码的修改
很多初学者,用库函数开发STM32的时候不知道如何修改系统主频?不知道如何修改外部晶振频率? 这里,我们针对这两个问题,给大家做一个简单的教程。希望大家能够掌握,以后可以轻松修改主频 8M晶振修改为12M 主频72M不变 STM32F1的固件库,外部晶振频率的定义在stm32f10x.h里面,如下: [mw_shl_code=c,true]#if !defined HSE_VALUE #ifdef STM32F10X_CL #define HSE_VALUE ((uint32_t)25000000) /*!《 Value of the External oscillator in Hz */ #else #define HSE_VALUE ((uint32_t)8000000) /*!《 Value of the External oscillator in Hz */ #endif /* STM32F10X_CL */ #endif /* HSE_VALUE */[/mw_shl_code] 其中,HSE_VALUE就是外部晶振的频率,对通用型STM32,默认是8M,对互联型,默认是25M。 如果我们使用12M外部晶振,那么修改HSE_VALUE 的值为:12000000,即可,代码如下: [mw_shl_code=c,true]#if !defined HSE_VALUE #ifdef STM32F10X_CL #define HSE_VALUE ((uint32_t)25000000) /*!《 Value of the External oscillator in Hz */ #else #define HSE_VALUE ((uint32_t)12000000) /*!《 Value of the External oscillator in Hz */ #endif /* STM32F10X_CL */ #endif /* HSE_VALUE */[/mw_shl_code] 然后,还是使用72M的主频,在system_stm32f10x.c里面,有如下宏定义: #if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) /* #define SYSCLK_FREQ_HSE HSE_VALUE */ #define SYSCLK_FREQ_24MHz 24000000 #else /* #define SYSCLK_FREQ_HSE HSE_VALUE */ /* #define SYSCLK_FREQ_24MHz 24000000 */ /* #define SYSCLK_FREQ_36MHz 36000000 */ /* #define SYSCLK_FREQ_48MHz 48000000 */ /* #define SYSCLK_FREQ_56MHz 56000000 */ #define SYSCLK_FREQ_72MHz 72000000 #endif 默认定义了:SYSCLK_FREQ_72MHz 72000000,也就是72M,所以这里不用改,但是,事实上,修改主频为72M的是通过 SetSysClockTo72函数实现的,该函数核心代码如下: RCC-》CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); RCC-》CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLMULL9); #else /* PLL configuration: PLLCLK = HSE * 9 = 72 MHz */ RCC-》CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); RCC-》CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9); #endif /* STM32F10X_CL */ /* Enable PLL */ RCC-》CR |= RCC_CR_PLLON;其中,修改主频的核心代码为: RCC-》CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9); 通过RCC_CFGR_PLLMULL9将倍频系数设置为9,如果默认外部晶振是8M,那么刚好得到72M的频率。 不过,我们修改外部晶振为12M了,所以这里得改为6,修改后代码如下: RCC-》CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6); 8M晶振 16M晶振2分频 再倍频*9=72 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1960 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1741 浏览 1 评论
1213 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
803 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1766 浏览 2 评论
2010浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
863浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
304浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
655浏览 3评论
654浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-14 07:58 , Processed in 0.710755 second(s), Total 45, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191