OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3556|回复: 2

【求助】stm32同一中断响应程序的中断源的理解,请各位帮看下对不对

[复制链接]

42

主题

141

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
342
金钱
342
注册时间
2015-5-26
在线时间
49 小时
发表于 2015-7-29 16:03:17 | 显示全部楼层 |阅读模式
5金钱
比方说有两个中断源A和B(使用同一个中断响应程序interrupt),A的抢占优先级大于B,然后他俩的响应优先级是一样的。现在B中断来了,系统跳interrupt去执行中断响应程序,进入响应程序后先判断一下看看是哪个中断源,再跳转到if(B)。中断B的响应程序执行过程中,A中断来了。因为A的优先级比较高,就发生了中断嵌套,系统再次进入interrupt,一开始同样是先判断一下是哪个中断源,而后就跳转到if(A)下面执行。A的响应程序执行完了,系统就跳到当时B正在执行的那个断点继续执行。最后结束中断响应过程。


而对于使用独立中断服务程序的中断源来说,嵌套是发生在不同的中断响应程序之间的。而使用相同中断响应程序的中断嵌套则是在同一个响应程序中完成,并且每一次进入响应程序都需要判断是哪一个中断源。而且在中断响应程序中,如果需要用到某些变量的话,每一个中断源的分支就应该给不同的变量。比如上面的B中断响应里有一个参数i,A中断响应里面也有i并且对i进行了操作,等A响应完,回到之前的B中断响应里面,i的值就被修改了。这样就有可能会出错了。

请问我上面描述的有没有什么问题,要是有问题的话请告诉我,谢谢

最佳答案

查看完整内容[请看2#楼]

这里涉及到了  互斥信号量  你用个Lock()函数  在B访问 i 变量之前的时候 将原来的 i 值保存起来(比如保存在一个全局变量里面)  访问完之后  再将它还原  这样在A访问的时候  i 的值就没有发生变化
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

303

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2275
金钱
2275
注册时间
2015-2-3
在线时间
562 小时
发表于 2015-7-29 16:03:18 | 显示全部楼层
这里涉及到了  互斥信号量  你用个Lock()函数  在B访问 i 变量之前的时候 将原来的 i 值保存起来(比如保存在一个全局变量里面)  访问完之后  再将它还原  这样在A访问的时候  i 的值就没有发生变化
STM32/LPC1788/51
回复

使用道具 举报

42

主题

141

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
342
金钱
342
注册时间
2015-5-26
在线时间
49 小时
 楼主| 发表于 2015-8-1 19:15:05 | 显示全部楼层
回复【2楼】北极圈的黄昏:
---------------------------------
谢谢你
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 04:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表