当前位置: 首页 > news >正文

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

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 才能识别函数库

  

相关文章:

  • Excel常用公式全解析(1):从基础计算到高级应用
  • STM32之FreeRTOS移植(重点)
  • 6.4.5_关键路径
  • 尚硅谷redis7 49-51 redis管道之理论简介
  • C++学习提问
  • day05-常用API(二):Lambda、方法引用详解
  • 洛谷 P3372 【模板】线段树 1
  • [学习]C语言指针函数与函数指针详解(代码示例)
  • 001 flutter学习的注意事项及前期准备
  • 商城前端监控体系搭建:基于 Sentry + Lighthouse + ELK 的全链路监控实践
  • 前端域名、端口、协议一样,本地缓存可以共享吗?
  • Quartus 开发可实现人工智能加速的 FPGA 系统
  • WPF事件处理器+x名称空间
  • ARM内核一览
  • 4月报 | SeaTunnel支持TDengine的多表Sink功能
  • Dalvik虚拟机、ART虚拟机与JVM的核心区别
  • async和await如何捕获异常
  • Python冲刺10天-如何实现基本的矩阵运算
  • AI工具的选择:Dify还是传统工具?
  • (16)高性能风控系统设计
  • 如何做阿里巴巴的网站首页/营销方案怎么写模板
  • 快速建站软件排名/百度seo排名优化教程
  • 帮人做网站赚多少钱/百度认证怎么认证
  • 接效果图做网站/计算机培训机构
  • 衢州高级网站设计/seo企业优化顾问
  • 做阿里巴巴怎么进公司网站/2022年搜索引擎优化指南