gpt4 book ai didi

c - 当按下输入时禁用/启用中断(时间)

转载 作者:行者123 更新时间:2023-11-30 17:32:42 25 4
gpt4 key购买 nike

会清除中断/打破循环然后设置中断,恢复ISR吗?我对格式化还很陌生,所以我不确定这是否可行。

else if(serial_input == 'p' || serial_input == 'P') {

while(serial_input = fgetc(stdin)) {
if(serial_input == 'p' || serial_input == 'P'){
cli();
break;
}
sei();
}

最佳答案

记住 sei() 和 cli() 的作用。 cli() 全局设置中断屏蔽,有效屏蔽所有传入中断。所有这一切都会在下一次 sei() 调用之前“保护”代码不被中断。在此期间收到的所有中断都不会被作为中断处理。实际上,在设置掩码位时,它们会被“忽略”。 Here是关于 AVR 中断的易于阅读的引用,其中包括有关 sei() 和 cli() 的信息以及我在下面提到的任何其他中断信息。

您询问有关停止和恢复 ISR 的问题,这本身就是一个奇怪的问题。当遇到中断时,当前进程将停止,使用 ISR 信息生成新的堆栈帧,并执行中断例程,直到遇到中断返回。

reti()// In AVR-C

这会重新加载您的用户程序。实际上没有(安全)方法可以“暂停”ISR 并返回到程序的主执行,只能返回到更深(更高优先级)的中断。为此查找嵌套中断。

关于c - 当按下输入时禁用/启用中断(时间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24035988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com