FreeRTOS移植——学习笔记1

本文是笔者在学习 正点原子官方 的《【正点原子】手把手教你学FreeRTOS实时系统》系列视频时整理的笔记。
视频讲解清晰透彻,非常感谢UP主的无私奉献!原课程链接如下:
👉 B站视频链接:【正点原子】手把手教你学FreeRTOS实时系统_哔哩哔哩_bilibili

1、FreeRTOS文件移植

①复制内存管理实验到我们新创建的统一存放RTOS的文件夹下:

②在该实验文件里新建一个名为“FreeRTOS"的文件夹。在“FreeRTOS"的文件夹下再新建连个文件夹

③先将Free RTPOS的源码全部拷贝到新创建的“FreeRTOS"的文件夹里。

④“portable"文件夹只保留三个文件

⑤再将.c文件全部放在“CODE”文件夹内。

因为要用到算法4,所以将该文件移动到“PORT”文件夹内。

因为使用的单片机是stm32f103rct6,所以将内核3的文件里的port移动到“PORT”文件夹内。

⑥在keil里添加源文件路径

⑦再在keil里添加文件就好啦

⑧随后再添加这两个头文件的路径

⑨添加FreeRTOSconfig.h文件

拷贝到我们的基础工程目录下

2、修改文件内容

①修改system文件

sys.h

定义为1

usart.c

原本在使用μS/OS的时候,进入和退出终端需要添加OSIntEnter()和OSIntExit()函数,这是μS/OS对于中断的相关处理机制,而FreeRTOS中没有这种机制,因此要删除

删除不使用的头文件

delay.c

①删除一个全局变量,6个宏定义,3个函数

这个不要删

删到这

②添加FreeRTOS的相关代码

这个函数是用于处理FreeRTOS系统时钟节拍的。

③修改头文件和四个函数

删除delay_Init()中不使用的代码

删除适用于μS/OS用于锁定任务调度器的自定义函数

将原来os的头文件删掉,修改为Free RTOS用到的

②修改中断相关文件

SysTick中断、SVC中断、PendSV中断

stm32f1XX_it.h

添加头文件

给三个中断的函数添加条件编译

stm32f103xe.h

编译之后

将"4U"改为"4"

③添加TIMER定时的文件

记得填加路径

3、测试移植

①最后测试一下移植是否成功,添加这两个文件到USER文件夹下

②编译的时候出现了一个问题,No space in execution regions with报错

看到该链接keil5出现 Error: L6406E: No space in execution regions with .ANY selector matching queue.o(.bss). 的原因总结 - chaina_家长 - 博客园

排除了参数过大的问题

最后找到问题了,是管理内存设置大了

最后编译了一下,0错误0警告

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值