Windows下Keil MDK5配置STM32开发环境

Windows下使用Keil MDK5进行开发和编译, 配合ST-LINK工具进行烧录

stm32f103c8t6 参数

  • ARM 32-bit Cortex-M3
  • 72 MHz maximum frequency
  • 64k flash
  • 20k ram
  • LQFP封装48pin

安装说明

文件准备

  • mdk525.exe
    不建议使用5.12等早期版本, 在更新时窗口容易卡, 且失败总会弹出需要手工消除.
  • keygen2032
    大部分找到的keygen, 有效期都是2020年的, 没法用, 必须要能生成2032有效期的版本
  • st-link驱动
    https://www.st.com/zh/development-tools/stsw-link004.html 不安装没法烧录
  • st官方库
    前往https://www.st.com/, 点击Tools&Software > Embedded Software > MCU & MPU Embedded Software > STM32 Embedded Software > STM32 Standard Peripheral Libraries(链接), 下载F1和F4, 解压备用.
    • 这里下载的F1的库文件, 看Release notes发布日期是2011年, 年代比较久远, 待验证是否有问题

安装

  1. 运行mdk525, 安装
  2. 安装完成后Pack Installer会自动运行, 可以让其自己更新
  3. 如果使用stlink下载器的, 还需要安装驱动

注册

安装开发包

在Pack Installer中

  1. 在左侧找到STMicroelectronics->STM32F1->STM32F103, 点击
  2. 在右侧会显示对应的Packs, 在Device Specific中找到Keil::STM32F1xx_DFP, 点击Install安装
  3. 同理安装STM32F401

名词解释

CMSIS

微控制器软件接口标准(CMSIS:Cortex Microcontroller Software Interface Standard)是 Cortex-M 处理器系列的与供应商无关的硬件抽象层(A vendor-independent hardware abstraction layer for the Cortex-M processor series and defines generic tool interfaces). 使用CMSIS可以为处理器和外设实现一致且简单的软件接口, 从而简化软件的重用、缩短微控制器新开发人员的学习过程,并缩短新设备的上市时间

ld, md, hd, xl; cl, vl

  • ld(low density), md(medium density), hd(high density), xl(XL-Density) 对应同一个型号线上, 不同flash和ram大小的芯片.
  • vl(value line), cl(connectivity line) 指的是同一型号下, 不同的细分型号线

对于stm32f1x, 各名词的对应关系为

  • Low-density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers where the Flash memory density ranges between 16 and 32 Kbytes.
  • Medium-density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers where the Flash memory density ranges between 64 and 128 Kbytes.
  • High-density devices are STM32F101xx and STM32F103xx microcontrollers where the Flash memory density ranges between 256 and 512 Kbytes.
  • XL-density devices are STM32F101xx and STM32F103xx microcontrollers where the Flash memory density ranges between 768 Kbytes and 1 Mbyte.
  • Connectivity line devices are STM32F105xx and STM32F107xx microcontrollers.

ST官方库结构说明

STM32F10x_StdPeriph_Lib_V3.5.0

目录结构及说明

├─Libraries
│  ├─CMSIS
│  │  ├─CM3
│  │  │  ├─CoreSupport                 # CMSIS核心外设访问层代码, 需要放到项目core目录
│  │  │  └─DeviceSupport
│  │  │      └─ST
│  │  │          └─STM32F10x           # stm32f10x.h, system_stm32f10x.c, system_stm32f10x.h
                                       # 这三个文件需要复制到项目system
│  │  │              └─startup
│  │  │                  ├─arm         # startup_stm32f10x_ld/md/hd/xl.s文件, 
                                       # stm32f103c8t66规格为64k flash, 对应md
│  │  │                  ├─gcc_ride7
│  │  │                  ├─iar
│  │  │                  └─TrueSTUDIO
│  │  └─Documentation
│  └─STM32F10x_StdPeriph_Driver        # 对应stm32f10x的外设代码, 需要放到项目lib目录
│      ├─inc
│      └─src
├─Project
│  ├─STM32F10x_StdPeriph_Examples      # 代码示例
│  └─STM32F10x_StdPeriph_Template      # 外设模板, 复制stm32f10x_conf.h文件到项目目录用于配置外设选项
│      ├─EWARM
│      ├─HiTOP
│      ├─MDK-ARM
│      ├─RIDE
│      └─TrueSTUDIO
├─Utilities
└─_htmresc

开发说明

这里使用手动的项目创建过程. 结合这两篇看

创建项目

创建目录并填充文件

以stm32f103为例, 对于项目test001, 创建工作目录test001, 在工作目录下再创建core, lib, object, system, user这5个目录

  • core
    用于放置CMSIS核心外设访问层代码(CMSIS Cortex-M3 Core Peripheral Access Layer Header/Source File), 对应 Libraries\CMSIS\CM3\CoreSupport 里面的 core_cm3.h core_cm3.c
  • lib
    对应 Libraries\STM32F10x_StdPeriph_Driver下inc和src目录, STM32F10x的外设驱动文件
  • object
    用于放置编译过程生成的中间文件, 非项目源码的可以清除的文件
  • system
    对应 Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 里面的3个文件: stm32f10x.h, system_stm32f10x.c, system_stm32f10x.h
  • user
    • 复制Project\STM32F10x_StdPeriph_Template\stm32f10x_conf.h, 在这个文件中配置使用哪些外设
    • 复制Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm下的startup_stm32f10x_md.s到user

md hd ld 根据芯片FLASH容量决定

  • 16K < FLASH < 32K ld
  • 64K < FLASH < 128K md
  • 256K < FLASH < 512K hd

在Keil uVision5中创建项目

  1. Project -> New uVision Project, 选择前面的user目录, 使用名称test001, 保存
  2. 选择芯片型号

配置项目

点击Manage Project Items

  1. 修改project targets名称
  2. 修改(并添加)groups为user, core, lib, system
  3. 点击每一个group, 然后点击Add files, 添加对应的c源文件
  4. user这个group需要额外添加startup_stm32f10x_md.s

点击configure target options , 定位到c/c++

  1. Define: 写入 USE_STDPERIPH_DRIVER
  2. Include Paths: 写入 ..\core;..\lib\inc;..\system

在c/c++下有完整的编译命令行

--c99 --gnu -c --cpu Cortex-M3 -g -O0 --apcs=interwork --split_sections -I ../core -I ../stm32f10x_lib/inc -I ../system
-I./RTE/_test003
-IC:/Keil_v5/ARM/PACK/Keil/STM32F1xx_DFP/2.3.0/Device/Include
-IC:/Keil_v5/ARM/CMSIS/Include
-D__UVISION_VERSION="525" -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER
-o ..\objects\*.o --omf_browse ..\objects\*.crf --depend ..\objects\*.d

烧录

  1. 点击configure target options , 定位到Debug, Use选择ST-Link Debuger, 点击Settings
  2. 如果Debug Adapter里时空白没有显示ST-LINK/V2, 去windows设备管理器看下设备是否正常
  3. 切换到Flash Download标签, 勾选Reset and Run
  4. 点击Download按钮, 或者按F8, 进行烧录

RC522参考代码

Windows下Keil MDK5配置STM32开发环境

上一篇:win10使用Scoop软件包管理器,支持版本切换


下一篇:WPF 多值转换器