PlatformIO 下 stm32f103c8t6 标准库开发 FreeRTOS移植

相关代码

gitee,随手点个start吧

环境

硬件

  • STM32F103C8T6 最小系统板
  • STLINK V2

软件

  • VSCode
  • VSCode插件 platformio

标准库CMSIS,项目

参照Bilibili教程 --《【VSCode & Platform & STM32】使用PlatformIO新建CMSIS标准库》

移植FreeROTS

FreeRTOS: FreeRTOSV9.0.0

基本上是参照《FreeRTOS(教程非常详细)》,但是有些许改变,下面我重新讲解整个流程。

  1. 建立一个基本标准库项目
|
├─include  ----------------------------> 存放系统头文件
├─src
|  |─main.c
│  ├─STM32F10x  -----------------------> 存放系统配置文件
│  └─STM32F10x_StdPeriph_Driver -------> 官方提供的标准库操作文件
│      ├─inc
│      └─src

请添加图片描述
请添加图片描述

  1. 移植 FreeRTOS

请添加图片描述
- 将 Source 目录下的 inclue 目录下的文件复制到项目目录的 include 文件夹下
Source 目录下的 C文件 复制到项目目录下的 src/FreeRTOS 目录
- 移植port相关文件
请添加图片描述
- 将 port.c 文件复制到 src/PORT 目录
- 将 portmacro.h 文件复制到 include 目录

  • 移植堆内存相关
    请添加图片描述
    • heap4.c 复制到 src/MemMang 目录
  • 移植FreeRTOSConfig.h文件
    请添加图片描述
    • 该文件是FreeRTOS的配置文件,主要从示例中拷贝过来,由于platformio使用的是开源的arm-gcc编译器,所以需要到对应处理器以及对应编译器处复制文件到 include 文件夹
      最终目录文件如下
├─include
└─src
    ├─main.c
    ├─MemMang
    ├─Port
    ├─RTOS
    ├─STM32F10x
    └─STM32F10x_StdPeriph_Driver
        ├─inc
        └─src
  1. 一些修改
    请添加图片描述
  • 在FreeRTOSConfig.h中添加 #include "stm32f10x.h"

  • FreeRTOS使用到了一些中断,标准库定义了这些中断的中断函数,大部分都是一个空函数或者空循环,我们需要将FreeRTOS使用到的中断函数设置成FreeRTOS提供的中断函数,需要修改定义,一个简单的方法是在FreeRTOSConfig.h中添加宏定义,同时将stm32f10x_it.c中对应中断函数注释掉
    请添加图片描述

#define xPortPendSVHandler  PendSV_Handler
#define vPortSVCHandler     SVC_Handler
#define xPortSysTickHandler SysTick_Handler

参考

  1. 【VSCode & Platform & STM32】使用PlatformIO新建CMSIS标准库
  2. FreeRTOS(教程非常详细)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Geek V

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值