OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2438|回复: 3

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

[复制链接]

26

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2016-7-20
在线时间
59 小时
发表于 2016-12-14 09:35:24 | 显示全部楼层 |阅读模式
5金钱

之前一直在听大家说,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"?


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

最佳答案

查看完整内容[请看2#楼]

1、linux和其他系统肯定是有偏差的!STM32除了UCOS还可以用很多其他的RTOS类的系统。不要狭隘的提起系统就只知道linux、windows和安卓 2、创建任务的时候参数“(void*)0”谁告诉你的这个是标记任务创建的是第几个任务的?这个是任务函数的参数! 3、任务堆栈就是个数组!数组总知道怎么定义的把?数组的大小总知道怎么定义的吧,可以通过宏来定义一个数组的大小。 4、开始任务的优先级是10,谁告诉整个系统的优先级就是1-10!! ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-12-14 09:35:25 | 显示全部楼层
1、linux和其他系统肯定是有偏差的!STM32除了UCOS还可以用很多其他的RTOS类的系统。不要狭隘的提起系统就只知道linux、windows和安卓
2、创建任务的时候参数“(void*)0”谁告诉你的这个是标记任务创建的是第几个任务的?这个是任务函数的参数!
3、任务堆栈就是个数组!数组总知道怎么定义的把?数组的大小总知道怎么定义的吧,可以通过宏来定义一个数组的大小。
4、开始任务的优先级是10,谁告诉整个系统的优先级就是1-10!!!!!!!系统的最大任务优先级是通过配置文件里面一个宏来设置的。你们班长的学号是10,你们班就10个人吗?
5、目前来看你对操作系统的概念完全不理解,完全是混乱的,你的偏差在哪里?你这几乎偏的就没对的。网上买本任哲的书先看几遍,然后动手写代码。看完任哲的书以后在买其他的书来看。
开往春天的手扶拖拉机
回复

使用道具 举报

26

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2016-7-20
在线时间
59 小时
 楼主| 发表于 2016-12-14 09:35:50 | 显示全部楼层
之前一直在听大家说,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"?


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

使用道具 举报

26

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2016-7-20
在线时间
59 小时
 楼主| 发表于 2016-12-14 20:50:36 | 显示全部楼层
zuozhongkai 发表于 2016-12-14 09:35
1、linux和其他系统肯定是有偏差的!STM32除了UCOS还可以用很多其他的RTOS类的系统。不要狭隘的提起系统就 ...

这位前辈,你的这些话真的是让人醒悟了!
我还有很多要学习的地方,能否留个联系方式,向您多学习!?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 07:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表