前言
本系列文章统一围绕STM32F103C8T6最小系统开发板进行记录,如涉及其他开发板将会特别说明。
新建标准库工程目录
工程目录创建
一个标准的stm32库工程目录包含以下内容:

标准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官方固件库中找到下列文件:

STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10xstartuparm
此处应根据开发板型号进行选择,如STM32F103C8T6为中等型号产品,故选择startup_stm32f10x_md.s文件。

STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10x

STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3CoreSupport
将上述文件拷贝至CMSIS目录下:

stm32_templateLibrariesCMSIS
FWlib
将stm32外设驱动文件拷贝至FWlib目录下:

STM32F10x_StdPeriph_Lib_V3.5.0LibrariesSTM32F10x_StdPeriph_Driver
stm32_templateLibrariesFWlib
User
将下列文件拷贝至User目录下:

STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_StdPeriph_Template

stm32_templateUser
至此,标准库工程模板已完成搭建。

标准库工程文件结构
新建工程
在Keil5中新建一个工程,保存在上述Project/目录下。
1.选择设备型号
根据芯片型号选择对应的选项:

芯片型号选择
2. 创建组文件夹并添加文件
点击上方Manage Project items按钮,如图所示创建组文件夹:

创建组文件夹
找到对应文件,并将其添加至对应的文件夹下:
| 目录名 | 存放的文件 | 添加文件路径 |
|---|---|---|
| STARTUP | startup_stm32f10x_md.s | stm32_templateLibrariesCMSIS |
| CMSIS | 与Cortex-M3内核相关的文件 | stm32_templateLibrariesCMSIS |
| FWlib | 系统外设驱动文件(源文件) | stm32_templateLibrariesFWlibsrc |
| USER | main.c,stm32f10x_it.c | stm32_templateUser |
| PERIPH | 外设驱动文件(如LED、BEEP等外设) | 暂无 |
| BSP | 板级支持包驱动文件 | 暂无 |
| DOC | 工程说明文件 | stm32_templateDoc |
3. “魔法棒”配置
点击“魔法棒”按钮,进行如下配置:

添加宏定义USE_STDPERIPH_DRIVER
这里的宏配置对全局生效
image.png?imageView2/2/w/1000
只有USE_STDPERIPH_DRIVER宏被定义了之后,才会在stm32f10x.h文件中包含stm32f10x_conf.h文件,进而包含系统外设驱动文件的头文件,如下图所示:

stm32f10x.h

stm32f10x_conf.h
添加头文件路径
此外,我们还需要在此处将工程所使用到的头文件的绝对路径添加进来,包括用户自己写的头文件:
image.png?imageView2/2/w/1000

添加头文件路径
MicroLIB选项

MicroLIB
MicroLIB是KEIL自带的简易库
如使用printf函数,会从串口1输出字符串,直接默认定向到串口1
MicroLIB是缺省C库的备选库。它用于必须在极少量内存环境下运行的深层嵌入式应用程序。这些应用程序不在操作系统中运行
MicroLIB不会尝试成为符合标准的ISOC库,MicroLIB进行了高度优化以使代码变得很小。它的功能比缺省C库少,并且根本不具备某些ISOC特性。某些库函数的运行速度也比较慢,例如memcpy()
输出hex可执行文件
如果需要通过串口ISP方式烧录程序,则需要指定hex可执行文件生成路径为Output文件夹,并勾选“Create HEX File”选项。
image.png?imageView2/2/w/1000
添加链接路径
指定链接路径为Listing文件夹。
添加链接路径
资源
stm32官方固件库:https://pan.baidu.com/s/1B0tswmMOoqYDUClkc3ZG2g 提取码:9rgh
上一篇:【STM32学习笔记1】Cortex-M3与STM32基本概念
下一篇:《嵌入式-STM32开发指南》第一部分 入门篇 -第1章 学嵌入式从STM32开始
- 热门资源推荐
- 热门放大器推荐
- Er3105Di 500Ma宽输入电压同步降压稳压器内部默认参数选择典型应用示意图
- 使用 LTC2377CMS-16、16 位、500ksps、低功耗 SAR ADC 的典型应用
- L7806C负输出电压电路的典型应用
- LT3959 的典型应用 - 具有 6A、40V 开关的宽输入电压范围升压/SEPIC/反相转换器
- LPS33W适配器板,标准DIL24插座
- 使用 Analog Devices 的 LT3470AIDDB 的参考设计
- MC33364通用输入电池充电器典型应用电路
- AM2G-2405SH30Z 5V 2W DC/DC 转换器的典型应用
- 用于电池测试解决方案的 ADP1972 降压或升压、PWM 控制器的典型应用
- LT1121IS8-3.3 5V 低压差稳压器的典型应用电路,用于具有关断的电池供电电源

现代雷达系统的信号设计
5962L0052401VPA

BFR340T






京公网安备 11010802033920号