当前位置:   article > 正文

FreeRTOS移植到stm32_freertos移植stm32

freertos移植stm32

一、下载FreeRTOS源码

        官网:FreeRTOS官网

        下载第一个带有示例的

 二、在自己stm32工程代码中建立FreeRTOS文件夹,在此文件夹下建立port、src两个子文件夹,(include文件夹到时候在源码直接拷贝过来)

include:存放FreeRTOS源码头文件

src:存放相关源码

port:存放内存管理,平台,内核相关代码

 三、移植FreeRTOS代码到自己工程目录

  1. 打开 FreeRTOS V9.0.0 源码,在“FreeRTOSv9.0.0\FreeRTOS\Source”目录下找到 所有的‘.c 文件’,将它们拷贝到我们新建的 src 文件夹中
  2. 打开 FreeRTOS V9.0.0 源码,在“FreeRTOSv9.0.0\FreeRTOS\Source\portable”目录下找到“MemMang”文件夹与“RVDS”文件夹,将它们拷贝到我们新建的 port 文件夹中
  3. 打开 FreeRTOS V9.0.0 源码,在“FreeRTOSv9.0.0\ FreeRTOS\Source”目录下找到 “include”文件夹,它是我们需要用到 FreeRTOS 的一些头文件,将它直接拷贝 到我们新建的 FreeRTOS 文件夹中
  4. 打开 FreeRTOSv9.0.0 源码,在“FreeRTOSv9.0.0\FreeRTOS\Demo”文件夹下面找到 “ CORTEX_STM32F103_Keil ” 这 个 文 件 夹 , 双 击 打 开 , 在 其 根 目 录 下 找 到 这 个 “FreeRTOSConfig.h”文件,然后拷贝到我们工程的 user 文件夹下即可

 四、在keil中配置

1.新建FreeRTOS/src和FreeRTOS/port分组,将源代码添加到工程,如下图

 

2.配置头文件路径

3.修改 FreeRTOSConfig.h

(1).修改与对应开发板的头文件 , 如果是使用 STM32F1 的开发板,则包含 F1 的头文件#include "stm32f10x.h",同理是 使用了其它系列的开发板,则包含与开发板对应的头文件即可

(2).定义两个宏

  • #define xPortPendSVHandler   PendSV_Handler
  • #define vPortSVCHandler        SVC_Handler

注意:需要根据自己开发板的实际情况修改系统总的堆大小,修改下面这个宏

#define configTOTAL_HEAP_SIZE           ((size_t)(15*1024))
4.修改 stm32f10x_it.c  

(1).包含#include "FreeRTOS.h"头文件

(2).注释PendSV_Handler()SVC_Handler()这两个函数

(3).修改中断服务函数

  1. //systick 中断服务函数
  2. void SysTick_Handler(void)
  3. {
  4. #if (INCLUDE_xTaskGetSchedulerState == 1 )
  5. if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED)
  6. {
  7. #endif /* INCLUDE_xTaskGetSchedulerState */
  8. xPortSysTickHandler();
  9. #if (INCLUDE_xTaskGetSchedulerState == 1 )
  10. }
  11. #endif /* INCLUDE_xTaskGetSchedulerState */
  12. }

注意:如果发生下面报错,则将#include "FreeRTOSConfig.h"头文件中的

#define INCLUDE_xTaskGetSchedulerState       1       注释即可

 

至此移植完成

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/730316
推荐阅读
相关标签
  

闽ICP备14008679号