FreeRTOS 配置文件

熟悉FreeRTOSConfig.h主配置文件

#define configUSE_PREEMPTION		1									//1为抢占式调度器 0为协作式任务调度器
#define configUSE_IDLE_HOOK			0									//1使能idle hook才会调用空闲钩子函数 0则禁止
#define configUSE_TICK_HOOK			0									//1使能 0禁止
#define configCPU_CLOCK_HZ			( ( unsigned long ) 72000000 )		//MCU内核频率 单位Hz
#define configTICK_RATE_HZ			( ( TickType_t ) 1000 )				//1000 Hz  时间片长度 1ms
#define configMAX_PRIORITIES		( 5 )								//任务的最大优先级
#define configMINIMAL_STACK_SIZE	( ( unsigned short ) 128 )			//堆栈的最小值  如果小于此值可能造成任务内存不足挂掉
#define configTOTAL_HEAP_SIZE		( ( size_t ) ( 17 * 1024 ) )		//堆空间的大小   只有使用FreeRTOS提供的内存分配算法才会用到
#define configMAX_TASK_NAME_LEN		( 16 )								//任务函数名字最大长度  包含'\0'
#define configUSE_TRACE_FACILITY	0									//1 使能TRACE功能 0禁止   使用要三思  RAM占用很多
#define configUSE_16_BIT_TICKS		0									//1 portTickType被定义为16位无符号整型 0 32位无符号整型
#define configIDLE_SHOULD_YIELD		1									//1 当其他任务优先级与IDLE任务相同时  使IDLE占用的时间片更小

/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 		0									//1 则包含co-routines功能    
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )							//co-routines可以使用的优先级数量

/* 选择需要参加编译的功能 删除不需要的功能  节约RAM与ROM */

#define INCLUDE_vTaskPrioritySet		1
#define INCLUDE_uxTaskPriorityGet		1
#define INCLUDE_vTaskDelete				1
#define INCLUDE_vTaskCleanUpResources	0
#define INCLUDE_vTaskSuspend			1
#define INCLUDE_vTaskDelayUntil			1
#define INCLUDE_vTaskDelay				1

/* This is the raw value as per the Cortex-M3 NVIC.  Values can be 255
(lowest) to 0 (1?) (highest). */
#define configKERNEL_INTERRUPT_PRIORITY 		255						//决定了FreeRTOS内核使用的优先级
/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY 不能设置为0!!!See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */
#define configMAX_SYSCALL_INTERRUPT_PRIORITY 	191 					//决定了可以调用API函数的中断的最高优先级   高于这个值的中断处理函数不能调用过任何的API函数


/* 这是ST库允许使用的值,ST库允许使用16优先级值,0到15。这必须对应于configKERNEL_INTERRUPT_PRIORITY设置。这里15是最小的NVIC值255. */
#define configLIBRARY_KERNEL_INTERRUPT_PRIORITY	15

什么情况要开启钩子函数

#define configUSE_IDLE_HOOK			0									//1使能idle hook才会调用空闲钩子函数 0则禁止
#define configIDLE_SHOULD_YIELD		1									//1 当其他任务优先级与IDLE任务相同时  使IDLE占用的时间片更小

钩子函数
上层函数调用下层函数  并且传入一个函数指针  下层函数通过指针调用上层函数 由此就叫钩子函数

当创建的任务大部分时间都处于阻塞态。这种状态下所有的任务都不可运行,所以也不能被调度器选中。但是处理器又不可能什么代码都不运行,所以必须有一个空闲时执行的任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是唐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值