ucos 任务建立中的理解和不解

2019-10-16 02:04发布


之前一直在听大家说,STM32上操作系统,所说的就是指上的实时操作系统,以前还以为是Linux或者别的系统,原来有点偏差啊!也不知道这个理解是不是对的!?
另外,经过最近看ucos的历程我发现,这个就是把以前各个模块化的子函数,写成一个进程,在开始进程中去包括这些进程,在程序执行的过程中每一个时刻也是只有一个任务(一个进程)在运行,只不过优先级不同,,,。其中包含的那些文件还不明白各个的用意,现在看到的知识见到的以个输出任务,其他的(外部中断,定时器中断,串口中断,GPIO输入,,,)还不知道应该怎么用,还要明天据需学习。

对于这个建立任务的这句话有一个不明白的地方,还希望大家能给予指点:
        OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );
        其中"start_task",这个是任务的名称,或者一个功能函数的函数名。
        "(void *)0",这里的是指使用这个功能函数建立的是第几个任务,如果在建立一个相同功能函数的任务,这里的"0",应该是"1"。是吧?
        "(OS_STK *)&START_TASK_STK[START_STK_SIZE-1]",这句话很不理解,其中START_STK_SIZE是指任务堆栈的大小,这个大小是怎么设定的,根“数据结构有关”吗?在整个系统中建立的所有任务,一提到堆栈不知道是否和地址有关,或者说在指针到这个任务的时候启示地址是多少???
        "START_TASK_PRIO ",这个是表示的是这个任务的优先级,按照他们的说法就是,开始的任务进程优先级是最小的“10”,那就是说整个系统中总共可以分成10个等级"1-10"?


   以上就是这两天对试试操作系统的认识,不知道偏差在哪里!?希望大家多多指导

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
taizonglai
2019-10-16 02:20
1、linux和其他系统肯定是有偏差的!STM32除了UCOS还可以用很多其他的RTOS类的系统。不要狭隘的提起系统就只知道linux、windows和安卓
2、创建任务的时候参数“(void*)0”谁告诉你的这个是标记任务创建的是第几个任务的?这个是任务函数的参数!
3、任务堆栈就是个数组!数组总知道怎么定义的把?数组的大小总知道怎么定义的吧,可以通过宏来定义一个数组的大小。
4、开始任务的优先级是10,谁告诉整个系统的优先级就是1-10!!!!!!!系统的最大任务优先级是通过配置文件里面一个宏来设置的。你们班长的学号是10,你们班就10个人吗?
5、目前来看你对操作系统的概念完全不理解,完全是混乱的,你的偏差在哪里?你这几乎偏的就没对的。网上买本任哲的书先看几遍,然后动手写代码。看完任哲的书以后在买其他的书来看。

一周热门 更多>