STM32 Keil工程搭建 (手动搭建)流程 2025年5月27日07:42:09

发布于:2025-05-29 ⋅ 阅读:(27) ⋅ 点赞:(0)

STM32 Keil工程搭建 (手动搭建)流程

觉得麻烦跳转到最底部看总配置图

1.获取官方标准外设函数库

内部结构如下:

 文件夹功能分别为
  • 图标(用不上)
  • 库函数(重点)
Libraries/
├── CMSIS/                          # ARM Cortex-M Microcontroller Software Interface Standard
│   ├── CoreSupport/                # 包含ARM Cortex-M内核通用头文件,如core_cm3.h
│   └── DeviceSupport/              # 包含STM32系列芯片的系统初始化文件和头文件
│       └── STM32F10x/              # 具体芯片型号支持(以STM32F10x为例)
│           ├── system_stm32f10x.c  # 系统初始化源文件,设置系统时钟等
│           └── stm32f10x.h         # 芯片寄存器映射头文件
│
└── STM32F10x_StdPeriph_Driver/     # STM32标准外设驱动库
    ├── inc/                        # 外设头文件(.h),定义结构体、宏、函数原型等
    │   ├── misc.h                  # 通用中断配置等辅助功能
    │   ├── stm32f10x_adc.h         # ADC外设头文件
    │   ├── stm32f10x_bkp.h         # 备份寄存器相关
    │   ├── stm32f10x_can.h         # CAN总线通信
    │   ├── stm32f10x_crc.h         # CRC校验模块
    │   ├── stm32f10x_dma.h         # DMA数据传输控制
    │   ├── stm32f10x_exti.h        # 外部中断/事件控制器
    │   ├── stm32f10x_flash.h       # Flash编程与擦除操作
    │   ├── stm32f10x_gpio.h        # GPIO输入输出控制
    │   ├── stm32f10x_i2c.h         # I2C通信协议
    │   ├── stm32f10x_iwdg.h        # 独立看门狗定时器
    │   ├── stm32f10x_pwr.h         # 电源管理模块
    │   ├── stm32f10x_rcc.h         # 时钟控制(Reset and Clock Control)
    │   ├── stm32f10x_rtc.h         # 实时时钟模块
    │   ├── stm32f10x_sdio.h        # SD卡接口
    │   ├── stm32f10x_spi.h         # SPI通信协议
    │   ├── stm32f10x_tim.h         # 定时器模块
    │   ├── stm32f10x_usart.h       # 串口通信模块
    │   └── stm32f10x_wwdg.h        # 窗口看门狗定时器
    │
    └── src/                        # 外设实现源文件(.c)
        ├── misc.c                  # 通用中断配置实现
        ├── stm32f10x_adc.c         # ADC外设实现
        ├── stm32f10x_bkp.c         # 备份寄存器相关实现
        ├── stm32f10x_can.c         # CAN总线通信实现
        ├── stm32f10x_crc.c         # CRC校验模块实现
        ├── stm32f10x_dma.c         # DMA数据传输控制实现
        ├── stm32f10x_exti.c        # 外部中断/事件控制器实现
        ├── stm32f10x_flash.c       # Flash编程与擦除操作实现
        ├── stm32f10x_gpio.c        # GPIO输入输出控制实现
        ├── stm32f10x_i2c.c         # I2C通信协议实现
        ├── stm32f10x_iwdg.c        # 独立看门狗定时器实现
        ├── stm32f10x_pwr.c         # 电源管理模块实现
        ├── stm32f10x_rcc.c         # 时钟控制实现
        ├── stm32f10x_rtc.c         # 实时时钟模块实现
        ├── stm32f10x_sdio.c        # SD卡接口实现
        ├── stm32f10x_spi.c         # SPI通信协议实现
        ├── stm32f10x_tim.c         # 定时器模块实现
        ├── stm32f10x_usart.c       # 串口通信模块实现
        └── stm32f10x_wwdg.c        # 窗口看门狗定时器实现
  • CMSIS/
    └── DeviceSupport/
        └── STM32F10x/
            ├── startup/                # 启动文件(汇编)
            │   ├── arm/
            │   ├── gcc_arm/
            │   ├── iar/
            │   └── ...                 # 不同编译器对应的启动文件
            │
            ├── system_stm32f10x.c      # 系统初始化源文件,设置系统时钟、SysTick等
            ├── stm32f10x.h             # 芯片寄存器映射和核心外设定义
            ├── stm32f10x_map.h         # 外设寄存器地址映射(一般由stm32f10x.h引用)
            ├── stm32f10x_type.h        # 数据类型定义(如 uint32_t 等,适用于不支持C99的编译器)
            └── stm32f10x_conf.h        # 用户配置头文件(用于选择启用的外设模块)

  • 示例工程和模版(函数使用的范例)
  • 官方评估板示例工程
