STM32项目工程模板的创建

1.基于标准外设库创建工程模板

以STM32F103ZET6为例

  1. 新建目录STM32_template,在STM32_template目录下新建USER目录。打开Keil uVision5,点击project=》new uVision Project,定位到USER目录,编辑文件名
  2. 选择单片机对应的设备
  3. 在STM32_template目录下新建STM32F10x_FWLIB,OBJ,CORE目录
  4. 地址点击STM32微控制器软件=》STM32标准外设软件库=》F1=》选择3.5.0=》作为访客下载=》填写相关信息获取下载链接。最终下载完固件包进行解压如下所示:
  5. 将下载的固件包Libraries\STM32F10x_StdPeriph_Driver目录下的Src和Inc目录放置到STM32F10x_FWLIB目录下
  6. 将Libraries\CMSIS\CM3\CoreSupport目录下的core_cm3.c和core_cm3.h文件复制到CORE目录下
  7. 将Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm目录下的startup_stm32f10x_hd.s文件复制到CORE目录下。注意启动文件需要根据开发板得配置进行选择
  8. 将Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x目录下的stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h文件复制到USER目录下
  9. 将Project\STM32F10x_StdPeriph_Template目录下的main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h文件复制到USER目录下
  10. 重命名Target及Group名称,新建GROUP。如下所示:
  11. 将STM32F10x_FWLIB\src目录下的所有文件添加到FWLIB组中
  12. 将CORE目录下的core_cm3.c及startup_stm32f10x_hd.s文件添加到CORE组中
  13. 将USER目录下的main.c,stm32f10x_it.c,system_stm32f10x.c添加到USER组中
  14. 魔法棒设置:根据需要进行设置
    1. Target选项卡:设置外部晶振频率,使用的编译器版本
    2. Output选项卡:生成hex文件,设置Objects输出文件夹
    3. Listing选项卡:设置Listing输出文件夹
    4. c/c++选项卡:设置全局宏定义,优化等级,设置头文件包含路径,C99Mode
    这里需要添加宏定义STM32F10X_HD,USE_STDPERIPH_DRIVER
    
    1. Debug选项卡:设置使用的仿真器类型,选择使用的下载接口
    2. Utilities选项卡:设置下载功能,下载算法,下载算法起始地址和大小等
    3. Linker选项卡:添加分散加载文件
  15. 将USER目录下的main.c文件中的代码替换成自己的,然后进行编译
2.基于寄存器创建工程模板

以STM32F103ZET6为例

  1. 新建STM32_register_template目录,在STM32_register_template目录下新建USER,OBJ目录
  2. 将固件包Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm目录下的startup_stm32f10x_hd.s文件复制到USER目录下
  3. 重命名Target及Group名称,新建GROUP。如USER
  4. 将startup_stm32f10x_hd.s添加到USER组中,将其中如下三行代码行注释掉
;                IMPORT  SystemInit
;                LDR     R0, =SystemInit
;                BLX     R0
  1. 魔法棒设置:根据需要进行设置
    1. Target选项卡:设置外部晶振频率,使用的编译器版本
    2. Output选项卡:生成hex文件,设置Objects输出文件夹
    3. Listing选项卡:设置Listing输出文件夹
    4. c/c++选项卡:设置全局宏定义,优化等级,设置头文件包含路径,C99Mode
    这里需要添加宏定义STM32F10X_HD
    
    1. Debug选项卡:设置使用的仿真器类型,选择使用的下载接口
    2. Utilities选项卡:设置下载功能,下载算法,下载算法起始地址和大小等
    3. Linker选项卡:添加分散加载文件
  2. 在USER组中添加main.c,编译程序运行
3.基于HAL库创建工程模板

以STM32F103C8T6为例

  1. 地址上下载STM32Cube MCU固件包。解压后如下所示:
  2. 新建目录STM32F103ZET6_Template,在STM32F103ZET6_Template目录下新建Drivers,Middlewares,Output,Projects,Users目录
    1. Drivers:用于存储与硬件相关的驱动层文件
    2. Middlewares:存放中间层文件
    3. Output:存放工程编译输出文件
    4. Projects:存放MDK工程文件
    5. User:存放 HAL 库用户配置文件、main.c、中断处理文件,以及分散加载文件
  3. 在Drivers目录下新建BSP,CMSIS,SYSTEM,STM32F1xx_HAL_Driver子目录
    1. BSP:存放开发板板级的驱动代码,比如说LED驱动,按键驱动,蜂鸣器驱动等
    2. CMSIS:存放CMSIS底层代码,比如startup_stm32f10xxx.s启动文件
    3. SYSTEM:存放系统级核心驱动代码,如 sys.c、delay.c 和 usart.c 等
    4. STM32F1xx_HAL_Driver:存放ST提供的F1系列HAL库驱动源码
  4. 剩下步骤不一一列出

note:对于不同型号的STM32F1系列单片机,下载的STM32Cube MCU固件包是一样的,但是所选择的启动文件是不一样的,这个启动文件位于固件包的Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm目录下。启动文件的选择需要根据闪存容量来。

4.基于IDE STM32CubeMX

以STM32F103ZET6为例,这种方式通过图像界面进行硬件配置,大大提高了开发效率。

  1. 官网上下载STM32CubeMX,然后进行安装
  2. 在官网上下载HAL库en.stm32cubef1.zip,然后根据下面步骤进行安装
  3. 设置安装路径
  4. 选择本地安装:导入固件包源码所在根目录的压缩包

  5. 新建项目,通过图形化界面进行硬件配置
    1. File=》New Project
    2. 选择芯片:
    3. 引脚配置
    4. 时钟配置
    5. 项目配置:注意取消勾选使用最新的版本,选择你安装的固件版本



      以上内容了解即可,因为我们以后开发都在这些工程模板上开发。