FreeRTOSConfig配置项(持续完善)

  • configMAX_PRIORITIES:定义优先级范围,0~(configMAX_PRIORITIES – 1),数值越高,优先级越高。这点跟stm32中断优先级相反。
  • configCPU_CLOCK_HZ:标识系统时钟频率,修改它不会使硬件时钟频率变化,需要与实际硬件时钟频率保持一致。
  • configTICK_RATE_HZ:设置Tick频率,如设置1000,则周期为1ms。开启系统滴答定时器,每隔一个Tick周期中断一次,于中断函数中处理一些事情,比如交替任务的执行。
  • configUSE_IDLE_HOOK:置1启用空闲任务的钩子函数,钩子函数可自行编写。空闲任务是由任务调度器自动创建的优先级为0的任务。只有空闲任务执行的时候,钩子函数才会被执行。
  • configUSE_PREEMPTION:置1启用任务抢占,即优先级高的任务可以中断正在运行的低优先级任务,转而运行自己。若置0关闭任务抢占,则除非低优先级任务进入阻塞(Blocked)或暂停(suspended),不然任何优先级的任务都不能抢占执行。
  • configUSE_TIME_SLICING:同优先级任务是否轮流执行。置1则同优先级任务周期交替执行,周期为1个Tick周期,置1时必须启用抢占,即configUSE_PREEMPTION置1。置0则除非当前任务阻塞(Blocked)、暂停(suspended)或被高优先级任务抢占(需要启用抢占),不然将一直运行注:此时空闲任务无法执行)。

启用任务抢占关闭轮流执行的情况下,如有A、B两个同级低级任务和一个C高优先级任务,A、B、C均死循环,C死循环内有定时阻塞。则运行现象为:C先运行,阻塞后接着A运行,C定时阻塞结束后抢占运行,阻塞后B运行……

即低优先级任务每次被打断即交替一次。若A、B均0优先级,则空闲任务也有机会执行

  • configIDLE_SHOULD_YIELD:空闲任务礼让用户任务开关。若置0关闭,则同级任务执行周期相等。若置1开启,则空闲任务在一次循环执行(包括钩子函数)后触发任务调度,切换任务。

你可能感兴趣的:(stm32,stm32,arm,嵌入式硬件,系统架构)