硬汉嵌入式论坛

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

[有问必答] 关于外部中断的问题

[复制链接]

4

主题

10

回帖

22

积分

新手上路

积分
22
发表于 2022-2-16 16:31:45 | 显示全部楼层 |阅读模式
我用的STM32F407,现在碰到一个问题:
   需求是对一个器件使用SPI操作,原来设计在外部中断里操作,现在新添加的功能要求在主程序中也需要操作;
   我的解决方案是在主程序操作的时候关闭中断,操作完成以后再打开中断,现在有个疑问是如果在关闭中断期间发生中断,当打开中断的时候是否能进入到中断?
   我看到的是两种说法:1、关闭中断时操作全局中断, __disable_irq(),这样在打开中段__enable_irq()后,如果关闭期间发生中断,当在打开中断后可以进入外部中断,是这样吗?
                                   2、关闭中断时操作外部中断 HAL_NVIC_DisableIRQ(EXTI3_IRQn),处理以后打开中断HAL_NVIC_EnableIRQ(EXTI3_IRQn),如果关闭期间发生中断,打开中断后不能进入中断?
     第二种用法我一直是这么用的,只是中断偶尔丢失也没有影响。
回复

使用道具 举报

81

主题

734

回帖

977

积分

金牌会员

积分
977
发表于 2022-2-16 20:04:17 | 显示全部楼层

回帖奖励 +5 个金币

关闭中断了,中断来了,中断标志位应该不置位,所以中断应该就会丢失。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107819
QQ
发表于 2022-2-17 09:36:01 | 显示全部楼层
理解的对。

关闭全局中断的话,来的外部中断会被挂起,重新开启就会恢复,不过重复触发的,仅挂起一次,也就是恢复全局中断后,仅执行一次。

而NVIC的话,就是你没有开启外部中断了,所以不会有中断发生。
回复

使用道具 举报

4

主题

10

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2022-2-17 13:19:13 | 显示全部楼层
谢谢各位的回复,我改成全局中断吧。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-14 22:31 , Processed in 0.149362 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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