打印

一道嵌入式题目

[复制链接]
1650|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jadetang|  楼主 | 2008-5-7 08:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
liudewei| | 2008-5-7 08:58 | 只看该作者

在退出中断前将a函数的地址压入PC堆栈、需要的数据压入相

具体还和你的硬件中断保护机制,C编译系统都有关,要具体分析后对待,在中断退出前调用a函数应该是最安全的。

使用特权

评论回复
板凳
jadetang|  楼主 | 2008-5-7 09:13 | 只看该作者

OS是UCOSII,不知道楼上说的是不是一定要用汇编实现?

使用特权

评论回复
地板
liudewei| | 2008-5-7 09:22 | 只看该作者

这和UCOSII的抢占不一样,你说的是中断退出后想立即执行a

使用特权

评论回复
5
liudewei| | 2008-5-7 09:29 | 只看该作者

你可以在中断中将a任务函数的优先级调整成高于b任务且就绪

使用特权

评论回复
6
jadetang|  楼主 | 2008-5-7 09:41 | 只看该作者

这个考虑过。

中断中将a任务函数的优先级调整成高于b任务且就绪
这样中断退出以后就会执行a,但是执行完a以后就会接着执行b,但是我的目的是放弃执行b。看来还是
在退出中断前将a函数的地址压入PC堆栈、需要的数据压入相应栈
这个方法好,但是好像有风险,直接用汇编的话。在考虑万全的方法。

使用特权

评论回复
7
computer00| | 2008-5-7 09:42 | 只看该作者

编程方式有问题。

a可以使用高优先级的,中断退出时执行任务调度。

使用特权

评论回复
8
jadetang|  楼主 | 2008-5-7 09:50 | 只看该作者

oo出来了,膜拜一下。任务调度确实比较可靠。

用汇编改寄存器还是怕怕啊。除非用得好,否则就SB了。

使用特权

评论回复
9
wsmcjm| | 2008-5-7 10:00 | 只看该作者

回复

插入一个BIT标志符来判断。

使用特权

评论回复
10
jadetang|  楼主 | 2008-5-7 10:06 | 只看该作者

插入一个BIT标志符来判断。

请能详细一点说明吗?

使用特权

评论回复
11
computer00| | 2008-5-7 10:14 | 只看该作者

真是够晕的...

还是编程思路的问题。换换思路吧。把不同的功能放不同的任务中,哪有中断执行之后,一个任务后面的代码就要放弃执行的?

谁知道中断在哪发生?

任务B执行时,发生中断,然后将A设置为高优先级,在A任务中,将B任务从系统中删除。这样B就不会再被执行了。

使用特权

评论回复
12
wsmcjm| | 2008-5-7 10:26 | 只看该作者

huifu

怎么详细说呢?定义一个全局或局部变量BIT。这是编程思路的问题。看看书,可以找到灵感的。

使用特权

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

本版积分规则

51

主题

108

帖子

0

粉丝