空闲任务钩子函数详解
1、钩子函数
freertos中有多个钩子函数,钩子函数类似回调函数,当某个功能(函数)执行的时候就会调用钩子函数,至于钩子函数的具体内容那就由用户来编写。如果不需要使用钩子函数的话就什么也不用管,钩子函数是一个可选功能,可以通过宏定义来选择使用哪个钩子函数,可选的钩子函数如表所示:
钩子函数的使用方法基本相同,用户使能相应的钩子函数,然后自行根据实际需求编写钩子函数的内容,下一节我们会以空闲任务钩子函数为例讲解如何使用钩子函数。
2、空闲任务钩子函数
在每个空闲任务运行周期都会调用空闲任务钩子函数,如果想在空闲任务优先级下处理某个任务有两种选择:
● 在空闲任务钩子函数中处理任务。
不管什么时候都要保证系统中至少有一个任务可以运行,因此绝对不能在空闲任务钩子函数中调用任何可以阻塞空闲任务的 api 函数,比如vtaskdelay(),或者其他带有阻塞时间的信号量或队列操作函数。
● 创建一个与空闲任务优先级相同的任务。
创建一个任务是最好的解决方法,但是这种方法会消耗更多的 ram。
要使用空闲任务钩子函数首先要在 freertosconfig.h 中将宏 configuse_idle_hook 改为1,然后编写空闲任务钩子函数vapplicationidlehook()。通常在空闲任务钩子函数中将处理器设置为低功耗模式来节省电能,为了与 freertos 自带的 tickless模式做区分,这里我暂且将这种低功耗的实现方法称之为通用低功耗模式(因为几乎所有的 rtos 系统都可以使用这种方法实现低功耗)。这种通用低功耗模式和
freertos 自带的 tickless 模式的区别我们通过下图来对比分析一下。
图中有三个任务,它们分别为一个空闲任务(idle),两个用户任务(task1 和task2),其中空闲任务一共有运行了三次,分别为(1)、(2)、(3),其中 t1 到 t12 是 12 个时刻
中航光电高压小电流EVH2系列产品介绍
汇川技术助力汽车制造业大批量多品种柔性化生产
SD协会近期宣布了一项名为microSD Express的新标准
怎样学习摩尔斯电码
如何使用SIM900A将传感器数据发送到网站
空闲任务钩子函数详解
腾讯最新研发智慧城市加速器正式启动全球招募
华为发布Digital strategy助力运营商数字化转型
分享两个电源电路的原理及PCB布板方式
插接IDE数据线
伺服系统什么意思_伺服系统的作用是什么
超级充电器重大突破:手机30秒满血复活!
三星Galaxy A21渲染图曝光,搭载深度传感器和双LED闪光灯
基于远程数据处理的智慧城市机器人视觉SLAM
物联网全栈教程-从云端到设备(一)
西欧Q3手机市场报告公布:三星位居榜首
人工智能时代,分销商如何帮助改变世界?
tda2822m中文资料汇总(tda2822m引脚图及参数_内部结构及应用电路)
智能魔镜,将是智能家居市场下一个角逐点!
确认温湿度试验条件的注意事项