求问如何使几个无限循环程序可以互相打断?

2019-07-21 01:35发布

本帖最后由 Ane 于 2019-4-19 18:50 编辑

新人第一次发帖,学STM32没多久,原子的教程里很多实验还没看。

现在想编一个程序能够实现:有3种模式,每个都是一个无限循环程序,想让这3种模式可以互相打断。
求问有没有可能做到以及怎样可以做到?
(几个模式就当是通过按键来选择吧)
中断和UCOS都是有优先级的,不能做到互相打断吧。

提前感谢各位的指导!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
Ane
1楼-- · 2019-07-21 06:56
 精彩回答 2  元偷偷看……
nashui_sx
2楼-- · 2019-07-21 12:05
还没看就看,看完估计你就不会有这个需求了
gotofly21
3楼-- · 2019-07-21 14:03
不是每个任务本来就是无限循环的吗?  你才3个,系统至少支持上百个吧.
Ane
4楼-- · 2019-07-21 16:55
nashui_sx 发表于 2019-4-19 15:52
还没看就看,看完估计你就不会有这个需求了

你好,可以稍稍指点下吗?应该使用什么方法处理
Ane
5楼-- · 2019-07-21 17:03
本帖最后由 Ane 于 2019-4-19 20:46 编辑
gotofly21 发表于 2019-4-19 16:20
不是每个任务本来就是无限循环的吗?  你才3个,系统至少支持上百个吧.

不太明白呀
我的3个任务都是无限循环,比如先让任务1运行了,然后要调出任务2,于是任务2执行了,这样就是2打断了1,但是还想让1打断2、1打断3、3打断1、2打断3、3打断2。我看UCOS的是有优先级的,能用UCOS吗
nashui_sx
6楼-- · 2019-07-21 21:38
本帖最后由 nashui_sx 于 2019-4-19 19:29 编辑
Ane 发表于 2019-4-19 18:42
你好,可以稍稍指点下吗?应该使用什么方法处理

假如能容忍执行完这当前循环再切换,这样最简单
volatile u8 zhuangtai=0;
void 中断函数(void)
{
    zhuangtai=x;
}
void main(void)
{
       while(1)
       {
                while(zhuangtai==0)
                {
                 //循环0

                }        
                while(zhuangtai==1)
                {
                 //循环1
                        
                }               
                 while(zhuangtai==2)
                {
                 //循环2
                        
                }  
       }                              
}

一周热门 更多>