历史上的今天
返回首页

历史上的今天

今天是:2025年08月13日(星期三)

正在发生

2018年08月13日 | STM32F4工程模板建立与时钟的设置方法

2018-08-13 来源:eefocus

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


推荐阅读

史海拾趣

BJB公司的发展小趣事

在市场竞争日益激烈的环境下,BJB公司注重品牌建设和形象提升。公司加强了品牌宣传和推广力度,通过广告宣传、媒体报道等多种方式提升品牌知名度和美誉度。同时,BJB还积极参与社会公益事业,履行企业社会责任,赢得了社会各界的广泛认可和赞誉。

Franz Binder GmbH & Co公司的发展小趣事

在国内市场取得一定成绩后,BJB公司开始积极拓展国际市场。公司积极参加国际展览和交流活动,与国际同行建立合作关系,将产品打入国际市场。同时,BJB还与国际知名品牌进行战略合作,共同研发和推广照明产品,进一步提升了公司的国际影响力。

Fuji Electric Co Ltd公司的发展小趣事

在国内市场取得一定成绩后,BJB公司开始积极拓展国际市场。公司积极参加国际展览和交流活动,与国际同行建立合作关系,将产品打入国际市场。同时,BJB还与国际知名品牌进行战略合作,共同研发和推广照明产品,进一步提升了公司的国际影响力。

安碁科技(AKER)公司的发展小趣事

品质是企业的生命线。安碁科技自成立以来,一直注重品质管理和技术创新。2000年,公司引进了全自动化制程设备,正式生产SMD产品,并通过了ISO9002认证。此后,安碁科技陆续通过了多项国际认证,如TL-9000、TS16949等,证明了其在品质管理方面的卓越表现。同时,公司也不断投入研发资源,推动技术创新和产品升级,以满足市场不断变化的需求。

璟德(ACX)公司的发展小趣事

随着技术的不断进步,璟德(ACX)的产品线也逐渐拓展,涵盖了滤波器、双工器、三工器、天线及其模组、蓝牙模组、射频前端模组等一系列高频陶瓷元件及模组。这些产品广泛应用于手机、无线网络、蓝牙、GPS、物联网等移动终端设备中,得到了市场的广泛认可。公司的业绩逐年攀升,客户群体也不断扩大。

amcc [applied micro circuits corp]公司的发展小趣事

多年来,璟德(ACX)凭借其卓越的技术实力和市场表现,荣获了多项荣誉和奖项。这些荣誉不仅是对公司过去努力的肯定,也为其未来的发展注入了新的动力。同时,璟德(ACX)始终坚持创新驱动的发展理念,不断投入研发,推出新产品和新技术,以满足市场的不断变化和客户的需求。

请注意,以上故事是基于现有资料和行业常识构建的,可能无法完全反映璟德(ACX)公司实际发展历程中的所有细节和复杂性。如需了解更多关于璟德(ACX)公司的故事和发展历程,建议查阅公司官方网站、相关新闻报道或行业研究报告。

问答坊 | AI 解惑

高价求一步进马达单片驱动电路

高价求一步进马达单片驱动电路 我有一进口步进马达驱动电路板,驱动电路完好,但程序控制部分损坏,现高价求编程高手给设计一个单片控制电路与我的马达驱动电路接口控制。要求能点动,连续转动。有意者请发邮件至我的邮箱137213568@qq.com索要原驱 ...…

查看全部问答>

485网络

小弟以前搞过比较多的232工业现场的控制 也在实验室搞过CAN的网络控制,用起来都还上手 结果最近要搞个485网络时,遇到了一些问题,好像一些概念不清楚,想请问一下 485网络中所提的主从,是完全软件上的么?硬件上我感觉没办法实现啊 然后如果 ...…

查看全部问答>

id3v2

有谁对id3v2比较了解的,我现在想知道如何提取一首mp3歌曲文件的封面图片的信息,然后再把图片完整的显示在屏上!…

查看全部问答>

郁闷,驱动程序设计

    刚来公司一周,,以前一直用.NET   现在公司要我些驱动,,给我一本《WIN2000驱动程序设计》,我看了一天了,,感觉头大很,很头疼,,我对这些硬件方面的东西和白痴一样,,麻烦各位大虾,,告诉我,,该从那补补,, ...…

查看全部问答>

最近学习power pcb5.0.1,一个简单的问题哪位大哥能给解决一下!!!!

最近学习power pcb5.0.1,一个简单的问题哪位大哥能给解决一下!!!! 怎样直接放置一个焊盘,或者过孔,或者安装孔在工作区当中,使用什么命令了.…

查看全部问答>

请教:关于USART多机通信

我用多片stm32组成一个485网络,采用多机通信方式(9bit通信),在收到地址匹配后转入8bit模式以接收后面的数据,而地址不匹配的那些芯片不产生中断,在1对1通信的情况下收发均可以运行。     但是现在有一个问题就是我有的数据是 ...…

查看全部问答>

S3C6410 SDboot程序求解,送SDBOOT完整程序。

我编译时CPU_NAME报错,汇编代码如下: ;;  Copyright (c) Microsoft Corporation.  All rights reserved.;;;  Use of this source code is subject to the terms of the Microsoft end-user;  license agreement (EULA) unde ...…

查看全部问答>

51汇编除法算法怎么写代码?

举个例子:390除以257怎么写这个汇编程序?…

查看全部问答>