打印

关于中断的问题,Disable中再Enable中断无法正常运行

[复制链接]
3422|34
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
czyh1989|  楼主 | 2023-2-22 15:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
GPIO, IO, gp, pi, AB, BLE
Disable中断之后再Enable无法正常运行,这是中断函数:
void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)
{ if(GPIO_Pin==GPIO_PIN_3) { HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
HAL_NVIC_DisableIRQ(EXTI2_3_IRQn); EXIT_Sign=1; }
}
这是while循环
while (1) { / USER CODE END WHILE / if(EXIT_Sign==1) { HAL_Delay(2000); MX_GPIO_Init();
HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET); EXIT_Sign=0; }
/ USER CODE BEGIN 3 / }
这样是可以实现功能的,但是只要注释掉if里面的
MX_GPIO_Init();
或者
HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);
这两个注释掉一个就无法实现功能。我的问题是:MX_GPIO_Init();函数里面有使能中断语句了HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);
为啥在if里面还得再重复一遍这个使能函数呢。不知道我有没有说明白,请各位大佬们帮忙解答一下。

使用特权

评论回复
沙发
我吃小朋友| | 2023-3-10 19:37 | 只看该作者
就是你想问HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);为啥要使能两次是吧

使用特权

评论回复
板凳
将爱藏于深海| | 2023-3-10 20:41 | 只看该作者
应该是有啥时序关系吧,这个我也遇到过

使用特权

评论回复
地板
故意相遇| | 2023-3-10 21:19 | 只看该作者
不知道为啥要使能两次,可能是因为使能的方式不一样?

使用特权

评论回复
5
AloneKaven| | 2023-3-10 21:58 | 只看该作者
是不是顺序的问题啊?

使用特权

评论回复
6
西洲| | 2023-3-10 22:13 | 只看该作者
按理来说不应该需要使能两次的啊

使用特权

评论回复
7
失物招領| | 2023-3-10 23:18 | 只看该作者
你MX_GPIO_Init();是不是还有其他的初始化啊?

使用特权

评论回复
8
春日负喧| | 2023-3-11 01:33 | 只看该作者
可能是线要初始化IO,在初始化中断使能吧

使用特权

评论回复
9
温室雏菊| | 2023-3-11 03:05 | 只看该作者
你可以把HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);放在MX_GPIO_Init();应该就不用再使能一次了吧

使用特权

评论回复
10
月亮一键变蓝| | 2023-3-11 05:21 | 只看该作者
看看官方的手册,是否有写为什么要使能两次

使用特权

评论回复
11
未说出口的像你| | 2023-3-11 07:59 | 只看该作者
我记得使能一次应该就能好使的啊?

使用特权

评论回复
12
一只眠羊| | 2023-3-11 08:37 | 只看该作者
是不是中断优先级比较低啊?还是哪里逻辑没设置对呢?

使用特权

评论回复
13
香水城| | 2023-3-12 21:35 | 只看该作者
正常来讲,肯定无须做2次HAL_NVIC_EnableIRQ(EXTI2_3_IRQn),

但就凭这些信息外人没法分析。不像咨询者本人的发言。

使用特权

评论回复
14
朝生| | 2023-3-14 15:52 | 只看该作者
你看【MX_GPIO_Init();函数里面有使能中断语句】有没有执行。

使用特权

评论回复
15
LLGTR| | 2023-3-14 15:54 | 只看该作者
你可以看寄存器,执行完MX_GPIO_Init()函数是否置位了。

使用特权

评论回复
16
芯路例程| | 2023-3-14 15:56 | 只看该作者
估计你初始化里面对外设并没有真正使能中断。

使用特权

评论回复
17
SantaBunny| | 2023-5-5 23:21 | 只看该作者
可以看看寄存器,执行完MX_GPIO_Init()函数是不是置位了

使用特权

评论回复
18
香水城| | 2023-5-6 09:33 | 只看该作者

使用特权

评论回复
19
dingy| | 2023-5-15 20:03 | 只看该作者
就是你想问HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);为啥要使能两次是吧

使用特权

评论回复
20
xxmmi| | 2023-5-15 20:05 | 只看该作者
应该是有啥时序关系吧,这个我也遇到过

使用特权

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

本版积分规则

1

主题

1

帖子

0

粉丝