前期准备:stm32固件库函数压缩包解压
固件库压缩包链接:https://pan.baidu.com/s/11u3NZeFMG70Jun4SdMIr1g
提取码:m7kq
新建工程为3大步骤
1.建立一个工程文件夹(命名推荐按工程功能取)及四个子文件夹并将子文件夹命名为Start、User、Library、Hardware,建立这些子文件夹主要为后期编写库文件时方便进行文件查找与管理,各文件夹建议存放内容如下:
- start文件夹中:
应该包括固件库中的start文件、内核寄存器描述文件(core_cm3.c、core_cm3.h)、外设寄存器描述文件。对于 103 系列,主
要是用其中 3 个启动文件:
startup_stm32f10x_ld.s: | 适用于小容量 产品 |
startup_stm32f10x_md.s : 适用于中等容量产品 | |
startup_stm32f10x_hd.s: | 适用于大容量产品 |
这里的容量是指 FLASH 的大小.判断方法如下:
小容量: FLASH≤32Kz
中容量: 64K≤FLASH≤128K
大容量: 256K≤FLASH
ALIENTEK miniSTM32 开发板采用的 103RCT6 是属于大容量产品,所以我们的启动文件选择 startup_stm32f10x_hd.s;内核寄存器描述文件是一个都不能少;外设寄存器文件可以选择性添加,但是stm32的外设寄存器很多,为避免大量查找添加相应外设寄存器描述文件的工作,推荐全部添加。
start文件(以start_up开头的文件),路径如图1:
图一
内核描述文件(core_cm3.c、core_cm3.h)的路径如图二:
图二
外设寄存器描述文件路径如图三,添加最后三个文件即可
图三
- Library中添加库函数文件路径如图四:
图四
外设寄存器描述函数的c文件和h文件分别在including、和scr文件夹中,推荐全部选中,将这些文件全部放到事先建好的Library文件夹
- User文件夹中:
应添加 stm32F10x_conf.h文件、stm32F10x_it.c、stm32F10x_it.h
以上文件路径如图五:
图五
以上工作完成后
2.打开keil,依次点击 projrct 、new project,将project放入已建好的工程文件夹中
右键Target1 ,左键add group,在工程主界面的group中建立三个 new group,并且右键ew group分别命名为与子文件夹相同的名字,便于后期添加路径,右键某一组,分别将文件名与组名相同的文件内部文件添加至对应组中,
3.在魔术棒工具的c++栏进行宏定义,并且路径应添加四个子文件夹所在路径
后面便可以在User中添加main.c文件了
到此为止,工程完美建成!
以下为具体解释:
首先start文件夹应包含start文件,此文件夹内文件为最开始运行的程序;此外,stm由内核及外设组成,所以还应包含stm32F10x外设寄存器描述文件、core_cm3内核描述文件。
stm32F10x文件夹中各个文件意义
stm32f10.h为stm32的外设寄存器描述头文件,类似reg52.h描述寄存器及对应地址
sysytem_stm32f10.h、sysytem_stm32f10.c为系统文件,主要用于配置时钟故还需添加内核寄存器描述文件(core_cm3文件)放于start文件夹,以上文件均为只读文件。
此时库函数还无法使用,应该在压缩包中找到stm32F10x_conf.h(配置库函数头文件包含关系,参术检查的函数定义),stm32F10x_it.h(与中断有关),stm32F10x_it.c(),并将三个文件添加至user文件夹及相应的group中。
最后需要宏定义,宏定义应是由于由于外设寄存器描述头文件使用了条件按编译,观察其条件为是否进行标准外设宏定义,固应在魔术棒的c++栏目添加该宏定义,且将所有路径都包含进来,即Start、User、Library、Hardware到此,工程便建立好了。