打印
[STM32F1]

有关STM32f103 的中断自身的嵌套

[复制链接]
2069|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sjxkaxisi|  楼主 | 2015-5-6 15:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大大好!
小弟最近在用STM32 做一个项目,里面使用到外部引脚的下降沿触发一个事件中断,这个中断执行时间比较长(>5s),在这个中断执行的时候还得检测同一个外部引脚的下降沿中断,触发同一个事件中断。
这样是不是就是中断的自身嵌套(?),各位有碰到过这种情况么,能不能实现?
沙发
sjxkaxisi|  楼主 | 2015-5-6 16:29 | 只看该作者
自顶个~

使用特权

评论回复
板凳
popeye021| | 2015-5-6 18:00 | 只看该作者
中断处理程序不宜过长。设置标志位,主程序里面查询标志位再执行即可。
中断嵌套是指执行一个中断处理程序时,响应另一个更高级的中断。这两个中断是不同的。

使用特权

评论回复
地板
戈卫东| | 2015-5-6 19:45 | 只看该作者
给个信号交给main()去做吧,或者其他任务进程

使用特权

评论回复
5
desertsailor| | 2015-5-6 21:18 | 只看该作者
楼上两位正解

使用特权

评论回复
6
玄德| | 2015-5-6 22:14 | 只看该作者
STM32 有中断嵌套的能力吗?

51以外,想不起来哪个CPU有中断嵌套。

使用特权

评论回复
7
戈卫东| | 2015-5-6 22:18 | 只看该作者
玄德 发表于 2015-5-6 22:14
STM32 有中断嵌套的能力吗?

51以外,想不起来哪个CPU有中断嵌套。

现在的处理器可能都不会中断重入,不过也些古老的处理器会重入的。

使用特权

评论回复
8
zh113214| | 2015-5-6 22:21 | 只看该作者

一般情况下,,中断处理程序不宜过长。

使用特权

评论回复
9
charrijon| | 2015-5-6 22:41 | 只看该作者
本帖最后由 charrijon 于 2015-5-6 22:43 编辑

当然可以,进入中断程序后,人为开启中断就可以了,但是要注意临时变量和堆栈的问题

使用特权

评论回复
10
charrijon| | 2015-5-6 22:45 | 只看该作者
很多简单的实时操作系统都是这么干的,只不过那个重入的是定时器中断

使用特权

评论回复
11
玄德| | 2015-5-6 23:04 | 只看该作者
戈卫东 发表于 2015-5-6 22:18
现在的处理器可能都不会中断重入,不过也些古老的处理器会重入的。


好像这两个概念有区别。

嵌套:正在处理一个中断、尚未退出的情况下,转身去处理级别更高的中断。



使用特权

评论回复
12
cpwander| | 2015-5-6 23:07 | 只看该作者
楼主改变一下思路吧

使用特权

评论回复
13
戈卫东| | 2015-5-7 00:27 | 只看该作者
玄德 发表于 2015-5-6 23:04
好像这两个概念有区别。

嵌套:正在处理一个中断、尚未退出的情况下,转身去处理级别更高的中断。

楼主说的是同一个中断

使用特权

评论回复
14
liang5319| | 2015-5-7 08:23 | 只看该作者
话说 本中断未处理完成,又过来同一个中断,会死机吧?

使用特权

评论回复
15
amanda_s| | 2015-5-7 09:43 | 只看该作者
楼主说的不是中断嵌套,是重入。STM32基于ARM Coretx-M内核,不允许中断重入。
每个中断都有自己的优先级,在中断处理期间同级或者低优先级的中断是会被阻塞的。

而且中断处理程序要执行5s也太长了。可以在中断处理程序里做一些简单的标志位处理,其他的放到主循环里去做。

使用特权

评论回复
16
ok666666z| | 2015-5-7 09:57 | 只看该作者
mark.

使用特权

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

本版积分规则

1

主题

4

帖子

0

粉丝