打印
[PIC®/AVR®/dsPIC®产品]

PIC18F87K22开全局中断之后,入中断管理程序之后出来又进入,其他程序不执行

[复制链接]
598|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jcky001|  楼主 | 2024-12-10 10:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PIC18F87K22开全局中断之后,入中断管理程序之后出来又进入,其他程序不执行,什么设置没设好,用xc8。

XC8。

使用特权

评论回复
沙发
ynwa| | 2024-12-10 15:04 | 只看该作者
你描述的太笼统。既然可以进中断服务程序,也能退出中断,那无非就是有某个中断源一直在产生中断条件。你可以在ISR中先判断一下是哪个中断源引起的中断,再检查反复产生中断的原因。

使用特权

评论回复
板凳
mxkw0514| | 2024-12-12 09:54 | 只看该作者
ynwa 发表于 2024-12-10 15:04
你描述的太笼统。既然可以进中断服务程序,也能退出中断,那无非就是有某个中断源一直在产生中断条件。你可 ...

请教一下UP,如果中断里面加一个While(1),这个时候一个更高优先级的中断发生后,会跳出这个While(1)吗?

使用特权

评论回复
地板
ynwa| | 2024-12-12 14:21 | 只看该作者
mxkw0514 发表于 2024-12-12 09:54
请教一下UP,如果中断里面加一个While(1),这个时候一个更高优先级的中断发生后,会跳出这个While(1)吗? ...

PIC18中没有你假设的这种中断情形。

如果你没有使能PIC18F87K22的高低中断优先级特性,那么就不存在高优先级中断。

如果你使能了的PIC18F87K22的高低中断优先级特性。那么PIC18的中断机制是这样的:有两个中断服务程序分别对应高/低中断优先级(一个高优先级中断服务程序和一个低优先级中断服务程序)。如果在执行低优先级中断服务程序时发生一个高优先级的中断,那么高优先级中断会中断当前正在执行的低优先级中断服务程序,并在高优先级中断服务程序完成后,继续执行低优先级中断服务程序。

使用特权

评论回复
5
mxkw0514| | 2024-12-12 14:23 | 只看该作者
ynwa 发表于 2024-12-12 14:21
PIC18中没有你假设的这种中断情形。

如果你没有使能PIC18F87K22的高低中断优先级特性,那么就不存在高优 ...

好的,谢谢

使用特权

评论回复
6
wutaosamuel| | 2024-12-12 14:30 | 只看该作者
mxkw0514 发表于 2024-12-12 09:54
请教一下UP,如果中断里面加一个While(1),这个时候一个更高优先级的中断发生后,会跳出这个While(1)吗? ...

严格意义上来说不会。
如果更高优先级中断发生后,现阶段while(1)中正在执行的代码环境会被保存,这个保存的环境包括cpu寄存器的值,while(1)代码执行的位置pc值等等。
等更高优先级的中断执行完之后,它又会回到原来while(1)代码的位置,继续运行。
所以它跳出后,又会跳进了,严格意义上是不会的跳出while(1)循环的

使用特权

评论回复
7
gejigeji521| | 2024-12-15 14:12 | 只看该作者
退出时候要清理标志位呀

使用特权

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

本版积分规则

1522

主题

4615

帖子

6

粉丝