freeRTOS学习笔记

freeRTOS学习

任务

任务状态

  • 运行:占用CPU
  • 就绪:有高优先级在运行所导致未运行的程序
  • 阻塞:一个任务等待临时事件或外部事件时,将进入阻塞状态(直阻塞任务而不阻塞CPU),一般有个超时时间,超时后任务将解锁(继续运行),阻塞的任务不参与调度。
  • 暂停:任务只有在调用API函数vTask Suspend()和xTaskResume(),时才进入或退出暂停状态,不能指定超时时间,也不能参与调度。

    任务优先级

    • 每一个任务都将分配一个从0到configMAX_PRIORITIES-1的优先级一帮定义中该参数值越大,freeRTOS占用的RAM就越多
    • 注意,处理器的时间总是分配给能够运行的最高优先级任务。

    执行任务

    一个任务结构如下
void vATaskFunction( void *pvParameters ) 
{
	for(;;)
	{
		Task application code here.
	}
}
  • 任务函数应当从不返回,因此他通常执行一个连续的循环
  • 任务由函数xTaskCreate()创建,使用vTaskDelete()删除。

空闲任务

  • 空闲任务在调度器启动时自动启动
  • 空闲任务负责清理已经删除的文件,可以保证在任何条件下不分配处理器的时间
  • 系统的其他任务可以共享空闲任务的优先级
    ### 空闲任务钩子
  • 一个空闲任务钩子就是在每次空闲任务运行时调用的函数。
  • 在空闲任务钩子实现。
    必须始终有一个任务准备好运行,在钩子函数中不能调用任何引起阻塞的API函数。

Queue Management(消息队列管理)

  • xQueueCreate //创建一个消息队列
  • xQueueSend //消息队列发送
  • xQueueSendToBack
  • xQueueSendToFront
  • xQueueReceive
  • xQueuePeek
  • xQueueSendFromISR
  • xQueueSendToBackFromISR
  • xQueueSendToFrontFromISR
  • xQueueReceiveFromISR
  • vQueueAddToRegistry
  • vQueueUnregisterQueue

Task creation

  • xTaskCreation(); //创建一个线程
  • VTaskDelete(); //删除一个线程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值