打印

问大家一个利用定时中断调几个任务重入自身中断的问题

[复制链接]
2084|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
PaperKite|  楼主 | 2012-6-7 16:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 PaperKite 于 2012-6-7 16:25 编辑

想在一个定时器的中断里写上几个任务,任务到各自的时间条件后运行,长任务运行时间大于定时周期,所以定时器中断会重入自身(中断中又开启了),本次中断退出后接着跑上次中断时的长任务。
        但是担心编译器会认为中断服务程序不会重入,或认为各个任务顺序执行,不同任务的自动变量不会同时出现,然后就把中断调用的任务中的自动变量空间重用,而实际上那个空间可能还在前一次中断时运行的被打断的任务里用着。
        自动变量这个问题一般是编译器去考虑的事,只是不清楚做编译器的有没有把中断重入自身这个加进去了,感觉中断重入自身有点非主流的意思,呵呵。
        只是想很简单的调度一下,任务少,堆栈不溢出,用全局变量是可以运行的,任务中定义自动变量会出问题吗?或者有什么好方法让任务抢占的运行呢?重在简单好写。。。

相关帖子

沙发
ayb_ice| | 2012-6-7 16:34 | 只看该作者
一般单片机是不允许中断自己的
即使允许也要想办法禁止

使用特权

评论回复
板凳
PaperKite|  楼主 | 2012-6-7 16:49 | 只看该作者
嗯,这里不专指51,比如华邦的一个51-w77e58,可能是这个型号,记不清了,就有一个已触发中断寄存器,把它设的低于现在的中断,就能重入自身了,有些其他cpu也有类似的寄存器,只是标准8051这个寄存器不可见,要RETI清掉它之后才能重入。

使用特权

评论回复
地板
ayb_ice| | 2012-6-7 16:55 | 只看该作者
中断重入技术不是问题,很多MCU那样做恰恰是技术不行导致的,需要软件自己处理,最简单的就是中断中关闭自己的中断,退出时再打开
实际应用一般不允许,

使用特权

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

本版积分规则

0

主题

60

帖子

1

粉丝