- 101
- 0
- 约2.68万字
- 约 30页
- 2017-04-12 发布于湖北
- 举报
FreeRTOSLWIP汇编
FreeRTOS与LWIP的移植1 FreeRTOS任务管理1-1任务函数任务是由C 语言函数实现的。唯一特别的只是任务的函数原型,其必须返回void,而且带有一个void 指针参数(void ATaskFunction( void *pvParameters );)。每个任务都是在自己权限范围内的一个小程序。其具有程序入口,通常会运行在一个死循环中,也不会退出。FreeRTOS 任务不允许以任何方式从实现函数中返回——它们绝不能有一条”return”语句,也不能执行到函数末尾。如果一个任务不再需要,可以显式地将其删除。一个任务函数可以用来创建若干个任务——创建出的任务均是独立的执行实例,拥有属于自己的栈空间,以及属于自己的自动变量(栈变量),即任务函数本身定义的变量。例:void ATaskFunction( void *pvParameters ){/* 可以像普通函数一样定义变量。用这个函数创建的每个任务实例都有一个属于自己的iVarialbleExample变量。但如果iVariableExample被定义为static,这一点则不成立– 这种情况下只存在一个变量,所有的任务实例将会共享这个变量。*/int iVariableExample = 0;/* 任务通常实现在一个死循环中。*/for( ;; ){/* 完成任务功能的代码将放在这里。*/}/* 如果任务的具体实现会跳出上面的死循环,则此任务必须在函数运行完之前删除。传入NULL参数表示删除的是当前任务*/vTaskDelete( NULL );}1-2创建任务创建任务使用FreeRTOS 的API 函数xTaskCreate()。接下来描述用到的数据类型和命名约定。xTaskCreate() API 函数原型如下:portBASE_TYPE xTaskCreate( pdTASK_CODE pvTaskCode,const signed portCHAR * const pcName,unsigned portSHORT usStackDepth,void *pvParameters,unsigned portBASE_TYPE uxPriority,xTaskHandle *pxCreatedTask );表1 xTaskCreate()参数与返回值参数名含义描述pdTASK_CODE任务只是永不退出的C 函数,实现常通常是一个死循环。参数pvTaskCode 只一个指向任务的实现函数的指针(效果上仅仅是函数名)。pcName具有描述性的任务名。这个参数不会被FreeRTOS 使用。其只是单纯地用于辅助调试。识别一个具有可读性的名字总是比通过句柄来识别容易得多。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)。pxCreatedTask用于传出任务的句柄。这个句柄将在API调用中对该创建出来的任务进行引用,比如改变任务优先级,或者删除任务。如果应用程序中不会用到这个任务的句柄,则pxCreatedTask 可以被设为NULL。返回值有两个可能的返回值:1. pdTRUE表明任务创建成功。2. errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY由于内存堆空间不足,FreeRTOS无法分配足够的空间来保存任务结构数据和任务栈,因此无法创建任务。1-3任务优先级xTaskCreate()API函数的参数ux
您可能关注的文档
最近下载
- 电石渣库清理施工方案.docx VIP
- 医疗软件技术基础实验报告-二叉树的应用-哈夫曼编码的实现.docx VIP
- 鲁教版八年级英语下阅读练习题及答案.docx VIP
- (48页PPT)XX电力集团智慧电力一体化平台规划建设方案.pptx VIP
- 数字智慧方案电力智慧某著名企业解决方案.pptx VIP
- 腔内圆弧凸台件的数控加工工艺分析及程序编制UG三维.doc VIP
- 5G智能变电站巡检机器人.pptx VIP
- 部编人教版八年级历史上册全套测试卷(配2025年秋改版教材).doc
- 《DEFORM-3D塑性成形CAE应用教程》全套教学课件.pptx
- 《相亲女生应事先弄清对方9个底细.doc VIP
原创力文档

文档评论(0)