datasheet

1.基于固件库建立STM32F4的工程模板

2019-08-16来源: eefocus关键字:固件库  STM32F4  工程模板

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)。

关键字:固件库  STM32F4  工程模板

编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic471315.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:4.STM32F407ZG按键输入
下一篇:2.STM32F4/7点灯

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

基于STM32从零写操作系统系列---使用官方固件库

目的内容使用官方固件库的好处就是方便,看着说明文档就可以使用。但是,从编译后的.bin文件大小看,一样的点亮LED灯,使用固件库产生的.bin文件大小差不多有6K,而上一章的串口+LED程序编译后的.bin文件就只有2K多。对于stm32F103zet6而言,flash大小512K,如果想要在这么点空间装个”有点意思”的操作系统,就需要尽量减少.bin文件的大小了。在实现的功能相同的情况下,用最少的指令数量显然更合理。在使用固件库时,编译的一些文件中,有部分函数功能是没有用到的,但他们也被链接到.bin文件中了。所以最终生成的.bin文件就比较大了。还有一个问题就是,固件库用起来方便,但是想要完全掌握你的程序的来龙去脉,你还要
发表于 2019-08-05
基于STM32从零写操作系统系列---使用官方固件库

STM32CubeMX芯片包(固件库)使用注意

1. 解压本地固件库包后需要将文件夹放到指定路径,该指定路径为cubemx软件中的help -> updater settings -> updater settings -> repository folder中的路径,本人的路径为C:/Users/WR/STM32Cube/Repository/。之前没有放到指定路径,因此Generate Code时会提示错误信息。2. 将固件库放入指定路径后,需要在CubeMX软件中选择它,点击工具栏Project -> Settings -> Project -> Firmware Package Name and Version中选择刚刚放置到指定位置
发表于 2019-07-30

STM32 固件库移植出错

1 问题描述最近项目上需要用到STM32F103VET6芯片。之前一直使用的是8年前的库,决定更新为最新版的固件库。在建立新工程编译时出现了以下错误:“..OBJNH3N STM32.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.” 2 问题分析2.1 问题定位双击出错信息,Keil跳转到如下窗口: 错误出现在“xxxx.sct”文件,sct文件,全名scatter file,中文名分散加载文件,是ARM程序链接时的输入参数。默认设置下,Keil会自动生成.sct文件。出错的的“NH3N
发表于 2019-07-26
STM32 固件库移植出错

STM32不用固件库易产生的问题:Undefined symbol SystemInit

最近接触STM32F10x,有时只想实现一些小功能,实在不想用冗大的官方固件库,于是除了MDK提供的STM32F10x.s外,其余源文件都自己写。但MDK提供的启动文件不完善,对外设和中断支持不好,于是把STM32固件库里的startup_stm32f10x_cl.s(我的芯片是stm32f107vct6)加了进来,不过,链接报错!出错信息如下:uart.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_cl.o).百度搜到了如下的解决办法,以记之。 
发表于 2019-07-23

再造STM32---第七部分:初识 STM32 固件库

       本章参考资料:《STM32F4xx 参考手册》、《STM32F4xx 规格书》、《Cortex-M3 权威指南》 , STM32 标准库帮助文档:《stm32f4xx_dsp_stdperiph_lib_um.chm》。在上一章中,我们构建了几个控制 GPIO 外设的函数,算是实现了函数库的雏形,但GPIO 还有很多功能函数我们没有实现,而且 STM32 芯片不仅仅只有 GPIO 这一个外设。       如果我们想要亲自完成这个函数库,工作量是非常巨大的。 ST 公司提供的标准软件库,包含了 STM32 芯片所有寄存器的控制
发表于 2019-06-28
再造STM32---第七部分:初识 STM32 固件库

stm32之USB应用实例(官方例程资料下载使用)

开发环境:Window 7开发工具:Keil uVision5硬件:stc32f103c8t6stm32系列芯片很多都拥有一个USB2.0全速的通讯接口,下面介绍怎么使用st官方的usb应用例程。首先从官网下载源码:https://my.st.com/content/my_st_com/en/products/embedded-software/mcu-mpu-embedded-software/stm32-embedded-software/stm32-standard-peripheral-library-expansion/stsw-stm32121.html需要登录才能下载,如果没有账号,注册一个也很快的。下载解压,打开
发表于 2019-08-20
stm32之USB应用实例(官方例程资料下载使用)

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved