Freertos学习笔记

文章目录

            • Freertos移植
            • TCB控制块
            • 中断管理 (内部异常和外部中断)
            • 同步互斥与通信
            • 消息队列:
            • 邮箱:
            • 信号量:
            • 互斥量:
            • 事件组:
            • 任务通知:

Freertos移植

Freertos学习笔记_第1张图片

  • 其核心文件为,tasks.c、timers.c、queue.c、event_groups.c、croutine.c、list.c。源码兼顾了很多平台,但是我们可以删除一些不用的平台以及例程等,只保留我们要的。
    比如RVDS/ARM_CM3,这表示cotexM3架构再RVDS或Keil工具上的移植文件(比如下图中的port.c、portmacro.h)
    在编程过程中的大部分宏配置都在FreeRTOSConfig.h这个配置文件(调度、优先级、空闲任务等)

  • 任务切换基础
    1、任务间的切换,是利用tick中断实现的(关于这个时间片轮转的时间通过上面提到过的配置文件设置)
    2、stm32+freertos之所以要用到两套timebase(一是freertos的心跳tick (os_tick)
    3、防止在高优先级(优先级高于systick)中断服务中调用HAL_Delay(),导致中断服务忙等待,这样任何优先级低于该中断的中断都得不到服务,当然也包括os的全部调度.

    BaseType_t xTaskCreate(TaskFunction_t pxTaskCode,//函数指针
    const char* const pcName,//任务名字
    const configSTACK_DEPTH usStackDepth,//任务栈大小
    void * const pv Parameters,//传入任务的参数,通常是指的是任务的参数
    UbaseType_t uxPriority,//优先级
    TaskHandle_t * const pxCreatedTask);//任务函数句柄
    上面是动态创建任务,而静态创建任务是需要自己分配任务堆栈以及TCB控制块大小
    Void vTaskDelete(TaskHandle_t xTaskToDelete);//任务句柄
    Void 

你可能感兴趣的:(学习,笔记)