freertos学习笔记一

RTOS 系统
常见系统有:
    FreeRTOS,UCOS,RTX,RT_Thread,DJYOS
核心内容:实时内核(可剥夺性内核)
FREERTOS
1.开源
2.免费
About FreeRTOSConfig.h
配置基本是通过使用多个“#define”来定义宏定义实现的
“INCLUDE__” 开始的宏
这个可以用来表示使能或除能FreeRTOS中对应的API函数
        比如当宏INCLUDE__vTaskPrioritySet设置为0的时候就不能使用对应的API函数(设置1的时候
可以使用)(类似于条件编译)
        API函数在这里进行了折叠,目的是为了节省空间,减少占用成本
“config“ 开始的宏(用法上跟 INCLUDE__ 一样)
1. 知识拓展:断言( C 语言)中称之为 ASSERT() 函数
    1.assert函数是一个宏,可以理解为一个if语句。
    2.使用场景:在debug的时候常用,目的是为了检查某一个偶然情况,如果该偶然情况出现
(条件返回错误)则条件终止运行。
    3.调试阶段使用结束后可以通过#define NOBUG来禁用,防止因产生过大开销。
2.在 freertos 中这里用了 configassert ()来等同于上述 assert ()函数的作用。来检查参数是否正 确,同样!调试完成之后尽量注释掉断言。一 . 任务的创建(调用 API 函数)
    xTaskCreate():使用动态方法创建一个任务
    xTaskCreateStatic():使用静态方法
    xTaskCreateRestricted():创建一个使用MPU进行限制的任务,相关内存使用动态内存分配
    vTaskDelete():删除一个任务。
1. 动态方法创建函数(记得去使能)
#define START_TASK_PRIO 1//任务优先级(这里一般不设为0,因为系统开启需要一个空闲函数) 
#define START_STK_SIZE 120//任务内存
void start_task(void*pvParameters);//任务函数
TaskHandle_t StartTask_Handler;//任务句柄


#define TASK1_TASK_PRIO 1
#define TASK1_STK_SIZE 120//任务内存
void task1_task(void*pvParameters);//任务函数
TaskHandle_t Task1Task_Handler;//任务句柄


#define TASK2_TASK_PRIO 1
#define TASK2_STK_SIZE 120//任务内存
void task2_task(void*pvParameters);//任务函数
TaskHandle_t Task2Task_Handler;//任务句柄
int main
{
    xTaskCreate(
             (TaskFunction_t)start_task,
             (char* )"start_task",
             (uint16_t )START_STK_SIZE,
             (void* )NULL,
             (UBaseType_t )START_TASK_PRIO,
             (TaskHandle_t* )&StartTask_Handler,
            );//创建任务环
        vTaskStartScheduler();//开启任务调度
}
void start_task(void*pvParemeters)
{
    //创建任务一
xTaskCreate(
        (TaskFunction_t)start_task,
        (char* )"start_task",
        (uint16_t )START_STK_SIZE,
        (void* )NULL,
        (UBaseType_t )START_TASK_PRIO,
        (TaskHandle_t* )&StartTask_Handler,);
    //创建任务二
xTaskCreate(
        (TaskFunction_t)start_task,
        (char* )"start_task",
        (uint16_t )START_STK_SIZE,
        (void* )NULL,
        (UBaseType_t )START_TASK_PRIO,
        (TaskHandle_t* )&StartTask_Handler,);
        vTaskDelete(StartTask_Handler);//删除任务,注意要用该任务的任务句柄
}
void task1_task(void*pvParemeters//这里的意思是动态创建任务函数)
{
    while(1)
    {
        /*写具体的任务*/
    }
}
void task2_task(void*pvParemeters//这里的意思是动态创建任务函数)
{
    while(1)
    {
        /*写具体的任务*/
    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JIAlonglong11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值