你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f4xx需要初始化主频吗?

[复制链接]
powder-320203 提问时间:2016-4-15 20:17 /
stm32f1xx我们知道是需要MRCC_Init();初始化主频的。stm32f4xx需要初始化主频吗?现在st管网上很难下载到固件例程,这里请大侠帮帮忙。谢谢!
收藏 评论1 发布时间:2016-4-15 20:17

举报

1个回答
Angel_YY 回答时间:2018-3-9 14:36:57
STM32F4启动与STM32F10X不同,时钟已经默认配置好。
STM32F4的启动文件:startup_stm32f4xx.s 内容如下
  1. Reset_Handler   PROC  
  2.                        EXPORT  Reset_Handler             [WEAK]  
  3.                        IMPORT  SystemInit  
  4.                        IMPORT  __main  
  5.   
  6.                       LDR     R0, =SystemInit  
  7.                       BLX     R0  
  8.                       LDR     R0, =__main  
  9.                       BX      R0  
  10.                       ENDP  
复制代码
可以看出,在进入main函数之前,系统调用了SystemInit函数。
SystemInit函数位于system_stm32f4xx.c文件中.此文件提供几个宏定义可以设置各个时钟:
  1. /************************* PLL Parameters *************************************/  
  2. #if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) || defined (STM32F401xx)  
  3. /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */  
  4. #define PLL_M      8  
  5. #else /* STM32F411xE */  
  6. #if defined (USE_HSE_BYPASS)  
  7. #define PLL_M      8      
  8. #else /* STM32F411xE */     
  9. #define PLL_M      16  
  10. #endif /* USE_HSE_BYPASS */  
  11. #endif /* STM32F40_41xxx || STM32F427_437xx || STM32F429_439xx || STM32F401xx */   
  12.   
  13.   
  14. /* USB OTG FS, SDIO and RNG Clock =  PLL_VCO / PLLQ */  
  15. #define PLL_Q      7  
  16.   
  17.   
  18. #if defined (STM32F40_41xxx)  
  19. #define PLL_N      336  
  20. /* SYSCLK = PLL_VCO / PLL_P */  
  21. #define PLL_P      2  //2            //2---168M   4---84M  
  22. #endif /* STM32F40_41xxx */  
  23.   
  24.   
  25. #if defined (STM32F427_437xx) || defined (STM32F429_439xx)  
  26. #define PLL_N      360  
  27. /* SYSCLK = PLL_VCO / PLL_P */  
  28. #define PLL_P      2  
  29. #endif /* STM32F427_437x || STM32F429_439xx */  
  30.   
  31.   
  32. #if defined (STM32F401xx)  
  33. #define PLL_N      336  
  34. /* SYSCLK = PLL_VCO / PLL_P */  
  35. #define PLL_P      4  
  36. #endif /* STM32F401xx */  
  37.   
  38.   
  39. #if defined (STM32F411xE)  
  40. #define PLL_N      400  
  41. /* SYSCLK = PLL_VCO / PLL_P */  
  42. #define PLL_P      4     
  43. #endif /* STM32F411xx */  
  44.   
  45.   
  46. /******************************************************************************/
复制代码
STM32F407为例,筛选可用信息如下:
  1. /************************* PLL Parameters *************************************/   
  2. /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */   
  3. #define PLL_M      8  
  4. #define PLL_N      336   
  5.   
  6. /* SYSCLK = PLL_VCO / PLL_P */   
  7. #define PLL_P      2   
  8.   
  9. /* USB OTG FS, SDIO and RNG Clock =  PLL_VCO / PLLQ */   
  10. #define PLL_Q      7   
  11.   
  12. /******************************************************************************/  
复制代码
而晶振频率则是在文件stm32f4xx.h中进行设置:
外部晶振:
  1. #if !defined  (HSE_VALUE)   
  2.   #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */  
  3.    
  4. #endif /* HSE_VALUE */
复制代码
综上,如果使用外部晶振8MHz,则可以得出默认配置中:
锁相环压腔振荡器时钟PLL_VCO =(HSE_VALUE/PLL_M)* PLL_N=8/ 8* 336 = 336MHz
系统时钟SYSCLK = PLL_VCO / PLL_P=336 / 2 = 168MHz
USB,SD卡时钟 = PLL_VCO / PLLQ=336 / 7 = 48MHz


评分

参与人数 1蝴蝶豆 +5 收起 理由
zero99 + 5

查看全部评分

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版