历史上的今天
返回首页

历史上的今天

今天是:2025年08月16日(星期六)

正在发生

2019年08月16日 | 1.基于固件库建立STM32F4的工程模板

2019-08-16 来源:eefocus

1.新建一个文件夹,命名为工程的名字(例如:STM32_Demo),在此文件夹下建立5个文件夹,分别命名为。如下图:CORE,FWLIB,OBJ,SYSTEM,USER


2.在ST官网下载最新标准固件库(STM32F4xx_DSP_StdPeriph_Lib_V1.8.0)并解压:


https://www.st.com/en/embedded-software/stm32-embedded-software.html?querycriteria=productId=SC961


打开Keil uVision5,新建工程,选择 CPU(STM32F407ZG),点击OK后可以退出,不需要选择配套固件。


3.从解压到固件包往新建的工程(STM32_Demo)中拷贝文件:


a.将STM32F4xx_DSP_StdPeriph_Lib_V1.8.0LibrariesSTM32F4xx_StdPeriph_Driver中的inc和src文件分别拷贝到STM32F4_TemplateFWLIB中;


b.将STM32F4xx_DSP_StdPeriph_Lib_V1.8.0LibrariesCMSISDeviceSTSTM32F4xxSourceTemplatesarm目录下的startup_stm32f40_41xxx.s文件,将STM32F4xx_DSP_StdPeriph_Lib_V1.8.0LibrariesCMSISInclude中的core_cm4.h和core_cmSimd.h,core_cmFunc.h,core_cmInstr.h文件均拷贝到STM32F4_TemplateCORE文件夹中;


c.将STM32F4xx_DSP_StdPeriph_Lib_V1.8.0LibrariesCMSISDeviceSTSTM32F4xxInclude中的stm32f4xx.h和system_stm32f4xx.h共2个文件, 将STM32F4xx_DSP_StdPeriph_Lib_V1.8.0ProjectSTM32F4xx_StdPeriph_Templates中的main.c,stm32f4xx_conf.h,stm32f4xx.it.c,stm32f4xx_it.h,system_stm32f4xx.c共5个文件拷贝到STM32F4_TemplateUSER目录下:

4.在所建的工程中添加文件:


a.右键Template,打开Manage Project Items, 更改并添加文件。在FWLB中添加所有(注意删除stm32f4xx_fmc.c),在USER中添加main.c,stm32f4xx_it.c,system_stm32f4xx.c,在CORE中添加startup_stm32f40_41xxx.s。


此时点击工程左边目录,可以看到工程树结构。


b.打开Option for Target ,打开output标签,更改目标输出文件路径,选中Create HEX File。在C/C++标签中的Define中输入STM32F40_41xxx,USE_STDPERIPH_DRIVER,在Include Path中添加路径。这样软件会更改寻找头文件的路径。

c.打开main.c文件,删除原有内容,添加新的代码:


#include

 

void Delay(__IO uint32_t nCount){

while(nCount--);

}

void GPIO_Con(){

GPIO_InitTypeDef GPIO_Struct;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);

GPIO_Struct.GPIO_Pin=GPIO_Pin_9;

GPIO_Struct.GPIO_Mode=GPIO_Mode_OUT;

GPIO_Struct.GPIO_Speed=GPIO_Speed_100MHz;

GPIO_Struct.GPIO_OType=GPIO_OType_PP;

GPIO_Struct.GPIO_PuPd=GPIO_PuPd_UP;

GPIO_Init(GPIOF,&GPIO_Struct);

}

 

int main(void){

GPIO_Con();

   while(1){

GPIO_SetBits(GPIOF,GPIO_Pin_9);

Delay(1000);

GPIO_ResetBits(GPIOF,GPIO_Pin_9);

Delay(1000);

}

}

将stm32f4xx_it.c中的头文件#include "main.h"注释掉,将void SysTick_Handler(void)函数中的内容注释掉。


5.更改其他事项:


打开文件system_stm32f4xx.c,将#define PLL_M      25中的25改为8(及更改时钟频率)。打开main.c路径下的stm32f4xx.h(需编译后才能找到),将其中的#define HSE_VALUE    ((uint32_t)25000000)改为#define HSE_VALUE    ((uint32_t)8000000)。

推荐阅读

史海拾趣

First Silicon Co., Ltd公司的发展小趣事

在电子行业快速发展的同时,环保问题也日益受到关注。First Silicon公司积极响应国家环保政策,将环保理念融入企业发展战略之中。公司投入巨资研发环保型半导体材料和生产工艺,努力减少生产过程中的污染排放和资源浪费。同时,公司还积极推广绿色电子产品,引导消费者树立环保意识。通过这一系列的环保举措,First Silicon不仅赢得了社会各界的广泛赞誉,还为其可持续发展奠定了坚实基础。

EEMB Co Ltd公司的发展小趣事

