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 (∵函数里面的强制类型转换)
创建出两个不同的任务,各自的数据都保存在各自不同的栈中
关键:需要考虑数据量大小,不让栈溢出