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)。
上一篇:4.STM32F407ZG按键输入
下一篇:2.STM32F4/7点灯