STM32F407ZG单片机晶振由例程默认推荐的8M换为自定义的4-26M时的注意事项
2012-11-05 22:07
288 查看
相信作为一名STM32新手,大家都是从官网上下载例程来学习。现在firmwave的最新版本为1.1.0,下载地址为http://www.st.com/stonline/stappl/resourceSelector/app?page=resourceSelector&doctype=FIRMWARE&SubClassID=1521
在这个例程里面,默认用到的是8M的外部晶振,现在就有一个问题,如果外部晶振不是8M,而是其他比如16M时,我们应该修改哪些地方才能让程序正常运行呢。
以下由8M换为16M为例。
修改的地方之一:stm32f4xx_conf.h里面的HSE_VALUE,系统默认采用外部8M晶振,所以 #define HSE_VALUE ((uint32_t)8000000) ,现把它修改为 #define HSE_VALUE ((uint32_t)16000000)
修改的地方之二:系统通过PLL倍频到168M,所以在配置PLL的时候,也需要作相应的修改。在system_stm32f4xx.c里,默认的配置为以下:
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
#define PLL_M 8
#define PLL_N 336
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P 2
/* USB OTG FS, SDIO and RNG Clock = PLL_VCO / PLLQ */
#define PLL_Q 7
需要把PLL_M修改为16,不然会超频到336M的主频,使STM32不能正常工作,常见表现为掉进HardFault_Handler()中。
在这个例程里面,默认用到的是8M的外部晶振,现在就有一个问题,如果外部晶振不是8M,而是其他比如16M时,我们应该修改哪些地方才能让程序正常运行呢。
以下由8M换为16M为例。
修改的地方之一:stm32f4xx_conf.h里面的HSE_VALUE,系统默认采用外部8M晶振,所以 #define HSE_VALUE ((uint32_t)8000000) ,现把它修改为 #define HSE_VALUE ((uint32_t)16000000)
修改的地方之二:系统通过PLL倍频到168M,所以在配置PLL的时候,也需要作相应的修改。在system_stm32f4xx.c里,默认的配置为以下:
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
#define PLL_M 8
#define PLL_N 336
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P 2
/* USB OTG FS, SDIO and RNG Clock = PLL_VCO / PLLQ */
#define PLL_Q 7
需要把PLL_M修改为16,不然会超频到336M的主频,使STM32不能正常工作,常见表现为掉进HardFault_Handler()中。
相关文章推荐
- STM32F407ZG单片机晶振由例程默认推荐的8M换为自定义的4-26M时的注意事项
- STM32F407ZG单片机晶振由例程默认推荐的8M换为自定义的4-26M时的注意事项
- STM32F407ZG单片机晶振由例程默认推荐的8M换为自定义的4-26M时的注意事项
- struts2默认拦截器与自定义拦截器在使用时的注意事项
- 单片机晶振不起振经常遇到的问题及注意事项!
- struts2默认拦截器与自定义拦截器在使用时的注意事项
- cocos2dx 导出自定义模块注意事项
- 单片机嵌入式编程的五个注意事项
- 使用自定义framework 注意事项
- objective-c 自定义 NSDictionary 键类的注意事项
- 自定义HTTP头时的注意事项(转)
- 掌握自定义 LayoutManager(一) 系列开篇 常见误区、问题、注意事项,常用 API。
- Microchip单片机 使用malloc()函数的注意事项
- 自定义view分类和注意事项
- C++虚函数默认实参的注意事项
- 【UI】【View】自定义布局方法与注意事项(一)
- STM8系列单片机复用引脚烧写程序注意事项
- VB.NET自定义组件方法及注意事项
- 软件项目演示的注意事项 推荐
- JDK 64 位 或自定义jre 用exe4j 打包 exe 注意事项