百问7天物联网智能家居实战训练营提高班 —— 移植FreeRTOS

移植FreeRTOS:

1.移植FreeRTOS内核源码——FreeRTOS-Kernel;

2.子系统框架的程序设计;

资源获取:

1.官方网址:www.freertos.org

2.源码获取:第一个版本是最新版本,第二个版本是最稳定的版本

3.参考手册:《The FreeRTOS Reference Manual》 

移植步骤:

1.将“FreeRTOS-LTS\FreeRTOS\FreeRTOS-Kernel”拷贝到新建的工程目录文件夹中的                        4_MiddleWare文件夹下;  

2.新建FreeRTOSConfig.h,并根据官方参考和实际需求添加修改;

3.宏定义与弱化内核中断服务函数;

4.按需添加FreeRTOS的内核源码;

5.验证:创建任务并开启调度器;

编写头文件:

以下是官方推荐头文件编写

由于STM32F107C8T6支持的最大时钟为72mHZ,滴答时钟应该默认是和CPU的时钟一样如c8t6默认上电是8mHZ,tick rate应改为1000因此需要将红框中的参数修改为

 接下来关于内存分配:

 第一行第二行表示既支持静态分配内存也支持动态分配内存,可根据自己需求修改;

第三行设置的是总的堆大小,默认为10k即1024x10

第四行是使能一个在应用程序中分配堆空间

 分配协同程序的依赖、软件定时器的依赖和内核中断的配置:

  1. 如果使用到软件定时器则将#define configUSE_TIMERS 1;使用不到则#define configUSE_TIMERS 0
  2. 第一行内核的中断优先级习惯性定位为最低优先级,Cortex-M3最低的中断优先级是255因此一般将[denpend of processor]改为255;第二行为最大的系统调用中断优先级,其是根据应用程序来选择的,不能低于内核中断优先级;第三行与第二行设置为一样即可。

 宏定义:

由于我们是将FreeRTOS移植到Cortex-m3内核,则关于Cortex-m3内核中断在FreeRTOS内核中是会被重新实现的,所以我们要在Cortex-m3处理器写一个基于FreeRTOS内核的应用程序的话,就必须将Cortex-m3内核的下图所示中的三个中断服务函数复写,或者说如果写了要在前面加一个_weak来修饰来保证FreeRTOS在调用它的三个handler时优先调用的是FreeRTOS内核实现的而不是自己写的那些handler(下图红字),即需要在it.c文件中给三个中断服务函数加前缀。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值