那个中断已经被触发了,你要做的只有是清中断标志位:
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串口发送数据,用中断怎么发送能举个例子吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)