STM32F103C8T6移植FreeRTOS V9.0.0

一、环境

  • STM32F103C8T6、Keil 5、ST-Link、FreeRTOS V9.0.0

二、准备工作

  1. 下载

    1. 下载FreeRTOS V9.0.0:代码托管网站:

      FreeRTOS Real Time Kernel (RTOS) - Browse /FreeRTOS at SourceForge.netMarket leading real time kernel for 40+ microcontroller architecturesicon-default.png?t=N7T8https://sourceforge.net/projects/freertos/files/FreeRTOS/
    2. 下载FreeRTOS V9.0.0.zip

    3. 解压之后得到如下文件,这里我们只会用到FreeRTOS这个文件夹

  2. 文件夹介绍

    1. 打开FreeRTOS文件夹。Demo是一些官方的例程,License是一些许可证书(移植过程用不到),Source是FreeRTOS的内核源码文件
    2. 打开Source。include里面是一些头文件,portable里面是对应开发板的接口文件,下面的一些.c文件是内核文件
    3. 打开portable文件夹。对我们有用的只要下图所示三个文件夹,Memmang文件夹下是内存管理文件,推荐移植 heap_4.c ,RVDS文件夹下是对应的开发板接口文件,我们需要使用ARM_CM3文件夹下的 port.c 和 portmacro.h文件
  3. 模板准备

    1. 准备一个STM32工程模板用于移植FreeRTOS我使用的模板icon-default.png?t=N7T8https://pan.baidu.com/s/1Lrdj8JxS7fZW7RJXcqQPwA?pwd=4132
    2. 修改工程模板名字为:1 STM32F103  FreeRTOS移植模板,后续将在这个模板中进行FreeRTOS的移植
    3. 工程模板下的已有文件

三、开始移植

  1. 新建文件夹用于存放移植FreeRTOS的文件

    1. FreeRTOS_core存放内核文件,FreeRTOS_port存放接口文件,头文件统一放在Include文件夹
  2. 拷贝文件

    1. 拷贝内核文件:将官方FreeRTOS V9.0.0的Source文件夹下的共6个.c文件拷贝到我们自己创建的FreeRTOS_core文件夹下
    2. 拷贝内存管理及接口文件:将Memmang下的 heap.c 和 RVDS 下的 ARM_CM3下的port.c拷贝到我们自己创建的FreeRTOS_port文件夹,拷贝完成如图
    3. 拷贝头文件:包括include中的所有 .h 文件和RVDS 下的 ARM_CM3下的 portmacro.h 文件,统一拷贝至工程模板中的Include文件夹。拷贝完成如图(显示部分)
    4. 拷贝 FreeRTOSConfig.h 文件,这个文件需要在例程源码中找,由于官方的文件没有中文注释,这里推荐B站普中视频教程中提到的文件。下面放上普中教程的FreeRTOS移植模板。普中-FreeRTOS移植模板icon-default.png?t=N7T8https://pan.baidu.com/s/1ngTbd3BY1iCpQZRq6DCCag?pwd=4132
    5. 打开普中-FreeRTOS移植模板,找到 FreeRTOSConfig.h 文件,拷贝到我们自己的Include文件夹中
    6. 拷贝 system、SysTick、usart文件,.c文件拷贝至我们自己的System文件夹,.h文件拷贝至我们自己的Include文件夹
    7. 拷贝 led 和 main文件便于后续验证FreeRTOS移植是否成功。led.c拷贝至Hardware文件夹,led.h拷贝至Include文件夹,main.c拷贝至User文件夹
  3. 打开Keil ,添加相应的组、文件、路径等

    1. 添加组
    2. 向组中添加文件,如下图
    3. 添加文件路径
  4. 修改

    1. 打开 stm32f10x_it.c ,找到 SVC_Handler 和 PendSV_Handler 两个函数,将他们注释
    2. 在 stm32f10x_it.c 中找到 SysTick_Handler 函数,做如下修改并添加需要的头文件
    3. 这时编译一下,发现有21个Errors,如下图。这是因为普中教程使用的开发板容量较大,而我使用的是STM32F103C8T6,只要20k的RAM。所以需要打开FreeRTOSConfig.h文件(编译过后可在port.c文件下找到),修改“系统所有总的堆大小”,原配置是36*1024,我们改成15*1024
    4. 再编译,0 Error, 0 Warning
  5. 验证Free RTOS移植是否成功

    1. 根据自己的情况可修改led.h文件,我是将led接在PA0引脚,所以我做了如下修改
    2. 将程序烧录到开发板,观察led是否会闪烁,如果没有预期现象,可先检查一下烧录是否成功
  6. 至此,FreeRTOS移植完成!

  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值