STM32F2X移植FREERTOS

    第一次开始写技术总结博客,就简单的写些点;

1、要移植FREERTOS,首先要去下个,我是去直接下了个最新版的FREERTOS,下载地点如下:

https://www.freertos.org/a00104.html,直接下载,我下的时候最新版本是V10.0.1


下完包里有source源文件与demo工程 文件,如果有符合的型号,可以直接移植工程,也省了建立工程;当然就算型号不同也可以直接移植,我这里是自己建立,走一遍,加深印象;

需要的文件:

    FreeRTOS的文件结构非常简单,移植或者版本升级替换也非常方便。
    1)与FreeRTOS内核有关的文件数量仅为3个,分别是list.c queue.c tasks.c
    该文件位于FreeRTOS\Source
    2)与内存分配有关的文件共有4个,分别是 heap_1.c,heap_2.c,heap_3.c,heap_4.c。4个文件只需选择其中的1个,STM32选择heap_2.c。
    该文件位于 FreeRTOS\Source\portable\MemMang
    3)与移植相关的代码包括 port.c,portasm.s,portmacro.h。这些代码不但和编译器有关还和平台(MCU)有关。FreeRTOS先以编译器为大类,然后再以平台(MCU)为小类。在这里选择IAR编译器,平台为ARM_CM3。
    该文件位于 FreeRTOS\Source\portable\IAR\ARM_CM3
    4)除了上述内容之外,还包括FreeRTOS内核相关的头文件。
    该文件 FreeRTOS\Source\include

当然我这里把所有的.C都包含进来了。


2、接下来修改启动代码

由于SVC_Handle,PendSV_Handle和SysTick_Handle在portasm.s中被重定义,所以需要在启动代码中修改这些中断向量的名称,并声明这些中断向量为外部函数。这也是初次使用FreeRTOS容易范的错误。

PendSV_Handler、SysTick_Handler、SVC_Handler这3个函数在startup_stm32f2xx.s启动文件中,启动中需要 使用到这3个,而

xPortPendSVHandler、xPortSysTickHandler、vPortSVCHandler在portasm.s中,2者名称不一样,一般操作是在FREERTOSCONFIG.H里增加宏定义,如下 :

#define xPortPendSVHandler   PendSV_Handler
#define xPortSysTickHandler  SysTick_Handler

#define vPortSVCHandler      SVC_Handler

当然在stm32f2xx.c中需要注释掉原来PendSV_Handler,xPortSysTickHandler;

3、设置IAR配置

常规的我就不讲了,最主要的就是选择好型号,配置路径如下


常规不用设置汇编,但此处需要对汇编进行路径定义,要不然编译会出错


其它按常规的来就行了。

4、配置freertosconfig.h

对于用户来讲,Freertos已经提供了一个窗口给用户配置文件,即freertosconfig.h

对于里面各项定义,自己可以查询百度下,其中:

#define configCPU_CLOCK_HZ ( ( unsigned long ) SystemCoreClock )编译时需要声明,不然会出错;

freertosV10.0.1此版本很多宏定义已经没有放置在freertosconfig.h,当用户需要用到哪个模块时,需要自己将宏定义放进来,如要用到系统软定时器组,需要自己添加 :

/* set soft timers para. */
#define configUSE_TIMERS 1
#define configTIMER_TASK_PRIORITY  2
#define configTIMER_QUEUE_LENGTH   3
#define configTIMER_TASK_STACK_DEPTH    512

/*end of set soft timer para */

5、建立完整工程,调试

上面配置完毕后,添加自己的工程调试;

我自己添加工程如下:


接下来设置硬件初始化,添加任务,启动任务;

特别需要注意的是,任务建立时,给任务分配的空间一定要足,刚开始尽量多分配一点,以免内存不足时,出现莫名其妙的问题,还不好找问题;我调试过程中,就出现了几次这样的问题,后来才发现 是空间不足;



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值