公司动态

认识FREERTOS

📅 2026/9/1 15:49:44
认识FREERTOS
1.FreeRTOS总体介绍调度器负责管理任务之间的切换有三种调度算法。空闲任务当“无任务可切”的时候调度器就会选择“空闲任务”来执行。定时器任务服务于软件定时器。Systick中断用于产生系统节拍计时用的并驱动调度器的“时间片机制”。PendSV中断用来执行后续的任务切换它是FreeRTOS任务调度的主力军SVC中断只用来启动第一个任务。内核对象包括了队列、队列集合、事件组、软件定时器、各种信号量二进制信号量、计数信号量、互斥锁和递归互斥锁、事件组、消息缓冲区和流缓冲区等。除此之外任务也属于内核对象不管是调度器创建的任务还是用户创建的任务。堆内存管理方案5种堆内存管理方案heap_1、heap_2、heap_3、heap_4和heap_5。开发的时候选一个就好。2. FreeRTOS内核文件结构2.1配置文件——FreeRTOSConfig.hconfigCPU_CLOCK_HZ-单片内核的运行频率#define configCPU_CLOCK_HZ ( ( unsigned long) 72000000 )configTICK_TYPE_WIDTH_IN_BITS - 设置TickType_t类型的位宽用多少位来表示当前时间越大回绕间隔越长根据单片机类型选择#define configTICK_TYPE_WIDTH_IN_BITS TICK_TYPE_WIDTH_32_BITSconfigKERNEL_INTERRUPT_PRIORITY - PendSV和SYSTICK的中断优先级设置为最低优先级#define configKERNEL_INTERRUPT_PRIORITY (uint32_t)(15 4)configMAX_SYSCALL_INTERRUPT_PRIORITY - 能够调用FreeRTOS API的最高优先级高于设定值的优先级中断里面不能调用FreeRTOS的任何API#define configMAX_SYSCALL_INTERRUPT_PRIORITY (uint32_t)(5 4)onfigUSE_TIME_SLICING - 是否使用时间片#define configUSE_TIME_SLICING 1//带时间片3.安装中断服务程序找到 port.c的中断服务函数xPortPendSVHandler()//切换任务上下文 xPortSystickHandler()//产生时间偏和系统节拍 xvPortSVCHandler()//启动第一个任务找到... \ startup \ startup_stm32f103rctx.s文件进行替换4.使用其它定时器作为HAL库的时间基准