最底下的两个文件分别为
  1. STM32F10x标准外设库(StdPeriph_Lib)发行说明
  2. STM32F10x标准外设库(StdPeriph_Lib)使用手册

2.创建工程文件夹(名字自由命名)

1.创建主文件夹

 2.复制标准函数库中 库函数文件夹到STM32A文件夹下

3.在STM32A中创建两个文件夹用于放置开发相关文件  和keil 工程文件

3.打开keil

新建项目,选择手动建立的 文件夹

 选择魔法棒 设置关键路径

1. 


 2.


3.

 


5. 


CMSIS/
└── DeviceSupport/
    └── STM32F10x/
        └── startup/
            └── arm/
                ├── startup_stm32f10x_cl.s      # 用于 Connectivity Line 系列(如 STM32F105xx / F107xx),支持 USB OTG FS、CAN
                ├── startup_stm32f10x_hd.s      # 用于 High-density 系列(如 STM32F103xE/F/G),Flash ≥ 256KB
                ├── startup_stm32f10x_hd_vl.s   # 用于 High-density Value Line(如 STM32F100xE/F),低功耗高密度型
                ├── startup_stm32f10x_ld.s      # 用于 Low-density 系列(如 STM32F101xB/C),Flash < 64KB
                ├── startup_stm32f10x_ld_vl.s   # 用于 Low-density Value Line(如 STM32F100xB/C),小容量低成本型
                ├── startup_stm32f10x_md.s      # 用于 Medium-density 系列(如 STM32F103xB/C),Flash = 64~128KB
                ├── startup_stm32f10x_md_vl.s   # 用于 Medium-density Value Line(如 STM32F100xB/C),中等容量价值线
                └── startup_stm32f10x_xl.s      # 用于 XL-density 系列(如 STM32F103xC/D/E/Z/I),Flash ≥ 512KB

6. 按需求选择对应的启动文件

 我的单片机型号:STM32F103C6T6 芯片

对应启动文件为

startup_stm32f10x_md.s # 用于 Medium-density 系列(如 STM32F103xB/C),Flash = 64~128KB

 7.添加必要的库

CMSIS/
└── DeviceSupport/
    └── STM32F10x/
        ├── system_stm32f10x.c      # 系统初始化源文件(时钟、SysTick)
        ├── system_stm32f10x.h      # 系统头文件(宏定义、函数声明)
        └── stm32f10x.h             # 芯片寄存器映射与基础定义
CMSIS/
└── CoreSupport/
    ├── core_cm3.c      # Cortex-M3 内核操作函数实现(如 SysTick、NVIC 等)
    └── core_cm3.h      # Cortex-M3 寄存器定义、结构体、宏、内联函数声明


8. 在MyProjects 中创建 main.c 

由于库版本比较低,所以会出现关于 core_cm3.c 代码报错

如果只是使用 STM32 标准外设库(如 stm32f10x_xxx.c),而没有直接使用 CMSIS 提供的 SysTick_Config() 等函数:

  • 从项目中移除 core_cm3.c 文件;

  • 自行实现系统滴答定时器或其他中断处理逻辑;

  • 只保留 core_cm3.h,它是必须的头文件。


总的配置图示

USE_STDPERIPH_DRIVER 功能是启用外设函数库

添加这句之后得先编译一遍 ,keil 才能识别函数库

  


网站公告

今日签到

点亮在社区的每一天
去签到