freeRTOS API简记

本文详细介绍了FreeRTOS的任务创建、调度器启动、信号量操作、中断处理以及栈溢出检测等关键API的使用,包括任务创建、信号量的获取与释放、任务挂起与恢复,并强调了中断级临界区代码的精简与任务优先级管理。同时,讨论了FreeRTOS的数据类型以及空闲任务钩子函数的实现和用途。
摘要由CSDN通过智能技术生成

注意

利用信号量或任务 必须要确保任务或者信号量建立 习惯性进入和退出临界区

API

  • TaskHandle_t创建任务句柄
    任务栈大小 从FreeRTOSConfig.h中定义的heap空间中申请 单位word 4字节
  • xTaskCreate创建任务
    要先定义任务优先级、任务堆栈大小、任务句柄、任务函数
  • vTaskStartScheduler开启任务调度 启动FreeRTOS
  • start_task
    • taskENTER_CRITICAL任务级的临界代码保护
      临界区代码要精简 因为此时会关闭中断
    • 创建其他任务
    • vTaskDelete(StartTask_Handler)删除开始任务
      taskEXIT_CRITICAL退出临界区
  • vTaskDelete清除任务句柄
    • 后最好加一句任务句柄清零
  • IRQ 中断请求
  • vTaskSuspend 挂起任务
  • vTaskResume 恢复任务
  • vTaskResumeFromISR 中断服务函数中恢复一个任务的运行 若返回pdTrue 说明当前任务优先级高于或等于当前运行任务 退出中断时进行上下文切换portYIELD_FROM_ISR

  • 中断发生的时候释放信号量

  • SemaphoreHandle_t二值信号量句柄
  • vSemaphoreCreateBinary创建二值信号量(在开始任务里创建
    返回NULL 创建失败 FreeRTOS堆栈不足;返回其他值 信号量创建成功 返回值存储信号量句柄
  • portBASE_TYPE xSemaphoreTake( xSemaphoreHandle xSemaphore, portTickType xTicksToWait ); 当句柄!=NULL时ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值