手动移植FreeRTOS
先使用CubeMX生成一个基本的工程
基准时钟由SysTick改到TIM1 或者TIMx 因为系统的嘀嗒定时器要被 操作系统调用作为基准时钟
从https://www.freertos.org/zh-cn-cmn-s/a00104.html上下载FreeRTOS文件
下载这个就行 FreeRTOS 202212.01
解压后将
Source里面的文件复制到MDK文件里面
把接口文件protable
里面只保留这几个文件
Keil
MemMang 内存的管理
RVDS里面,有M3的 接口文件 只保留M3的接口文件
因为我用的是STM32F103
而后再keil里面创建这样的组,并添加文件
FreeRTOS/Port里面的文件在文件夹portable里面
内存的管理,堆选的heap_4 .c
并且把他们添加到头文件路径里面
之后添加配置文件,对系统进行裁剪的 在FreeRTOS文件夹
复制Config文件
并且人为添加宏定义
#define xPortPendSVHandler PendSV_Handler //异常处理 //操作系统,通过这3个中断来切换任务
#define xPortSysTickHandler SysTick_Handler //滴答定时器
#define vPortSVCHandler SVC_Handler //内核
- #define xPortPendSVHandler PendSV_Handler:这行代码将PendSV异常处理器与名为PendSV_Handler的函数关联起来。在FreeRTOS中,PendSV异常用于任务切换,当一个任务被挂起(即等待某些事件发生)时,系统会触发PendSV异常来执行任务切换操作。
- #define xPortSysTickHandler SysTick_Handler:这行代码将SysTick定时器中断处理器与名为SysTick_Handler的函数关联起来。SysTick定时器是一个由硬件提供的定时器,在FreeRTOS中常用于任务调度和时间管理。
- #define vPortSVCHandler SVC_Handler:这行代码将SVC(Supervisor Call)异常处理器与名为SVC_Handler的函数关联起来。SVC异常通常用于操作系统内核中的系统调用,例如任务创建、删除等操作。
是在使用FreeRTOS操作系统时常见的定义,用于将处理器的异常处理程序(例如PendSV、SysTick、SVC)与操作系统内核中的相关函数进行关联。
可以将操作系统,和中断联系起来
编译后重复定义了,把it.c里面的定义给 屏蔽掉
写任务文件
这样就做完了一个小demo!
CubeMX生成FreeRTOS
选择FREERTOS interface选择CMSIS_V1
ps:CMSIS_V1 一般选这个
CMSIS_V2 兼容更多的CPU ,但代码量更大。
写操作系统,就是写,任务函数。
这样,就写完一个小demo了。
本人水平较低,参考了他人文章,写着也是平时回顾,欢迎各位指正、交流!共勉!