我是靠谱客的博主 任性香氛,这篇文章主要介绍stm32f1更换晶振后程序的变动,现在分享给大家,希望可以做个参考。

首先查看晶振的规格,若为8Mhz,则在stm32f10x.h的第119行与第130行将值改为8000000,
对应位置代码如下

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#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)6000000) /*!< Value of the External oscillator in Hz */ /******************将6000000改为8000000*****************************/ #endif /* STM32F10X_CL */ #endif /* HSE_VALUE */ /** * @brief In the following line adjust the External High Speed oscillator (HSE) Startup Timeout value */ #define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500) /*!< Time out for HSE start up */ #define HSI_VALUE ((uint32_t)8000000) /*!< Value of the Internal oscillator in Hz*/ /*********************将6000000改为8000000************************/ /** * @brief STM32F10x Standard Peripheral Library version number

之后将下方代码放到main.c中,并视情况修改倍频数

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
void RCC_Configuration(void) {         ErrorStatus HSEStartUpStatus;       /* 复位系统时钟设置*/       RCC_DeInit();       /* 开启HSE*/                                                                                                                                  RCC_HSEConfig(RCC_HSE_ON);       /* 等待HSE起震并稳定*/       HSEStartUpStatus = RCC_WaitForHSEStartUp();          /* HSE是否起振成功 */       if(HSEStartUpStatus == SUCCESS)       {         /* HCLK(AHB)时钟源为SYSCLK 1分频*/         RCC_HCLKConfig(RCC_SYSCLK_Div1);             /* PCLK2时钟源为HCLK(AHB) 1分频 */         RCC_PCLK2Config(RCC_HCLK_Div1);          /* PCLK1时钟源为HCLK(AHB) 2分频 */         RCC_PCLK1Config(RCC_HCLK_Div2);         /* 设置FLASH延时周期为2 */         FLASH_SetLatency(FLASH_Latency_2);         /* 使能FLASH预取缓存 */         FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);         /* 选择锁相环(PLL)时钟源为HSE 1分频,倍频数为9,则输出频率为72MHz */         RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9 );         /***********采用8MHZ晶振,若要达到输出72MHZ,就需要9倍频*******/ /***********若采用6MHZ晶振,若要达到输出72MHZ,就需要12倍频*******/         RCC_PLLCmd(ENABLE);      /* 使能 PLL */          while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);        /* 等待 PLL 输出稳定 */         RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);    //选择SYSCLK的时钟源为PLL         while(RCC_GetSYSCLKSource() != 0x08)         {}       }       }  

最后

以上就是任性香氛最近收集整理的关于stm32f1更换晶振后程序的变动的全部内容,更多相关stm32f1更换晶振后程序内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(91)

评论列表共有 0 条评论

立即
投稿
返回
顶部