柳树苗儿 发表于 2024-11-20 10:53:12

Ai8H单片机休眠后如何判断是被那个中断唤醒的?

本帖最后由 DebugLab 于 2024-11-20 10:59 编辑

Ai8H单片机进入休眠后设置了RTC,uart1,uart2唤醒,如何判断是那个中断唤醒的?

CyberHamster 发表于 2024-11-20 11:10:18

唤醒后会进中断,可以在中断函数中判断






柳树苗儿 发表于 2024-11-20 11:23:51

RTC发生中断后唤醒单片机可以在中断中判断,
但是uart起始位唤醒单片机后并不能立即进入中断,
需要等接收后才能进入中断,
这样刚唤醒单片机时不能判断是那个UART产生的中断。

Matrix 发表于 2024-11-20 12:11:07

可以使用串口返回值或者指示灯吧

晓飛飛 发表于 2024-11-20 12:29:18

睡前对某个位变量置位,醒来在中断里面判断,如果是置位状态就是被唤醒进入的中断,如果没置位就是普通中断。flag=1;
睡;
zzzzzzzzzz

ISR
{
if (flag)printf("俺是被唤醒的")
else    printf("俺是普通中断来的")
flag = 0
}

置位状态就是正常触发的中断。

bkeuqoaq 发表于 2024-11-20 13:30:21

除了串口不能确认,其它都可以通过中断来判断,哪个中断唤醒了就设个标志,如果没有标志置1就是串口唤醒了

Lkck8210 发表于 2024-11-20 17:03:52

柳树苗儿 发表于 2024-11-20 11:23
RTC发生中断后唤醒单片机可以在中断中判断,
但是uart起始位唤醒单片机后并不能立即进入中断,
需要等接收 ...

可以在掉电代码后几行加接收脚电平判断代码

柳树苗儿 发表于 2024-11-22 09:06:59

睡前对某个位变量置位,醒来在中断里面判断,如果是置位状态就是被唤醒进入的中断,如果没置位就是普通中断。之前这样用过,串口没有接收成功,可能还是当时这样写的逻辑有点问题,我再改改试试。

柳树苗儿 发表于 2024-11-22 09:08:30

晓飛飛 发表于 2024-11-20 12:29
睡前对某个位变量置位,醒来在中断里面判断,如果是置位状态就是被唤醒进入的中断,如果没置位就是普通中断 ...

之前这样用过,串口没有接收成功,可能还是当时这样写的逻辑有点问题,我再改改试试。
页: [1]
查看完整版本: Ai8H单片机休眠后如何判断是被那个中断唤醒的?