FreeRTOS入门学习记录1——任务管理
来源:互联网 发布:此网络受法律保护 编辑:程序博客网 时间:2024/05/24 06:29
学习任务:
>如何实现一个任务。
> 如何创建一个或多个任务的实例。
> 如何使用任务参数。
> 如何改变一个已创建任务的优先级。
> 如何删除任务。
> 如何实现周期性处理。
> 空闲任务何时运行,可以用来干什么。
创建任务函数:
BaseType_t xTaskCreate(TaskFunction_t pvTaskCode, //任务函数名(指针)永不退出程序,退出要删除回收资源。
const charchar * const pcName, //提示名(作用是识别任务函数是什么作用)
unsigned short usStackDepth, /*栈空间大小(usStackDepth*域宽word)configMINIMAL_STACK_SIZE系统建议最小值,不能超过size_t最大值,一般为unsigned int,64位为long unsigned int*/
void *pvParameters,// 任务函数传递的形式参数 (转换成void*传递(要改变就取地址))
UBaseType_t uxPriority, //优先级(0~configMAX_PRIORITIES – 1)
TaskHandle_t * pvCreatedTask //任务操作句柄(是个句柄地址)(删除、修改优先级)
); /*有两个可能的返回值:
1. pdTRUE 表明任务创建成功。
2. errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY 由于内存堆空间不足,FreeRTOS无法分配足够的空间来保存任务结构数据和任务栈,因此无法创建任务。*/
延时阻塞状态:
void vTaskDelay( portTickType xTicksToDelay );
/*常数 portTICK_RATE_MS 可以用来将以毫秒为单位的时间值转换为以心跳周期为单位的时间值。*/
准确延时阻塞状态:
void vTaskDelayUntil( portTickType * pxPreviousWakeTime,//上次阻塞时间
portTickType xTimeIncrement //阻塞心跳周期(55秒/portTICK_RATE_MS)
);
pxPreviousWakeTime = xTaskGetTickCount()//阻塞时间需要在第一次(循环前)初始化,
vTaskDelay和vTaskDelayUntil两个对比:
vTaskDelay没有将程序运行时间计入时间,用作循环运行时间不准确,记录的是vTaskDelay调用到退出阻塞时间;
vTaskDelayUntil记录的是上一次退出阻塞状态到这次这次退出,时间准确,适合用作循环任务。
任务调度器:
vTaskStartScheduler();//会自动穿件一个最低权限的空闲任务(权限0),保证有任务在跑。
空闲函数钩子函数:
void vApplicationIdleHook( void )//必须定义成这样。没有函数形式参数和返回值,用来操作空闲函数。
作用:
1、执行低优先级或者后台、需要不停处理的功能函数;
2、测试系统处理裕量;
3、将处理器配置成低功耗模式。
FreeRTOSConfig.h 中的配置常量 configUSE_IDLE_HOOK 必须定义为 1,这样空
闲任务钩子函数才会被调用。
优先级改变:
void vTaskPrioritySet( xTaskHandle pxTask, //句柄 NULL 改变自身,
unsigned portBASE_TYPE uxNewPriority //优先级
);//在调试器启动后改变优先级
查询优先级:
unsigned portBASE_TYPE uxTaskPriorityGet( xTaskHandle pxTask //句柄 NULL查询自身,
);//返回值:查询的优先级。
删除任务:
void vTaskDelete( xTaskHandle pxTaskToDelete );
阅读全文
1 0
- FreeRTOS入门学习记录1——任务管理
- FreeRTOS入门学习记录2——队列管理
- FreeRTOS入门学习记录3——中断管理
- FreeRTOS 学习三:任务管理
- FreeRTOS学习笔记——创建任务
- FreeRTOS学习笔记——任务延时
- FreeRTOS的任务管理
- FreeRTOS详解---任务管理
- FreeRTOS学习笔记——任务删除 vTaskDelete() API
- FreeRTOS 学习笔记 2 —— 创建任务
- FreeRTOS 学习笔记 3 —— 任务状态机之阻塞
- FreeRTOS学习1--任务挂起与恢复
- FreeRTOS任务管理与控制
- FreeRTOS 任务管理之任务创建
- FreeRTOS 任务管理之任务转移
- FreeRTOS 任务管理之任务删除
- Freertos学习--初识任务函数
- Freertos学习--初识任务函数
- Java-Collection源码分析(十)——hashTable
- 【BigHereo 15】-----Arquillian Junit && javaEE单元测试实践
- 自定义View向右滑动解锁
- 企业网站要不要写原创文章,您怎么看?
- 表单
- FreeRTOS入门学习记录1——任务管理
- 大数据中简化数据的几种方式
- The SDK platform-tools version (24.0.4) is too old to check APIs compiled with API 25
- MyBatis入门(四)
- codeforces 330A Cakeminator
- 关于Executors创建和管理线程的那些事
- ubuntu16.04搭建树莓派交叉编译环境(二)
- 安卓自动化测试框架UIautomator环境搭建
- eclipse使用ctrl+c、ctrl+v卡顿现象