沁恆CH32F103C8T6(二): Linux PlatformIO環境配置, 示例執行和燒錄
阿新 • • 發佈:2022-01-25
StdPeriphLib_CH32F1 是用於 CH32F1 系列MCU的 SPL 風格封裝庫, 使用 arm-none-eabi-gcc 工具鏈, 相容 Linux 下的 VSCode+PlatformIO 開發環境
目錄
StdPeriphLib_CH32F1封裝庫
封裝庫地址
- GitHub StdPeriphLib_CH32F1
- Gitee 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 開發環境
建立專案
- 在 PlatformIO Home介面, 點選 "New Project"
- Project Name: 輸入專案名
- Board: 選擇 STM32F103C8T6 Generic 或 Bluepill F103C8 Generic
- Framework: CMSIS
- Location: 取消勾選, 指定專案路徑
- 點選 "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連線開發板, 點選下載就可以燒錄至開發板