1, 新建一个文件夹 (Template) 用来存放工程的全部文件
2, 在Template文件夹中再建五个文件夹:CORE FWLIB OBJ SYSTEM USER 用来划
分不同类型的工程文件
3, 打开Keil,点击Keil 的菜单:Project –>New Uvision Project 保存工程在USER文件夹下,名为Template 选择相应的CPU.
把 Manage Run-Time Environment 对话框 cancel 掉
4. 打开官方固件库包,定位到目录
STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\STM32F4xx_StdPeriph_Driver 下面
将目录下面的 src inc 文件夹 copy 到我们刚才建立的 FWLIB文件夹下面
5. 定位到目录
\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm
下面,将文件startup_stm32f40_41xxx.s复制到CORE 目录下面。
定位到目录\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Includ,将里面 的四个头 文件:
core_cm4.h core_cm4_simd.h core_cmFunc.h core_cmInstr.h 同样复制到 CORE目录下面
6. STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Includ 里面的2 个头文件
stm32f4xx.h system_stm32f4xx.h 复制到USER目录之下
7. 进入目录\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Templates 将目录下面的
5 个文件 main.c stm32f4xx_conf.h stm32f4xx_it.c stm32f4xx_it.h system_stm32f4xx.c 复制到
USER 目录下面
8. 右键点击 Target1,选择 Manage Project Items ,把 Target1 改为 Template
在Groups中添加 CORE FWLIB OBJ SYSTEM USER
在 FWLIB 中添加 FWLIB\src
下的所有c文件(stm32f4xx_fmc.c除外,这个不用添加)
9. 在CORE 中添加 startup_stm32f40_41xxx.s
USER 中添加 main.c stm32f4xx_it.c system_stm32f4xx.c
10. Project –>Options for Target 'Template' –>C/C++ –> Include Paths 添加 .h 头文件的路径.凡是需要用到的
头文件的路径都要添加
11. 进入 C/C++选项卡,然后在 Define输入框连输入全局宏定义:STM32F40_41xxx和 USE_STDPERIPH_DRIVER
他们之间是用逗号隔开的 即 STM32F40_41xxx,USE_STDPERIPH_DRIVER
12. 在Project –>Options for Target 'Template' –>Output 中 勾选 Create HEX File ,在Select Folder for
Objects 中指定新建文件夹OBJ的路径.
13. 重写main.c的内容,或把下面代码覆盖原来的内容
#include "stm32f4xx.h"
//ALIENTEK 探索者STM32F407开发板 实验0
//STM32F4工程模板-库函数版本
//技术支持:www.openedv.com
//淘宝店铺:http://eboard.taobao.com
//广州市星翼电子科技有限公司
//作者:正点原子 @ALIENTEK
void Delay(__IO uint32_t nCount);
void Delay(__IO uint32_t nCount)
{
while(nCount--){}
}
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOF, &GPIO_InitStructure);
while(1){
GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);
Delay(0x7FFFFF);
GPIO_ResetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);
Delay(0x7FFFFF);
}
}
14. 删掉USER 下stm32f4xx_it.c 中的 #include "main.h" 32行 TimingDelay_Decrement(); 144行
15. 在build Toolbar 中按 Build(F7) 就可以编译并生成HEX文件了.
再补充完善一下SYSTEM文件夹
16. 随便找一个正点原子的工程文件,把里面的SYSTEM文件夹覆盖我们所创建的SYSTEM文件夹.把里面的文件
导入工程中,
再配置头文件的位置,
再编译一下就可以了!!!
17. 把USER下面的system_stm32f4xx.c 文件的316行由 #define PLL_M 25 改成 #define PLL_M 8
因为晶振是8M的
18. 修改USER→stm32f4XX_it.c→stm32f4xx.h的123行由((uint32_t)25000000) 改成 ((uint32_t)8000000)