协议栈版本:Z-Stack home 1.2.2
在使用IO中断唤醒,进行调试时,程序一直停在MAC_RADIO_TIMER_SLEEP();这个函数。
Alvin Chen:
你没有成功进入中断回调吗?看看你的32.768晶振正常吗?
Viki Shi:
你是用的是外部还是内部32k晶振?排查一下设置是否正确
user4796768:
回复 Viki Shi:
使用的是外部晶振。
Alvin Chen:
回复 user4796768:
你看一下你的晶振是否正常。
user4796768:
回复 Alvin Chen:
我看过了,晶振应该是没问题,调试查看TIMER2_RUN值时出现Error (col 1):Unknown or ambiguous symbol BV,不知道是什么情况?由于不能上传图片,没办法将调试的信息贴出来。
Alvin Chen:
回复 user4796768:
你有有修改那些程序,你直接烧录SampleSwitch的ZED 模式改一大一些poll rate 让他进入低功耗模式,看看能不能进入低功耗。
user4796768:
回复 Alvin Chen:
没有修改过其他的,调试时我在hal_sleep.c文件中在halPwrMgtMode = (timeout == 0) ? HAL_SLEEP_DEEP : HAL_SLEEP_TIMER;设置断点,看到timeout值为0,应该可以进入低功耗模式的。
Alvin Chen:
回复 user4796768:
MAC_RADIO_TIMER_SLEEP 使用在MAC_INTERNAL_API uint8 macSleep(uint8 sleepState)
也就是一个内部调用关闭radio进入低功耗的模式,你不要打断点在这个函数里面,你直接去测一下功耗。你现在是按键中断无法唤醒吗?
user4796768:
回复 Alvin Chen:
uart口发数据通过RX(P0.2)中断可以唤醒,但是串口无法接收数据。
Alvin Chen:
回复 user4796768:
不建议你用UART. 你需要用一个其他的pin去唤醒否则UART无法正常工作。