1 - RTOS简介&规范&任务创建

对外部响应能力:

实时(规定时间内)操作系统 , 有强(飞机系统)弱(信息采集系统)之分

与分时(顺序时间片)操作系统

 

FreeRTO实时操作系统

支持抢占式调度,合作式调度和时间片调度;内核大小在4-9K ;C语言编写

操作系统调度各个再死循环中的任务(管理任务),可以随时进入退出?

引入操作系统后,在编程时不需要精心设计程序执行流,任务间不存在干扰,编程反而变得简单了。

 911规范(数据类型&变量名)

 

  px  = 指针+BaseTypet_    

文件是.C文件

表示私有函数

 

 

 动态——静态创建任务

结构体,链表

 TCB_t  _表示结构体

 

对于每个任务在内存总都有相应的TCB结构体包含栈顶,两个链表(雾),优先级,栈的起始 ,任务控制块tskTCB( TCB_t )

handle 就是控制块的指针,  想用这个结构体又不想了解其结构,就用handle

动态创建:

TaskHandle_t xHandleTask1;

 

(函数指针,名字,栈深度(大小=深度*x ),实参,优先级(越小越低),指向 TCB_t【通过这个handle来引用/删除这个任务】)

 

关于深度*x的x :   深度单位是字类型定义的int类型   ;【32位的x=4,1位=8字节】   ????

 

 创建新任务会创建站的大小(100),每个任务的栈都不一样

静态创建(TCB结构体&栈 事先分配好)

 使用这个函数得配置这个,因为资源有限,添加开关决定是否启动

 在中定义

报错

 OK

关于优先级,先执行优先级高的任务,若是循环的话则会一直执行下去

 删除任务

通过创建任务传入的handle来删除任务,也可以自杀(传入null)

 这个handle哪里来的呢? 动态创建的时候传入,静态创建的返回值

 

 (void *)4 就是地址为4,  两者配合就能打印出4和5  (∵函数里面的强制类型转换)

 创建出两个不同的任务,各自的数据都保存在各自不同的栈中

 

 关键:需要考虑数据量大小,不让栈溢出

 

posted @ 2023-09-12 20:23  磕伴  阅读(42)  评论(0编辑  收藏  举报