本文是笔者在学习 正点原子官方 的《【正点原子】手把手教你学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报错
排除了参数过大的问题
最后找到问题了,是管理内存设置大了
最后编译了一下,0错误0警告