RTOS 在 stm32f407 探索者上的移植(二) FreeRTOS v9.0.0 移植

freertos 移植考虑最大的问题 是 
	1.FreeRTOSConfig.h 的修改
	2.内存管理方案的选择
	3.编译方案及处理器的选择 : FreeRTOS/Source/portable/GCC/ARM_CM4F

  • freertos 代码下载
https://sourceforge.net/projects/freertos/files/FreeRTOS/
代码托管网站上可以选择代码版本 //下载FreeRTOSv9.0.0.zip

http://www.freertos.org/
官方网站只能下载最新版,且为exe,运行exe会解压出代码
mkdir FreeRTOS_9_0_0/CORE -p
cp ../FreeRTOSv9.0.0/FreeRTOS/Source/*.c FreeRTOS_9_0_0/CORE

mkdir FreeRTOS_9_0_0/PORT -p
cp ../FreeRTOSv9.0.0/FreeRTOS/Source/portable/MemMang/heap_4.c   FreeRTOS_9_0_0/PORT #内存管理方案,有5个,选了heap_4
cp ../FreeRTOSv9.0.0/FreeRTOS/Source/portable/GCC/ARM_CM4F/*  FreeRTOS_9_0_0/PORT    #因为是arm-gcc方案,所以选择了 GCC,因为是stm32f407,所以选择了ARM_CM4F
cp ../FreeRTOSv9.0.0/FreeRTOS/Demo/CORTEX_M4F_STM32F407ZG-SK/FreeRTOSConfig.h FreeRTOS_9_0_0/PORT/   #核心配置文件,因为是stm32f407,所以选择了 CORTEX_M4F_STM32F407ZG-SK
  • 文件修改,保证编译
FreeRTOS_9_0_0/PORT/FreeRTOSConfig.h
87c87
< #if defined (__ICCARM__)||defined(__CC_ARM) ||defined(__GNUC__)
---
> #ifdef __ICCARM__
93,94c93,94
< #define configUSE_IDLE_HOOK                           0
< #define configUSE_TICK_HOOK                           0
---
> #define configUSE_IDLE_HOOK                           1
> #define configUSE_TICK_HOOK                           1
106c106
< #define configCHECK_FOR_STACK_OVERFLOW        0
---
> #define configCHECK_FOR_STACK_OVERFLOW        2
108c108
< #define configUSE_MALLOC_FAILED_HOOK  0
---
> #define configUSE_MALLOC_FAILED_HOOK  1

  • 文件修改(只有一处,SysTick_Handler),保证运行
FreeRTOS_9_0_0/PORT/FreeRTOSConfig.h
//#define xPortSysTickHandler SysTick_Handler // 注释该句
 void SysTick_Handler(void)
 {                                 
    if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED){
        xPortSysTickHandler()
    }
 }
代码及移植过程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值