STM32项目工程模板的创建
1.基于标准外设库创建工程模板
以STM32F103ZET6为例
- 新建目录STM32_template,在STM32_template目录下新建USER目录。打开Keil uVision5,点击project=》new uVision Project,定位到USER目录,编辑文件名
- 选择单片机对应的设备
- 在STM32_template目录下新建STM32F10x_FWLIB,OBJ,CORE目录
- 在地址点击STM32微控制器软件=》STM32标准外设软件库=》F1=》选择3.5.0=》作为访客下载=》填写相关信息获取下载链接。最终下载完固件包进行解压如下所示:
![]()
- 将下载的固件包Libraries\STM32F10x_StdPeriph_Driver目录下的Src和Inc目录放置到STM32F10x_FWLIB目录下
- 将Libraries\CMSIS\CM3\CoreSupport目录下的core_cm3.c和core_cm3.h文件复制到CORE目录下
- 将Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm目录下的startup_stm32f10x_hd.s文件复制到CORE目录下。注意启动文件需要根据开发板得配置进行选择
- 将Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x目录下的stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h文件复制到USER目录下
- 将Project\STM32F10x_StdPeriph_Template目录下的main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h文件复制到USER目录下
- 重命名Target及Group名称,新建GROUP。如下所示:
![]()
- 将STM32F10x_FWLIB\src目录下的所有文件添加到FWLIB组中
- 将CORE目录下的core_cm3.c及startup_stm32f10x_hd.s文件添加到CORE组中
- 将USER目录下的main.c,stm32f10x_it.c,system_stm32f10x.c添加到USER组中
- 魔法棒设置:根据需要进行设置
- Target选项卡:设置外部晶振频率,使用的编译器版本
- Output选项卡:生成hex文件,设置Objects输出文件夹
- Listing选项卡:设置Listing输出文件夹
- c/c++选项卡:设置全局宏定义,优化等级,设置头文件包含路径,C99Mode
这里需要添加宏定义STM32F10X_HD,USE_STDPERIPH_DRIVER- Debug选项卡:设置使用的仿真器类型,选择使用的下载接口
- Utilities选项卡:设置下载功能,下载算法,下载算法起始地址和大小等
- Linker选项卡:添加分散加载文件
- 将USER目录下的main.c文件中的代码替换成自己的,然后进行编译
2.基于寄存器创建工程模板
以STM32F103ZET6为例
- 新建STM32_register_template目录,在STM32_register_template目录下新建USER,OBJ目录
- 将固件包Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm目录下的startup_stm32f10x_hd.s文件复制到USER目录下
- 重命名Target及Group名称,新建GROUP。如USER
- 将startup_stm32f10x_hd.s添加到USER组中,将其中如下三行代码行注释掉
; IMPORT SystemInit
; LDR R0, =SystemInit
; BLX R0
- 魔法棒设置:根据需要进行设置
- Target选项卡:设置外部晶振频率,使用的编译器版本
- Output选项卡:生成hex文件,设置Objects输出文件夹
- Listing选项卡:设置Listing输出文件夹
- c/c++选项卡:设置全局宏定义,优化等级,设置头文件包含路径,C99Mode
这里需要添加宏定义STM32F10X_HD- Debug选项卡:设置使用的仿真器类型,选择使用的下载接口
- Utilities选项卡:设置下载功能,下载算法,下载算法起始地址和大小等
- Linker选项卡:添加分散加载文件
- 在USER组中添加main.c,编译程序运行
3.基于HAL库创建工程模板
以STM32F103C8T6为例
- 在地址上下载STM32Cube MCU固件包。解压后如下所示:
![]()
- 新建目录STM32F103ZET6_Template,在STM32F103ZET6_Template目录下新建Drivers,Middlewares,Output,Projects,Users目录
- Drivers:用于存储与硬件相关的驱动层文件
- Middlewares:存放中间层文件
- Output:存放工程编译输出文件
- Projects:存放MDK工程文件
- User:存放 HAL 库用户配置文件、main.c、中断处理文件,以及分散加载文件
- 在Drivers目录下新建BSP,CMSIS,SYSTEM,
STM32F1xx_HAL_Driver子目录- BSP:存放开发板板级的驱动代码,比如说LED驱动,按键驱动,蜂鸣器驱动等
- CMSIS:存放CMSIS底层代码,比如startup_stm32f10xxx.s启动文件
- SYSTEM:存放系统级核心驱动代码,如 sys.c、delay.c 和 usart.c 等
- STM32F1xx_HAL_Driver:存放ST提供的F1系列HAL库驱动源码
- 剩下步骤不一一列出
note:对于不同型号的STM32F1系列单片机,下载的STM32Cube MCU固件包是一样的,但是所选择的启动文件是不一样的,这个启动文件位于固件包的Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm目录下。启动文件的选择需要根据闪存容量来。
4.基于IDE STM32CubeMX
以STM32F103ZET6为例,这种方式通过图像界面进行硬件配置,大大提高了开发效率。
- 官网上下载STM32CubeMX,然后进行安装
- 在官网上下载HAL库en.stm32cubef1.zip,然后根据下面步骤进行安装
- 设置安装路径
![]()
- 选择本地安装:导入固件包源码所在根目录的压缩包
![]()
![]()
- 新建项目,通过图形化界面进行硬件配置
- File=》New Project
- 选择芯片:
![]()
- 引脚配置
- 时钟配置
- 项目配置:注意取消勾选使用最新的版本,选择你安装的固件版本
![]()
![]()
![]()
以上内容了解即可,因为我们以后开发都在这些工程模板上开发。










浙公网安备 33010602011771号