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

当你使用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自己查阅手册吧。

stm32f4hal库工程模板是为了方便使用STM32F4系列微控制器的HAL(Hardware Abstraction Layer)库而提供的一个项目起始模板STM32F4系列微控制器在嵌入式系统开发中具有广泛应用,HAL库为用户提供了一套抽象的硬件驱动接口,简化了开发过程,降低了学习和开发的难度。 stm32f4hal库工程模板通常包括以下几个重要部分: 1. 头文件和源文件:这些文件包含了使用HAL库所需的函数和宏定义。用户可以根据自己的需求调用相应的函数,完成对芯片内置外设的配置和控制。 2. 程序入口文件(main.c):这个文件是项目的入口,包含了主函数(main),可以在这个函数中初始化外设、配置中断、执行任务等。 3. 配置文件:这些文件包含了微控制器的各种配置选项,比如时钟配置、中断配置、GPIO配置等。用户可以根据自己的硬件环境和需求进行相应的配置。 4. 驱动文件:这些文件是HAL库的底层驱动文件,提供了对各种外设的底层操作接口,包括GPIO、USART、SPI、I2C等。用户可以根据需要选择性地使用这些驱动文件。 使用stm32f4hal库工程模板可以大大简化项目的搭建和开发过程,用户只需关注自己的业务逻辑,而不必过多关注底层硬件的具体实现。同时,HAL库还提供了很多示例代码和文档,对于新手来说是一个很好的学习和入门平台。 总之,stm32f4hal库工程模板是一个便于开发人员快速搭建STM32F4系列微控制器项目的起始模板,通过引入HAL库和预先配置好的工程结构,帮助开发者更快捷、高效地进行嵌入式系统开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值