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年, 年代比较久远, 待验证是否有问题
安装
- 运行mdk525, 安装
- 安装完成后Pack Installer会自动运行, 可以让其自己更新
- 如果使用stlink下载器的, 还需要安装驱动
注册
略
安装开发包
在Pack Installer中
- 在左侧找到STMicroelectronics->STM32F1->STM32F103, 点击
- 在右侧会显示对应的Packs, 在Device Specific中找到Keil::STM32F1xx_DFP, 点击Install安装
- 同理安装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
开发说明
这里使用手动的项目创建过程. 结合这两篇看
- https://blog.csdn.net/xiebaocheng12138/article/details/78056161
- https://blog.csdn.net/weixin_30900589/article/details/99118249
创建项目
创建目录并填充文件
以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中创建项目
-
Project -> New uVision Project
, 选择前面的user目录, 使用名称test001, 保存 - 选择芯片型号
配置项目
点击Manage Project Items
- 修改project targets名称
- 修改(并添加)groups为user, core, lib, system
- 点击每一个group, 然后点击Add files, 添加对应的c源文件
- user这个group需要额外添加startup_stm32f10x_md.s
点击configure target options , 定位到c/c++
- Define: 写入 USE_STDPERIPH_DRIVER
- 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
烧录
- 点击configure target options , 定位到Debug, Use选择ST-Link Debuger, 点击Settings
- 如果Debug Adapter里时空白没有显示ST-LINK/V2, 去windows设备管理器看下设备是否正常
- 切换到Flash Download标签, 勾选Reset and Run
- 点击Download按钮, 或者按F8, 进行烧录