1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > stm32产生100k时钟信号_stm32f105/107系统时钟变慢

stm32产生100k时钟信号_stm32f105/107系统时钟变慢

时间:2023-09-25 05:42:47

相关推荐

stm32产生100k时钟信号_stm32f105/107系统时钟变慢

问题:最近把之前stm32f103平台的工程拿到stm32f105平台编译,编译通过了,但是烧录运行时发现系统时钟慢了3倍左右。

我先上一张stm32的时钟树吧

1.通过打印SYSCLK=72MHz,PCLK1=36MHz,PCLK2=72MHz,HCLK=72MHz,ADCCLK=36MHz。系统时钟打印的都是正确的,那只有外部晶振用的不对,后来查看stm32f10x.h中有这么一段宏定义:

#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 */

看见没?库默认使用的是25MHz晶振,而我使用的是8MHz。

那么最简单粗暴的解决方案是我把晶振也换成25MHz,一切问题解决!

那么并没有结束,如果我使用8MHz晶振该如何呢?

1.首先要先把#define HSE_VALUE ((uint32_t)25000000) 改为:8000000.

2.在system_stm32f10x.c中有这么一个函数

static void SetSysClockTo72(void)

{

__IO uint32_t StartUpCounter = 0, HSEStatus = 0;

............................................

#ifdef STM32F10X_CL

/* Configure PLLs ------------------------------------------------------*/

/* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */

/* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */

RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL |

RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC);

RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 |

RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5);

..........................................

}

这其中HSE 使用的是25MHz,所有是除以5乘以8=40MHz。

但我们使用的是8MHz,可以除以2乘以10=40MHz。

修改后:

/* Configure PLLs ------------------------------------------------------*/

/* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */

/* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */

RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL |

RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC);

RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV2 | RCC_CFGR2_PLL2MUL10 |

RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5);

编译,运行,问题解决。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。