为了适应公司业务的快速发展和满足市场需求的不断增长,EEMB集团于2017年在汉川市修建了新工厂。新工厂占地面积120亩,使用面积达27000平方米,配备了先进的生产设备和技术。一期工程全面投入生产后,公司的产能得到了显著提升,能够更好地满足客户的订单需求。同时,新工厂的建成也进一步提升了公司的生产效率和产品质量。

CLAIREX公司的发展小趣事

为了进一步扩大市场份额,Clairex开始积极寻求与各大企业的合作。他们与多家知名航空公司、电子设备制造商等建立了长期稳定的合作关系,为其提供高质量的电子部件和解决方案。同时,Clairex还积极参加各类行业展会和交流活动,与业界同行分享经验、探讨合作。这些举措不仅提升了Clairex的品牌知名度,也为其带来了更多的商业机会。

ATP [ATP Electronics]公司的发展小趣事

随着全球环保意识的日益增强,ATP积极响应环保号召,致力于绿色产品的研发和生产。公司所有产品均符合欧洲RoHS无铅绿色标准和中国无铅环保标准,体现了ATP对环保事业的坚定承诺。同时,ATP还通过优化生产工艺和采用环保材料,降低了产品对环境的影响,为公司的可持续发展注入了新的动力。

AMOTECH(阿莫泰克)公司的发展小趣事

在多年的发展中,AMOTECH始终坚持以技术创新为核心竞争力。除了压敏电阻技术的突破外,公司还在多个领域取得了显著成果。例如,在LED照明和传感器领域,AMOTECH通过不断研发和创新,成功在韩国安山建立了第四工厂,进一步提升了公司的技术实力和产能规模。这些技术的不断突破和创新,使得AMOTECH在电子行业中始终保持领先地位。

BRIGHT公司的发展小趣事

随着BRIGHT公司在国际市场上的不断拓展,其品牌和产品也引起了一定的争议。在一些国家和地区,BRIGHT公司的某些行为或言论引发了公众的不满和批评。然而,这并没有阻挡BRIGHT公司前进的步伐。他们坚持自己的发展策略,通过不断创新和改进产品,积极应对各种挑战和机遇。在国际市场上,BRIGHT公司逐渐树立起了自己的品牌形象,并为电子行业的发展做出了重要的贡献。

这些故事展示了BRIGHT公司在电子行业中的不同领域所取得的成就和发展。无论是无线耳机领域的开创者、太阳能领域的突破者,还是健康技术领域的创新者、酒店业务的拓展者,以及在国际市场上的拓展与争议,都体现了BRIGHT公司不断创新、追求卓越的精神。这些故事不仅反映了BRIGHT公司的发展历程,也展示了电子行业的多样性和活力。

问答坊 | AI 解惑

逆变焊接仪器

我们知道逆变焊机是低压大电流设备,其瞬间电流估计有多大?…

查看全部问答>

高不成低不就的程序员可以转业学医。

我突然发现,如果把人的身体当成一块单片机来研究,然后就会成为一名优秀的外科医生。单片机还有8位,16位,32位之分,人的身体再过1000年也不会变。经常录入代码的程序员的手本来就灵活。另外学医学需要一些化学方面的知识,估计用半年的时间就可 ...…

查看全部问答>

WinCE思路,求助

我是刚学不久的菜鸟,想求助思路问题 我现在用的是飞凌0k2440开发板 我要做的题目是:基于wince的高速实时信号处理的软件设计 我要做的工作的一部分是将另一块电路板传过来的信息读出来并且显示出来 MFC的部分我还稍微知道点 但是我不知道怎样 ...…

查看全部问答>

谁有winCE的电子书啊(c#的)或者推荐几本可以下载的也好啊

菜鸟mm提问 或者推荐一些书可以去下载也好啊 我是完全不会winCE,可是老板让我自学,汗啊…

查看全部问答>

dm9000的应用问题

平台:2410+dm9000 现在dm9000已经可以读到,但是现在数据写不进去 写入读出的数据不一致 #define IOREAD(o)     ((UCHAR)*((volatile UCHAR *)(o))) #define IOWRITE(o, d)    *((volatile UCHAR *)(o)) = (UCH ...…

查看全部问答>

platform builder定制

  我需要定制一个内核,放到指定的路径下,如:终终的temp下面 意思说,ecv++写的一个应该用程序video.exe ,在内核定制时加入,编程成 NK.NBO镜像文件,下载到终端,VIDEO.exe应用程序放在temp目录下面 我要怎样才能实现这个功能呢…

查看全部问答>

STM32国内代理技术支持不力!!!

                                 同是芯片代理,跟周立功公司代理的NXP相比,国内公司代理的STM32的技术支差很大:编写文档不规范,翻译中文版资料 ...…

查看全部问答>

挂接调试器到运行中的应用程序

目前调试一个嵌入式应用程序需要在你输入一个专用的调试指令的时候暂停处理器。——详情请见PDF…

查看全部问答>

传感器分布

采用ADIS16003型传感器测量大型回转支承里的振动信号,请问该怎样分布传感器, 能不能提供相关的资料 谢谢啦…

查看全部问答>