N32WBXXX低功耗
请问N32WBxxx中的ns_sleep是怎么唤醒的,我看ns_sleep的实现有对进入sleep模式配置,但是我没找到对他进行唤醒的函数,要实现定时10s唤醒还需要另外配置进入sleep模式吗ns_sleep函数本身并不包含唤醒机制,唤醒需要通过外部中断或定时器中断来实现。 要实现定时10秒唤醒,需要配置定时器并在中断服务程序中退出低功耗模式。 laocuo1142 发表于 2025-4-18 16:37
要实现定时10秒唤醒,需要配置定时器并在中断服务程序中退出低功耗模式。 ...
大佬,那ns_sleep这里的entry_sleep只是对蓝牙进入睡眠做的处理吗,我在其他地方实现低功耗,会影响ns_sleep的处理吗
void ns_sleep(void)
{
if(ns_sleep_lock != 0)
{
return;
}
GLOBAL_INT_DISABLE();
app_sleep_prepare_proc();
switch(rwip_sleep())
{
case RWIP_DEEP_SLEEP:
{
entry_sleep();
}
break;
case RWIP_CPU_SLEEP:
{
entry_idle();
}
break;
case RWIP_ACTIVE:
default:
{
}
break; 在N32WBxxx系列芯片中,ns_sleep函数通常用于进入低功耗睡眠模式,而唤醒机制需结合硬件中断(如RTC、外部引脚中断)或特定事件触发,无需在代码中显式调用单独的唤醒函数 当芯片进入睡眠模式后,若配置了RTC定时中断、外部引脚中断(如WKUP引脚)或其他可唤醒中断源,这些中断事件会触发CPU退出睡眠模式。 RTC定时中断可配置为10秒触发一次,中断服务程序(ISR)中处理唤醒逻辑。 唤醒由硬件自动触发,无需在代码中调用特定函数。只需确保中断配置正确,并在中断服务程序中清除中断标志位。 配置RTC时钟源(如LSE或LSI),并设置分频器和闹钟值,确保10秒后触发中断。 启用RTC闹钟中断,并在NVIC中使能对应中断通道。 在RTC中断服务程序中,清除中断标志位,并执行唤醒后的初始化操作(如重新配置时钟)。 唤醒后,系统时钟可能恢复为默认值(如HSI),需在中断服务程序中重新配置为所需时钟源(如HSE)。 进入睡眠模式前,需关闭非必要外设以降低功耗;唤醒后,需重新初始化这些外设。 必须在中断服务程序中清除中断标志位,否则会导致重复触发中断。 进入有个指令然后用时间来唤醒 通过中断可以唤醒吧。至于使用什么中断,根据自己的需要。 对于巡检处理,是通过定时中期的中断来取消睡眠。或者使用按键中断即时响应,解除睡眠。
页:
[1]