当你使用ST官网的STD标准库或者HAL库的时候,首先解决的就是时钟的配置问题,时钟就像一个人的心脏,心脏不好更别谈其他的工作了,闲话少说,关于STM32的时钟设置我们先从搭建Keil的工程模板开始。我们这次使用的是最新版的F4的STM32F4xx_StdPeriph_Driver库,版本1.8。具体请继续往下看。
1. 新建立Keil工程命名STM32F4_STD_Template,在Select Device for Target 对话框中,选择STM32F427VITx,这里一定要根据自己使用的芯片具体进行选择,当然官网的外设库也要与之匹配才行,如果没有安装支持包请转至:http://www.keil.com/dd2/pack/, 之后点击OK。
2. 在弹出的Manage Run—time Environment窗口中根据需要 进行选择。也可直接点击OK,例如我想要使用DSP指令,则展开CMSIS选择DSP项,CORE这项因为我们要自己添加内核支持文件,所以这里就不进行选择。Keil中自带printf功能,说白了就是重定向,不过这得需要SWDIO、SWCLK、SWO、Vcc、GND5根线才行,我吃过这方面的亏所以在这里提醒下各位网友。好了那实现Keil的printf功能需要怎么设置呢?接下来展开Compiler项,在展开菜单中展开I/O项具体设置见下图。启动文件我们不在这里添加。稍后我会写怎么使用Manage Run-time Environment来快速创建Keil工程。之后点击ok即可。
3. 点击工具栏的“品”字样的图标或者在工程窗口中右击Target1选择Manage project Items,在Manage project Items窗口中修改Project Targets中Target1为“STM32F427VIT6”,Groups 中添加CMSIS、USER、CORE、STM32F4xx_StdPeriph_Driver,在工程目录也建立相应的文件夹,之后点击OK,如下图:
4. 复制固件库中的Libraries目录下的STM32F4xx_StdPeriph_Driver目录中的所有文件到工程目录里的STM32F4xx_StdPeriph_Driver文件夹下,打开en.stm32f4_dsp_stdperiph_lib\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Project\STM32F4xx_StdPeriph_Templates目录将main.c、main.h 、stm32f4xx_conf.h、stm32f4xx_it.c、stm32f4xx_it.h、system_stm32f4xx.c六个文件复制到工程目录的USER目录下,再将en.stm32f4_dsp_stdperiph_lib\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include目录下的stm32f4xx.h、system_stm32f4xx.h复制到CMSIS目录中,再将en.stm32f4_dsp_stdperiph_lib\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm目录中的startup_stm32f427_437xx.s复制到工程目录CMSIS中,这里的引导文件要根据自己使用的芯片去选择。
5. 再到Keil中的相应目录添加相应的文件,添加方法为点击“品”字图标,进入Manage project Items窗口,选中一个组点击右下角的Add Files...添加文件。添加完成的目录如下:
6. 现在编译的话会出很多错,我们还需要对工程进行设置,点击品字旁边的类似剪刀的按钮,进入Options for Target“xxx”点击C/C++选项卡在Preprocessor Symbols中添加STM32F427_437xx,USE_STDPERIPH_DRIVER,前者根据 自己的芯片进行选择,后者表示使用标准库。在include Paths中添加头文件目录。之后点击OK.
7. 到此工程模板建立完成。
---------------------------------------完-------------------------------------美------------------------------------分------------------------------------割---------------------------------线----------
高速外部时钟设置
文件:stm32f4xx.h
此文件需要修改的量为:HSE_VALUE,为外部高度时钟频率,单位为Hz,可以在本文件内重新定义,也可以直接修改,也可以根据自己的需要进行条件预编译,实现方法如下:
#if defined(STM32F40_41xxx) || defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F401xx) || \
defined(STM32F410xx) || defined(STM32F411xE) || defined(STM32F469_479xx)
#if !defined (HSE_VALUE)
#if defined (STM32F427_437xx)
#define HSE_VALUE ((uint32_t)24000000)
#elif defined (STM32F40_41xxx)
#define HSE_VALUE ((uint32_t)24000000)
#else
#define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
#endif
#endif /* HSE_VALUE */
#elif defined (STM32F412xG) || defined(STM32F413_423xx) || defined(STM32F446xx)
#if !defined (HSE_VALUE)
#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */
#endif
PLL锁相环参数设置(PLL_M、PLL_Q、PLL_N)
在文件system_stm32f4xx.h中搜索PLL Parameters即可定位,根据宏定义来确定参数的值,具体的系统时钟计算方法:系统时钟频率=HSE时钟频率/PLL_M*PLL_N/PLL_P。具体看上面的时钟树。剩余的PLL_Q、PLL_R自己查阅手册吧。
上一篇:STM32F407的时钟配置(system_config.c浅见)
下一篇:STM32F4板子晶振更改后时钟的配置
推荐阅读最新更新时间:2024-03-16 16:10
设计资源 培训 开发板 精华推荐
- 有奖直播:Keysight《AI热潮下新技术》系列讲座
- 《瑞萨电子低功耗MCU实战手册》来了,快去下载赢取好礼!
- 你评论,我送礼!《玩转TI MSP430 Launchpad》TI社区与EEWORLD联合首发!
- 【下单全额返现,300元封顶,不限产品】MPS商城钜惠体验季!
- 【答题有奖】赛灵思工业与医疗专题有奖问答
- 最后一周:免费获取Pasternack《RF产品选型指南》2018 印刷版!
- 有奖看视频|2022台北国际电脑展——美光主题演讲精选
- 助力雅特力成长,说说你与雅特力的故事
- 【世健的ADI之路主题游】 第三站:了解物联网前沿器件与方案,打卡赢Kindle、《新概念模拟电路》
- 答疑专场:模拟世界的最重要构成——信号链与电源