基于Keil5的STM32工程创建

文件夹作用

为了更好地管理工程文件,我们习惯性将不同作用的文件分别存放在以下各文件夹。

Doc

文档文件夹,.md后缀名为Markdown文本文件

存放自述文档,描述工程详情。

Firmware

固件文件夹

存放STM32库函数文件

  1. inc 文件夹 存放库函数的.h头文件;
  2. src 文件夹 存放库函数的.c函数文件。

Hardware

硬件文件夹

存放外设BSP(扳级支持包)文件。

Project

工程文件夹

存放Keil工程生成文件

  1. .uvprojx后缀名为Keil工程打开文件;
  2. Objects文件夹存放编译产生的文件,其中.hex .bin .axfMCU程序烧录文件也存放在此。

Start

STM32启动文件夹

存放STM32启动配置文件

  1. .s后缀名为STM32启动文件;

  2. stm32f10x.h为STM32的外设寄存器描述文件,作用与51单片机reg52.h头文件一样;

  3. system_stm32f10x.c system_stm32f10x.h主要用于配置时钟;

  4. core_cm3.ccore_cm3.c为内核寄存器的描述文件。

User

用户文件夹

存放主程序文件

  1. main.c为工程主函数;
  2. stm32f10x_conf.h用来配置库函数头文件的包含关系,所有库函数都需要该文件;
  3. stm32f10x_it.cstm32f10x_it.h用来存放中断(interrupt)函数。

keilkill.bat

清除执行器

双击运行,清除编译生成的文件,减小工程文件夹的占用大小,便于存放和分享工程。

STM32工程架构

创建步骤

  1. 创建工程文件夹,文件夹里包含上述文件夹;

  2. 从STM32库文件中复制以下文件分别粘贴到个文件夹

    User

    Start

    FIrmware

  3. 进入Keil5新建工程,存放到工程文件夹(Project)中;

  4. 点击工具盒新建组,并将文件夹内的文件添加到各组中;

    STM32F1系列型号

    缩写 释义 Flash容量 型号
    LD_VL 小容量产品超值系列 16-32K STM32F100
    MD_VL 中容量产品超值系列 64-128K STM32F100
    HD_VL 大容量产品超值系列 256-512K STM32F100
    LD 小容量产品 16-32K STM32F101/102/103
    MD 中容量产品 64-128K STM32F101/102/103
    HD 大容量产品 256-512K STM32F101/102/103
    XL 加大容量产品 大于512K STM32F101/102/103
    CL 互联型产品 - STM32F105/107

    Start组中,只需添加startup_stm32f10x_md.s*

  5. 点击魔术棒添加头文件引用路径;

  6. 点击魔术棒添加宏定义;

    在“C/C++”预定义中定义“USE_STDPERIPH_DRIVER”宏,就允许“使用标准外设驱动”了

    • stm32f10x.h头文件的8296行处复制宏USE_STDPERIPH_DRIVER

    • 点击魔术棒 \ c/c++,粘贴在Define

  7. 点击魔术棒选择V5编译器;

    MDK新版的V6编译器编译时会报错,则需要选择V5版本 下载MDK V5.36并安装 MDK V5.36 : https://www.myir-tech.com/customerService/download.asp?anclassid=71

    将V5版本编译器添加到Keil5中

    选择V5编译器

  8. 点击魔术棒选择调试器;

    下载器为ST-Link则选择ST-Link

  9. 编译。

    编写main函数,并编译

    Keil5点击编译正常,烧录和调试直接闪退

    解决办法 https://blog.csdn.net/regard1/article/details/129580681

    https://blog.csdn.net/wcanon/article/details/129645304

总结

新建工程步骤

  1. 建立工程文件夹,Keil中新建工程,选择型号;
  2. 工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹;
  3. 工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组里;
  4. 工程选项,C/C++,include Paths内声明所有包含头文件的文件夹;
  5. 工程选项,C/C++,Define内定义USE STDPERIPH_DRIVER;
  6. 工程选项,Debug,下拉列表选择对应调试器,Settings,FlashDownload里勾选Reset and Run。

本文章使用limfx的vscode插件快速发布