硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1628|回复: 9
收起左侧

[技术讨论] 关于PRIMASK和外设中断的讨论

[复制链接]

14

主题

50

回帖

92

积分

初级会员

积分
92
发表于 2023-7-7 17:07:55 | 显示全部楼层 |阅读模式
发现当PRIMASK禁止全局中断后,如果一个外设仍然在运行,并且IF成立,在开始全局中断前,我清外设IF,然后在开启全局中断,这个中断仍然会被响应。这个实验得到的,但从内核手册没有明确说明。有没有小伙伴清楚知道ARM M核中断机制
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117542
QQ
发表于 2023-7-8 09:09:00 | 显示全部楼层
M内核中断有pend挂起标志的,及时全局中断关闭,也可以触发挂起。不过这个仅可以挂起记录一次,即使关闭中断期多次触发,‘

你恢复全局中断后,就会得到执行。
回复

使用道具 举报

14

主题

50

回帖

92

积分

初级会员

积分
92
 楼主| 发表于 2023-7-10 13:57:18 | 显示全部楼层
eric2013 发表于 2023-7-8 09:09
M内核中断有pend挂起标志的,及时全局中断关闭,也可以触发挂起。不过这个仅可以挂起记录一次,即使关闭中 ...

一个应用我发现,如果BOOT里面,关闭外设只用关闭外设时钟,然后APP中一旦开启对应外设时钟+全局中断就可能导致中断被触发,关键是这个时候中断不是我预期需要触发的
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117542
QQ
发表于 2023-7-11 09:24:59 | 显示全部楼层
lovely-teddy 发表于 2023-7-10 13:57
一个应用我发现,如果BOOT里面,关闭外设只用关闭外设时钟,然后APP中一旦开启对应外设时钟+全局中断就可 ...

APP跳转前要提供一个类似芯片重新上电时的干净环境才行。

像你这种情况,需要关闭所有外设NVIC中断,使用的外设也做好DeIint复位初始化处理。
回复

使用道具 举报

14

主题

50

回帖

92

积分

初级会员

积分
92
 楼主| 发表于 2023-7-12 17:12:31 | 显示全部楼层
eric2013 发表于 2023-7-11 09:24
APP跳转前要提供一个类似芯片重新上电时的干净环境才行。

像你这种情况,需要关闭所有外设NVIC中断, ...

是的,学习了
回复

使用道具 举报

6

主题

22

回帖

40

积分

新手上路

积分
40
发表于 2024-7-1 12:24:32 | 显示全部楼层
eric2013 发表于 2023-7-8 09:09
M内核中断有pend挂起标志的,及时全局中断关闭,也可以触发挂起。不过这个仅可以挂起记录一次,即使关闭中 ...

权威指南里面这句话:如果在某个中断得到响应之前,其悬起状态被清除了(例如,在PRIMASK或FAULTMASK置位的时候软件清除了悬起状态标志),则中断被取消,这样是不是就会丢中断?
还有这个包含BASEPRI方式关中断吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117542
QQ
发表于 2024-7-1 15:08:55 | 显示全部楼层
wyang 发表于 2024-7-1 12:24
权威指南里面这句话:如果在某个中断得到响应之前,其悬起状态被清除了(例如,在PRIMASK或FAULTMASK置位 ...

关闭期间也可以触发中断标志,只是中断不会被执行,需要开启全局中断后才会,PRIMASK和BASEPRI管理的中断范围都是这样的。
回复

使用道具 举报

6

主题

22

回帖

40

积分

新手上路

积分
40
发表于 2024-7-1 19:19:44 | 显示全部楼层
eric2013 发表于 2024-7-1 15:08
关闭期间也可以触发中断标志,只是中断不会被执行,需要开启全局中断后才会,PRIMASK和BASEPRI管理的中断 ...

F:\note\study_note\embedded\mcu\pic\interupt_clear.png
从这图看,中断确实被清除了,而不是说的还会执行
回复

使用道具 举报

6

主题

22

回帖

40

积分

新手上路

积分
40
发表于 2024-7-1 19:21:27 | 显示全部楼层
从这个图看,中断确实被清除了,而不是被挂起,然后中断结束后还会执行
interupt_clear.png
回复

使用道具 举报

6

主题

22

回帖

40

积分

新手上路

积分
40
发表于 2024-7-1 19:26:07 | 显示全部楼层
eric2013 发表于 2024-7-1 15:08
关闭期间也可以触发中断标志,只是中断不会被执行,需要开启全局中断后才会,PRIMASK和BASEPRI管理的中断 ...

哦 我理解错了,应该是PRIMASK置位期间,中断被软件清除了,PRIMASK清除之后 中断就不会执行
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-13 18:34 , Processed in 0.049612 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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