沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录

目录

StdPeriphLib_CH32F1封装库

封装库地址

StdPeriphLib_CH32F1 是用于 CH32F1 系列MCU的 SPL 风格封装库

  • 使用 arm-none-eabi-gcc 工具链
  • 兼容 Linux 下的 VSCode+PlatformIO 开发环境

文件结构

├── Debug                # 用于演示目的, 可选
├── Examples             # 外设代码示例
├── StdPeriphDriver      # 封装库代码和头文件, 必须
│   ├── inc
│   └── src
├── System               # 系统配置文件, 必须
├── USB-Config           # USB 配置, 可选
└── USB-Driver           # USB 封装库, 可选
    ├── inc
    └── src

根据与 STMicroelectronics STM32F103 SPL 封装库的对比, 两者在对应外设的部分基本上是一样的, 从寄存器地址, 变量名, 函数名, 甚至代码格式都是一样的.
这意味着如果不需要使用DAC和USB这些外设, 可以直接使用STM32F103 SPL进行开发.

前提

  • 已经安装 VSCode 和 PlatformIO 扩展
  • 在 PlatformIO 中, 已经安装 ST STM32 platform
  • ST-Link 模块用于下载

环境配置和示例运行

这个封装库经过调整, 适用于 PlatformIO 开发环境

创建项目

  1. 在 PlatformIO Home界面, 点击 "New Project"
  2. Project Name: 输入项目名
  3. Board: 选择 STM32F103C8T6 Generic 或 Bluepill F103C8 Generic
  4. Framework: CMSIS
  5. Location: 取消勾选, 指定项目路径
  6. 点击 "Finish"

这个操作会在前面指定的位置创建一个空项目.

导入 StdPeriphLib_CH32F1

将此仓库clone到本地,

# GitHub
git clone https://github.com/IOsetting/StdPeriphLib_CH32F1.git
# Gitee
git clone https://gitee.com/iosetting/std-periph-lib-ch32f1.git

重命名为lib并移入项目目录, 项目目录结构应当如下

├── include
├── lib
│   ├── Debug
│   ├── Examples
│   ├── StdPeriphDriver
│   ├── System
│   ├── USB-Config
│   └── USB-Driver
├── src
└── test

运行 GPIO 示例项目

将 lib/Examples/GPIO/GPIO_Toggle 目录下除了 ch32f10x_conf.h 以外的所有文件, 复制到 src 目录下. 不复制 ch32f10x_conf.h 文件是因为这个文件在 lib/System/ 下已经存在, 而且是一样的.

编译项目.

下载/烧录到开发板

编辑 platformio.ini, 添加一行 upload_flag 参数, 否则下载工具不能正确识别 CH32F103(以及其它国产克隆)芯片

upload_flags = -c set CPUTAPID 0x2ba01477

修改后的配置看起来应该是这样的

[env:bluepill_f103c8_ch32]
platform = ststm32
board = bluepill_f103c8
framework = cmsis
upload_flags = -c set CPUTAPID 0x2ba01477

然后使用STLink连接开发板, 点击下载就可以烧录至开发板

上一篇:沁恒CH32F103C8T6(三): PlatformIO DAPLink和WCHLink下载配置


下一篇:PlatformIO for CLion 创建工程时出现 gathering information问题解决方法