一. 关于文件夹
1. OS有关于自己内核的东西,放在core中,这些不用改,凡是关于os内核的东西都不用该
2. 需要改动的是关于操作系统与不同板子不同CPU的接口的文件(因为OS可以放在很多类型的单片机上使用,那么这些单片机与操作系统都有一个接口)就像图中的中间部分CPUport,配置这些接口的文件包括BSP,CPU。其中BSP中一般放外设(网卡声卡LED等)的初始化。这些换一个类型的板子就需要重新移植,这些文件板子的官网一般都有,直接下即可
二。关于任务控制块,任务堆栈,任务函数
1.任务控制块:是一个结构体,一个数据结构,存放优先级,堆栈首地址的指针等等
2。任务堆栈:上下文切换时,将寄存器的值保存起来,每个任务都有,保证可以切会来。当获得CPU使用权时,将任务堆栈内容复制到CPU的各个寄存器。
3。任务函数:实实在在跑的程序
三.关于程序的运行情况
1。操作系统就像是一个管家,内部采用抵达定时器,有时钟节拍,每个节拍都会检测一下任务的运行情况,比如哪个任务就绪哪个任务需要调度执行。
2。关于delay init里面包含systicktask, 在systick task中一个是task++,一个是每个节拍检测下任务的运行情况.
3.关于延时函数的任务调度,
其中,while(1)只是代表这个任务一直存在,一直在os3中。当执行到延时函数时,CPU的使用权就会交出去,此时systicktask中time++,然后检测,就绪表中哪个任务就绪,并执行它。等time++到500后这个LED的任务重新回到就绪表中,继续执行LED1=1。如果进入到延时函数中后,当前没有就绪的任务要执行,那么就会执行空闲任务,每个节拍检测任务运行情况,并且time++,知道有任务就绪
四。关于函数书写
关于
uart_init(115200);
LED_Init();
Motor_Init();
OWN_DMA_Init();
OWN_ADC_Init();这些的初始化可以放在一个函数里面,然后放进BSP中。