文件名称:任务函数-ri5cy_user_manual
文件大小:3.05MB
文件格式:PDF
更新时间:2024-06-23 11:42:21
FreeRTOS 中文
1.2 任务函数 任务是由 C 语言函数实现的。唯一特别的只是任务的函数原型,其必须返回 void, 而且带有一个 void 指针参数。其函数原型参见程序清单 1。 void ATaskFunction( void *pvParameters ); 程序清单 1 任务函数原型 每个任务都是在自己权限范围内的一个小程序。其具有程序入口,通常会运行在一 个死循环中,也不会退出。一个典型的任务结构如程序清单 2 所示。 FreeRTOS 任务不允许以任何方式从实现函数中返回——它们绝不能有一 条”return”语句,也不能执行到函数末尾。如果一个任务不再需要,可以显式地将其删 除。这也在程序清单 2 展现。 一个任务函数可以用来创建若干个任务——创建出的任务均是独立的执行实例,拥 有属于自己的栈空间,以及属于自己的自动变量(栈变量),即任务函数本身定义的变量。 void ATaskFunction( void *pvParameters ) { /* 可以像普通函数一样定义变量。用这个函数创建的每个任务实例都有一个属于自己的iVarialbleExample变 量。但如果iVariableExample被定义为static,这一点则不成立 – 这种情况下只存在一个变量,所有的任务实 例将会共享这个变量。 */ int iVariableExample = 0; /* 任务通常实现在一个死循环中。 */ for( ;; ) { /* 完成任务功能的代码将放在这里。 */ } /* 如果任务的具体实现会跳出上面的死循环,则此任务必须在函数运行完之前删除。传入NULL参数表示删除 的是当前任务 */ vTaskDelete( NULL ); } 程序清单 2 典型的任务函数结构