打印
[应用相关]

多任务操作的实现问题

[复制链接]
1963|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sdyaojingwen|  楼主 | 2015-4-23 15:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sdyaojingwen 于 2015-4-23 15:44 编辑

现在想做一个程序,为了提高效率,这个程序有两个任务 就是 两个while(1)大循环,通过按键中断来切换人任务,请问如何处理?void  main()
{
   task1:  
   while(1)
   {
   }
   task2:
   while(1)
   {
   }
}
沙发
搞IT的| | 2015-4-23 16:02 | 只看该作者
可以选用SWITCH函数

使用特权

评论回复
板凳
whydo| | 2015-4-23 16:34 | 只看该作者
while(1)里判断跳出啊

使用特权

评论回复
地板
sdyaojingwen|  楼主 | 2015-4-23 17:29 | 只看该作者
本帖最后由 sdyaojingwen 于 2015-4-23 17:33 编辑
搞IT的 发表于 2015-4-23 16:02
可以选用SWITCH函数

我只是打个比方!用switch 的话  加入 任务1 还没有执行完成 按下中断的话,是不会跳到任务2去的!我需要立刻进入任务2
有点像操作系统的任务切换

使用特权

评论回复
5
sdyaojingwen|  楼主 | 2015-4-23 17:30 | 只看该作者
本帖最后由 sdyaojingwen 于 2015-4-23 17:33 编辑
whydo 发表于 2015-4-23 16:34
while(1)里判断跳出啊

打个比方  说 我在执行任务1的时候,按键中断, 这时候中断处理完成后立马跳到任务2  ,而不是继续执行完任务1之后在去任务2
有点像操作系统的任务切换

使用特权

评论回复
6
sdyaojingwen|  楼主 | 2015-4-23 17:32 | 只看该作者
搞IT的 发表于 2015-4-23 16:02
可以选用SWITCH函数

有点像操作系统的任务切换

使用特权

评论回复
7
littleming1028| | 2015-4-23 18:23 | 只看该作者
中断了加个标志,任务里加个判断不可以吗?

使用特权

评论回复
8
Leeone| | 2015-4-23 18:44 | 只看该作者
中断里设标志位,while里查标志break切换任务

使用特权

评论回复
9
夕照| | 2015-4-23 19:57 | 只看该作者
中断跳出或者用UCOS-ii吧

使用特权

评论回复
10
charrijon| | 2015-4-23 20:09 | 只看该作者
相当于自己做个操作系统啊,要千万注意堆栈。处理好了堆栈就是一个操作系统了

使用特权

评论回复
11
彭--博| | 2015-4-23 20:14 | 只看该作者
switch case 状态切换

使用特权

评论回复
12
sdyaojingwen|  楼主 | 2015-4-23 22:35 | 只看该作者
littleming1028 发表于 2015-4-23 18:23
中断了加个标志,任务里加个判断不可以吗?

可以在中断里使用goto么?

使用特权

评论回复
13
sdyaojingwen|  楼主 | 2015-4-23 22:36 | 只看该作者
littleming1028 发表于 2015-4-23 18:23
中断了加个标志,任务里加个判断不可以吗?

这样会有个延迟!我想要中断之后立马切换任务

使用特权

评论回复
14
sdyaojingwen|  楼主 | 2015-4-23 22:41 | 只看该作者
charrijon 发表于 2015-4-23 20:09
相当于自己做个操作系统啊,要千万注意堆栈。处理好了堆栈就是一个操作系统了 ...

大神有没有个stm8堆栈操作的资料啊

使用特权

评论回复
15
mintspring| | 2015-4-23 23:37 | 只看该作者
void  main()
{
   task1:  
   while(1)
   {
   }
   task2:
   while(1)
   {
   }
}




  
有意思吗

使用特权

评论回复
16
littleming1028| | 2015-4-24 07:23 | 只看该作者
sdyaojingwen 发表于 2015-4-23 22:36
这样会有个延迟!我想要中断之后立马切换任务

任何系统都会延迟,你的立马是多少?1ns?1us?1ms?还是?

使用特权

评论回复
17
a837627852| | 2015-4-24 16:10 | 只看该作者
学习学习

使用特权

评论回复
18
tkyl01| | 2015-4-24 16:12 | 只看该作者
直接修改堆栈指针(SP)就可以了,先把两个任务的 地址保存起来,用按键来切换SP等于任务的地址,就可以切换任务了

使用特权

评论回复
19
sdyaojingwen|  楼主 | 2015-4-24 19:59 | 只看该作者
tkyl01 发表于 2015-4-24 16:12
直接修改堆栈指针(SP)就可以了,先把两个任务的 地址保存起来,用按键来切换SP等于任务的地址,就可以切换任 ...

请问有没有stm8内核的资料

使用特权

评论回复
20
aliu_us| | 2015-4-26 21:13 | 只看该作者
sdyaojingwen 发表于 2015-4-23 17:29
我只是打个比方!用switch 的话  加入 任务1 还没有执行完成 按下中断的话,是不会跳到任务2去的!我需要 ...

这是可抢占的任务调度。
仼务少而简单的话就直接在中断里实现,要求全就上rtos.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

0

粉丝