# platformioForStm32 **Repository Path**: esheeper/platformio-for-stm32 ## Basic Information - **Project Name**: platformioForStm32 - **Description**: VSCode上的platformio-for-stm32f103c8t6 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-09-24 - **Last Updated**: 2025-08-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 环境 ### 硬件 - STM32F103C8T6 最小系统板 - STLINK V2 ### 软件 - VSCode - VSCode插件 `platformio` ## 标准库CMSIS,项目 参照Bilibili教程 --《【VSCode & Platform & STM32】使用PlatformIO新建CMSIS标准库》 ## 移植FreeROTS FreeRTOS: [FreeRTOSV9.0.0] 基本上是参照《FreeRTOS(教程非常详细)》,但是有些许改变,下面我重新讲解整个流程。 1. 建立一个基本标准库项目 ```bash | ├─include ----------------------------> 存放系统头文件 ├─src | |─main.c │ ├─STM32F10x -----------------------> 存放系统配置文件 │ └─STM32F10x_StdPeriph_Driver -------> 官方提供的标准库操作文件 │ ├─inc │ └─src ``` ![Include 文件详情](./img/include.png) ![SRC目录详情](./img/src.png) 2. 移植 FreeRTOS - 下载[FreeRTOSV9.0.0] - 移植FreeRTOS主要功能实现代码 ![C文件和头文件](./img/FreeRTOS.png) - 将 `Source` 目录下的 `inclue` 目录下的文件复制到项目目录的 `include` 文件夹下 - 将 `Source` 目录下的 `C文件` 复制到项目目录下的 `src/FreeRTOS` 目录 - 移植port相关文件 ![Port相关文件](./img/Port.png) - 将 `port.c` 文件复制到 `src/PORT` 目录 - 将 `portmacro.h` 文件复制到 `include` 目录 - 移植堆内存相关 ![heap相关](./img/heap.png) - 将 `heap4.c` 复制到 `src/MemMang` 目录 - 移植FreeRTOSConfig.h文件 ![FreeRTOSConfig.h文件](./img/FreeRTOSConfig.png) - 该文件是FreeRTOS的配置文件,主要从示例中拷贝过来,由于platformio使用的是开源的arm-gcc编译器,所以需要到对应处理器以及对应编译器处复制文件到 `include` 文件夹 **最终目录文件如下** ``` ├─include └─src ├─main.c ├─MemMang ├─Port ├─RTOS ├─STM32F10x └─STM32F10x_StdPeriph_Driver ├─inc └─src ``` 3. 一些修改 ![change](./img/change.png) - 在FreeRTOSConfig.h中添加 `#include "stm32f10x.h"` - FreeRTOS使用到了一些中断,标准库定义了这些中断的中断函数,大部分都是一个空函数或者空循环,我们需要将FreeRTOS使用到的中断函数设置成FreeRTOS提供的中断函数,需要修改定义,一个简单的方法是在FreeRTOSConfig.h中添加宏定义,同时将stm32f10x_it.c中对应中断函数注释掉 ![it](./img/it.png) ```c #define xPortPendSVHandler PendSV_Handler #define vPortSVCHandler SVC_Handler #define xPortSysTickHandler SysTick_Handler ``` ## 参考 1. [【VSCode & Platform & STM32】使用PlatformIO新建CMSIS标准库](https://www.bilibili.com/video/BV1314y1j7b3/?spm_id_from=333.337.search-card.all.click&vd_source=bd7a2cdb8f3f359974d6d9b430e7c9cc) 2. [FreeRTOS(教程非常详细)](https://blog.csdn.net/qq_61672347/article/details/125748646#:~:text=FreeRTOS%E8%AF%95%E5%8D%B7) [FreeRTOSV9.0.0]: https://jaist.dl.sourceforge.net/project/freertos/FreeRTOS/V9.0.0/FreeRTOSv9.0.0.zip?viasf=1