1. 程式人生 > 其它 >沁恆CH32F103C8T6(二): Linux PlatformIO環境配置, 示例執行和燒錄

沁恆CH32F103C8T6(二): Linux PlatformIO環境配置, 示例執行和燒錄

StdPeriphLib_CH32F1 是用於 CH32F1 系列MCU的 SPL 風格封裝庫, 使用 arm-none-eabi-gcc 工具鏈, 相容 Linux 下的 VSCode+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連線開發板, 點選下載就可以燒錄至開發板