前言
本系列文章统一围绕STM32F103C8T6最小系统开发板进行记录,如涉及其他开发板将会特别说明。
新建标准库工程目录
工程目录创建
一个标准的stm32库工程目录包含以下内容:
其中:
- Doc:用来存放程序说明的文件,由写程序的人添加
- Libraries:包含两个子目录CMSIS和FWlib。
- CMSIS:存放与Cortex-M3内核相关的文件,如STM32的启动文件,内核文件等。
- FWlib:存放stm32外设驱动文件,包含inc(头文件)和src(源文件)两个子目录。
- Listing:存放编译器编译时候产生的C/汇编/链接的列表清单。
- Output:存放编译产生的调试信息、hex 文件、预览信息、封装库等。
- Project:用于存放工程文件。
- User:用于存放的main.c、stm32f10x.h 头文件、 stm32f10x_conf.h配置文件、stm32f10x_it.c和stm32f10x_it.h中断函数文件,以及用户编写的驱动文件。
固件库文件移植
CMSIS
在stm32官方固件库中找到下列文件:
此处应根据开发板型号进行选择,如STM32F103C8T6为中等型号产品,故选择startup_stm32f10x_md.s文件。
将上述文件拷贝至CMSIS目录下:
FWlib
将stm32外设驱动文件拷贝至FWlib目录下:
User
将下列文件拷贝至User目录下:
至此,标准库工程模板已完成搭建。
新建工程
在Keil5中新建一个工程,保存在上述Project/目录下。
1.选择设备型号
根据芯片型号选择对应的选项:
2. 创建组文件夹并添加文件
点击上方Manage Project items按钮,如图所示创建组文件夹:
找到对应文件,并将其添加至对应的文件夹下:
目录名 | 存放的文件 | 添加文件路径 |
---|---|---|
STARTUP | startup_stm32f10x_md.s | \stm32_template\Libraries\CMSIS |
CMSIS | 与Cortex-M3内核相关的文件 | \stm32_template\Libraries\CMSIS |
FWlib | 系统外设驱动文件(源文件) | \stm32_template\Libraries\FWlib\src |
USER | main.c,stm32f10x_it.c | \stm32_template\User |
PERIPH | 外设驱动文件(如LED、BEEP等外设) | 暂无 |
BSP | 板级支持包驱动文件 | 暂无 |
DOC | 工程说明文件 | \stm32_template\Doc |
3. “魔法棒”配置
点击“魔法棒”按钮,进行如下配置:
-
添加宏定义USE_STDPERIPH_DRIVER
这里的宏配置对全局生效
只有USE_STDPERIPH_DRIVER宏被定义了之后,才会在stm32f10x.h
文件中包含stm32f10x_conf.h
文件,进而包含系统外设驱动文件的头文件,如下图所示:
-
添加头文件路径
此外,我们还需要在此处将工程所使用到的头文件的绝对路径添加进来,包括用户自己写的头文件:
-
MicroLIB选项
- MicroLIB是KEIL自带的简易库
- 如使用printf函数,会从串口1输出字符串,直接默认定向到串口1
- MicroLIB是缺省C库的备选库。它用于必须在极少量内存环境下运行的深层嵌入式应用程序。这些应用程序不在操作系统中运行
- MicroLIB不会尝试成为符合标准的ISOC库,MicroLIB进行了高度优化以使代码变得很小。它的功能比缺省C库少,并且根本不具备某些ISOC特性。某些库函数的运行速度也比较慢,例如memcpy()
-
输出hex可执行文件
如果需要通过串口ISP方式烧录程序,则需要指定hex可执行文件生成路径为Output文件夹,并勾选“Create HEX File”选项。
-
添加链接路径
指定链接路径为Listing文件夹。
资源
stm32官方固件库:https://pan.baidu.com/s/1B0tswmMOoqYDUClkc3ZG2g 提取码:9rgh