Ai8H单片机休眠后如何判断是被那个中断唤醒的?
本帖最后由 DebugLab 于 2024-11-20 10:59 编辑Ai8H单片机进入休眠后设置了RTC,uart1,uart2唤醒,如何判断是那个中断唤醒的?
唤醒后会进中断,可以在中断函数中判断
RTC发生中断后唤醒单片机可以在中断中判断,
但是uart起始位唤醒单片机后并不能立即进入中断,
需要等接收后才能进入中断,
这样刚唤醒单片机时不能判断是那个UART产生的中断。
可以使用串口返回值或者指示灯吧 睡前对某个位变量置位,醒来在中断里面判断,如果是置位状态就是被唤醒进入的中断,如果没置位就是普通中断。flag=1;
睡;
zzzzzzzzzz
ISR
{
if (flag)printf("俺是被唤醒的")
else printf("俺是普通中断来的")
flag = 0
}
置位状态就是正常触发的中断。 除了串口不能确认,其它都可以通过中断来判断,哪个中断唤醒了就设个标志,如果没有标志置1就是串口唤醒了 柳树苗儿 发表于 2024-11-20 11:23
RTC发生中断后唤醒单片机可以在中断中判断,
但是uart起始位唤醒单片机后并不能立即进入中断,
需要等接收 ...
可以在掉电代码后几行加接收脚电平判断代码
睡前对某个位变量置位,醒来在中断里面判断,如果是置位状态就是被唤醒进入的中断,如果没置位就是普通中断。之前这样用过,串口没有接收成功,可能还是当时这样写的逻辑有点问题,我再改改试试。 晓飛飛 发表于 2024-11-20 12:29
睡前对某个位变量置位,醒来在中断里面判断,如果是置位状态就是被唤醒进入的中断,如果没置位就是普通中断 ...
之前这样用过,串口没有接收成功,可能还是当时这样写的逻辑有点问题,我再改改试试。
页:
[1]