stm32如何在中断服务程序里关闭EXTI中断

stm32如何在中断服务程序里关闭EXTI中断,第1张

那个中断已经被触发了,你要做的只有是清中断标志位:

EXTI_ClearITPendingBit(EXTI_Line14);

EXTI_ClearFlag(EXTI_Line14);

非要关的话,我觉得这样就关了

EXTI_InitStructureEXTI_Line = EXTI_Line14;

EXTI_InitStructureEXTI_Mode = EXTI_Mode_Interrupt;

EXTI_InitStructureEXTI_Trigger = EXTI_Trigger_Falling;

EXTI_InitStructureEXTI_LineCmd = DISABLE; //ENABLE

EXTI_Init(&EXTI_InitStructure);

我希望你学会一步一步地调试程序,而不是一上来就一股脑的把代码都加进去,结果出问题了,就很主观地认为是哪里哪里出问题。

你的思路是没问题的,但是你看不到实际的结果就以为是中断出了问题。

我建议你这样,

1、先查找一下你所使用的芯片数据手册,看一下外中断接口是哪一个IO。

2、只做外中断功能,检测到下降沿之后让一个连接LED的IO电平翻转,观察中断是否成功。

3、只做定时器功能,定时时间到让连接LED的IO电平翻转,观察定时器是否成功。

4、在定时器中的服务函数里,做AD采样功能,观察AD是否成功采样。

5、把上述的功能联合起来。

你可以先用串口调试助手,向单片机发送一个数据,如果有j-link,用j-link在中断函数里设置断点,进入中断后程序会停在usart中断那里,还有,通常情况下不使用发送中断,而是接收中断,对于多数据发送,可以等待发送完成标志 while(!(USART1->SR

我尝试给你解释下,可能不够合理。stm32 startup XXxs 是上电启动后执行的启动文件,上电后会初始化中断向量表

当你开启中断且触发了对应中断会跳转到对应中断函数XXX_IRQHandler,但是它还有很多个情况(建议看下stm32 编程参考手册对应USART 中断部分)

在这个中断函数中你需要对事件做判断

其中USART_GetITStatus就是检查是否是指定的中断发生,然后做对应处理。

接下来你需要触发接收中断,理论上步骤是

在当前你的工程Usart 初始化时开启对应接收中断,应该是

然后在RQHandler中补充对应中断检查处理。以上仅供参考。by 某高

以上就是关于stm32如何在中断服务程序里关闭EXTI中断全部的内容,包括:stm32如何在中断服务程序里关闭EXTI中断、STM32外部中断无法进入中断程序,请问下面的程序哪里不对呀、stm32串口发送数据,用中断怎么发送能举个例子吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10097655.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存