×
单片机 > 其他资讯 > 详情

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

发布时间:2020-07-10 发布时间:
|

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

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
处理器的多内核究竟有什么用?