资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

STM32F4xx那点事(二)——系统时钟的配置

每次接触一款新的单片机,我都会很好奇该单片机的系统时钟是多少MHz,怎样才能达到Datasheet中描述的最大系统时钟,该单片机的外设的时钟会是多少MHz呢?如果要使用延时,我怎么编写程序才能实现精准的延时呢?我认为这些问题是我开始接触新单片机之前需要了解的。

成都创新互联公司于2013年创立,先为南召等服务建站,南召等地企业,进行企业商务咨询服务。为南召企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

对于每款ARM Cortex-M系列单片机而言,厂商为了更好的推广自己的单片机,同时方便设计人员使用,降低产品开发周期,都会将该单片机的外设相关寄存器以及外设的相关函数都实现并打包,放在官方网站上免费供大家使用。STM32F405RG的标准外设库还包含有DSP核的各种运算函数。如果需要,可以从http://www2.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32-standard-peripheral-libraries/stsw-stm32065.html#下载。

如果使用标准外设库,我们可以根据标准外设库中的system_stm32f4xx.c文件中的代码分析可知:

#if defined(STM32F40_41xxx) || defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F401xx) || defined(STM32F469_479xx)
 #define PLL_M      25
#elif defined (STM32F446xx)
 #define PLL_M      8
#elif defined (STM32F410xx) || defined (STM32F411xE)
 #if defined(USE_HSE_BYPASS)
  #define PLL_M      8    
 #else /* !USE_HSE_BYPASS */
  #define PLL_M      16
 #endif /* USE_HSE_BYPASS */
#else
#endif
#if defined (STM32F40_41xxx)
#define PLL_N      336
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P      2
#endif
#if defined(STM32F40_41xxx)
  uint32_t SystemCoreClock = 168000000;
#endif

根据编程手册关于时钟寄存器的内容,可知

PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N 

SYSCLK=PLL_VCO/PLL_P

式中,HSE_VALUE表示单片机外接晶振的频率,HSI_VALUE表示单片机内部振荡器的频率,本实验板使用的是外部25MHz的晶振,根据程序中的配置,我们可以计算出SystemCoreClock =168000000。


标题名称:STM32F4xx那点事(二)——系统时钟的配置
网站链接:http://cdkjz.cn/article/pjjhdg.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220