完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
可能是因为你没有在中断服务函数中清除中断标志位导致的。当外部中断发生时,CPU会自动将相应的中断标志位置1,在中断服务函数中应该手动清除这个标志位。如果没有清除,下一个中断发生时会覆盖上一个中断的标志位,导致ISRC寄存器一直为0。你可以尝试添加清除中断标志位的代码,例如:
```c void __attribute__((interrupt, no_auto_psv)) _INT0Interrupt(void) { // 具体的中断处理代码 IFS0bits.INT0IF = 0; // 清除INT0中断标志位 } ``` 同样的,如果你使用了多个外部中断,也需要在相应的中断服务函数中清除标志位。 |
|
|
|
只有小组成员才能发言,加入小组>>
3320 浏览 9 评论
2998 浏览 16 评论
3496 浏览 1 评论
9066 浏览 16 评论
4089 浏览 18 评论
1189浏览 3评论
612浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
602浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2339浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1899浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 18:50 , Processed in 1.217529 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号