jiangzhimin 发表于 2021-7-21 14:16:47

请教下安富莱ucosiii 例程中在开始任务中加while 的问题?

看了不少ucosiii 的例程 mian 函数在调用开始 start_task的任务后 就释放了 吗
之后就不会再进入start_task 任务了,但是这个例程中有个while 语句不断检测按键扫描,
程序还能执行到这里吗

my_avr 发表于 2021-7-21 14:24:51

AppTaskStart()任务是在main()函数里创建的任务吧,任务只要没有被删除,就能继续执行,不存在释放之说

jiangzhimin 发表于 2021-7-21 15:24:10

my_avr 发表于 2021-7-21 14:24
AppTaskStart()任务是在main()函数里创建的任务吧,任务只要没有被删除,就能继续执行,不存在释放之说 ...

执行到红色
/* 启动多任务系统,控制权交给uC/OS-III */
    OSStart(&err); 之后就不在执行上边的创建信号 和创建任务的 动作了?
换个说法当切换任务回到AppTaskStart,   就执行后边扫描控制按键的程序,前边的 创建任务和信号怎么处理 不做处理吗?

zzh90513 发表于 2021-7-21 16:23:37

main函数OSStart之后的语句不会执行了,OSStart之后就跳转到AppTaskStart任务开始执行其他操作;另外你要明白每个任务最终都是while(1)循环,不同任务由OS执行分时复用MCU

my_avr 发表于 2021-7-21 16:25:44

jiangzhimin 发表于 2021-7-21 15:24
执行到红色
/* 启动多任务系统,控制权交给uC/OS-III */
    OSStart(&err); 之后就不在执行上边的创建信 ...

开始执行AppTaskStart任务的按键扫描程序的话,前面创建的任务和信号量也正常运行啊,由内核调度。AppTaskStart任务和由这个任务创建的任务是一样的,没有区别,都由内核调度

security 发表于 2021-7-21 16:41:01

jiangzhimin 发表于 2021-7-21 15:24
执行到红色
/* 启动多任务系统,控制权交给uC/OS-III */
    OSStart(&err); 之后就不在执行上边的创建信 ...

要是执行不了的话,那就不是多任务系统了。把多任务有条不紊的跑起来,是 OS 的活儿。去看下 ucos 的手册。

jiangzhimin 发表于 2021-7-21 16:45:18

security 发表于 2021-7-21 16:41
要是执行不了的话,那就不是多任务系统了。把多任务有条不紊的跑起来,是 OS 的活儿。去看下 ucos 的手册 ...

就是每次执行一次AppTaskStart前面创建的任务和信号量再创建一次,感觉没有必要,也行是ucos手册没有看仔细吧。

security 发表于 2021-7-21 16:51:28

本帖最后由 security 于 2021-7-21 16:53 编辑

jiangzhimin 发表于 2021-7-21 16:45
就是每次执行一次AppTaskStart前面创建的任务和信号量再创建一次,感觉没有必要,也行是ucos手册没有看 ...

不会的,后续任务会一直在 while (1) 循环,不会再跑到上面去创建任务和信号量。
也就是跑起来后,再每次执行一次 AppTaskStart ,都是在 while 那边。
就跟中断一样,在哪一点被中断,中断处理完,会再回到那一点继续跑。(把这句话中的中断,替换为其他任务,再看看)

jufr12315 发表于 2021-7-22 02:23:04

这个也是一个任务,没有删除就会存在,每次跑到这个任务也只在while里跑,跟其它任务一样的。
页: [1]
查看完整版本: 请教下安富莱ucosiii 例程中在开始任务中加while 的问题?