一、基于寄存器
- 建立框架:建立一个文件夹(命名为test)用于存放工程文件,在test里再建立一个文件夹user用于存放keil5程序,打开keil5点击Project->New uVision Project,命名后存放在user文件夹中
- 启动代码:启动代码是一段和硬件相关的汇编代码,主要作用如下:
①堆栈SP初始化
②程序计数器PC初始化
③设置向量表异常事件的入口地址
④调用main函数
ST公司提供3个启动文件分别用于不同容量的STM32芯片,这三个文件是:
①startup_stm32f10x_ld.s
②startup_stm32f10x_md.s
③startup_stm32f10x_hd.s
小容量(flash小于等于32k)使用ld.s;中等容量产品(64k- 添加启动文件:启动文件和工程文件等不可缺少的文件都放在USER文件夹下
- 调整工程目录(操作文件夹):
①删除软件自动生成的文件夹Listings和Objects
②在test文件夹下新建OBJ文件夹用来存放编译过程中产生的中间文件(包括.hex文件也放在这个文件夹里)
③将上述删除的两个文件夹里的东西挪到OBJ文件夹里去
④将基于寄存器的系统文件SYSTEM(由ALIENTEK提供)拷贝到test文件夹下。
注意:不要把库函数代码的系统文件拷贝到寄存器代码里面用,反之亦然- 管理工程目录(在软件中操作):
①在target目录上右键->manage project items
②点击中间的groups组右边的方框,新建两个文件夹USER和SYSTEM,再点击SYSTEM,点击add files,SYSTEM只需要添加sys.c、usart.c、delay.c- 设置OUTPUT文件路径
- 设置listings文件
- 加入头文件包含路径
①宏定义的选择:
小容量选择STM32F10X_LD,
中等容量选择STM32F10X_MD,
大容量选择STM32F10X_HD
②编译器优化选项:有O0~O3四种选择,值越大,优化效果越强,但仿真调试效果越差
③冗余函数的优化:one elf section per function可以在最后生成的二进制文件中将冗余函数排除掉,减少整个程序的代码量 - 添加启动文件:启动文件和工程文件等不可缺少的文件都放在USER文件夹下
二、基于库文件的创建
- 创建文件夹:创建一个新的文件夹test,并在此文件夹中创建如下四个文件夹:
①CORE:存放核心文件和启动文件
②OBJ:存放编译过程文件和hex文件
③STM32F10x_FWLib:存放官方提供的库函数源码文件
④USER:存放工程文件、主函数等 - 复制固件库相关文件
- 工程添加文件
- 设置选项:如同基于寄存器的最后一步



