QQ624353765 发表于 2024-5-19 09:08:40

有关中断执行过程




这里有个死循环在等中断




在中断里会清空这个标志,请问这样写会使while失效吗?
现在的现象有时运行正常,又是就卡死了

晓飛飛 发表于 2024-5-19 16:09:11

会的,这样会有很大概率进入死循环的

xiangzichen 发表于 2024-5-19 17:20:26

保证中断触发的时间内,加个超时退出:
a = 0;
while(!DMA_UR1T_STA){
    //这里写个累加计算,超过一段时间,强行退出
    //delay(xxx);
    if(++a == 0) break;
}

QQ624353765 发表于 2024-5-19 20:27:18

xiangzichen 发表于 2024-5-19 17:20
保证中断触发的时间内,加个超时退出:
a = 0;
while(!DMA_UR1T_STA){


已找到更优解了,谢谢

梁工 发表于 2024-5-24 13:19:44

在外部程序(非中断程序)查询等待某个中断标志非0,而中断中又清除这个中断标志,则有很大的概率会死在等待上。如果要查询,则另外设置一个变量,查询这个变量,并在中断中清除这个中断标志后设置这个变量。
在项目程序中,不建议出现任何死等的代码,测试例子可以使用。
页: [1]
查看完整版本: 有关中断执行过程