Free rtos笔记

#Free rtos笔记 #

任务函数:

void ATaskFunction( void *pvParameters );

删除任务函数:

vTaskDelete( NULL );

创建任务API:

portBASE_TYPE xTaskCreate( pdTASK_CODE pvTaskCode,
			const signed portCHAR * const pcName,
			unsigned portSHORT usStackDepth,
			void *pvParameters,
			unsigned portBASE_TYPE uxPriority,
			xTaskHandle *pxCreatedTask );

pvTaskCode :

永不退出的 C 函数,通常是一个死循环,参数pvTaskCode 只一个指向任务的实现函数的指针(效果上仅仅是函数
名)

pcName :

具有描述性的任务名。这个参数不会被 FreeRTOS 使用。其只是单
纯地用于辅助调试。
应用程序可以通过定义常量 config_MAX_TASK_NAME_LEN 来定
义任务名的最大长度——包括’\0’结束符。如果传入的字符串长度超过了这个最大值,字符串将会自动被截断。

usStackDepth

当任务创建时,内核会分为每个任务分配属于任务自己的唯一状态。usStackDepth 值用于告诉内核为它分配多大的栈空间。
这个值指定的是栈空间可以保存多少个字(word),而不是多少个字
节(byte)。比如说,如果是 32 位宽的栈空间,传入的 usStackDepth值为 100,则将会分配 400 字节的栈空间(100 * 4bytes)。栈深度乘以栈宽度的结果千万不能超过一个 size_t 类型变量所能表达的最大值。
应用程序通过定义常量 configMINIMAL_STACK_SIZE 来决定空闲
任务任用的栈空间大小。在 FreeRTOS 为微控制器架构提供的
Demo 应用程序中,赋予此常量的值是对所有任务的最小建议值。
如果你的任务会使用大量栈空间,那么你应当赋予一个更大的值。
没有任何简单的方法可以决定一个任务到底需要多大的栈空间。计
算出来虽然是可能的,但大多数用户会先简单地赋予一个自认为合
理的值,然后利用 FreeRTOS 提供的特性来确证分配的空间既不欠
缺也不浪费。

pvParameters

任务函数接受一个指向 void 的指针(void*)。 pvParameters 的值即是传递到任务中的值。

uxPriority :

指定任务执行的优先级。优先级的取值范围可以从最低优先级 0 到
最高优先级(configMAX_PRIORITIES – 1)。
configMAX_PRIORITIES 是一个由用户定义的常量。优先级号并没
有上限(除了受限于采用的数据类型和系统的有效内存空间),但最
好使用实际需要的最小数值以避免内存浪费。如果 uxPriority 的值
超过了(configMAX_PRIORITIES – 1),将会导致实际赋给任务的优
先级被自动封顶到最大合法值。

pxCreatedTask pxCreatedTask :

用于传出任务的句柄。这个句柄将在 API 调用中对该创建出来的任务进行引用,比如改变任务优先级,或者删除任务。
如果应用程序中不会用到这个任务的句柄,则 pxCreatedTask 可以
被设为 NULL。
返回值 有两个可能的返回值:

  1. pdTRUE
    表明任务创建成功。
  2. errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY
    由于内存堆空间不足, FreeRTOS 无法分配足够的空间来保存任务
    结构数据和任务栈,因此无法创建任务
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值