STM32F4工程模板建立与时钟的设置方法

来源:互联网 发布:未来教育计算机二级vb 编辑:程序博客网 时间:2024/06/03 21:03
当你使用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自己查阅手册吧。

原创粉丝点击