suyaya 发表于 2025-4-15 15:17

N32WBXXX低功耗

请问N32WBxxx中的ns_sleep是怎么唤醒的,我看ns_sleep的实现有对进入sleep模式配置,但是我没找到对他进行唤醒的函数,要实现定时10s唤醒还需要另外配置进入sleep模式吗

laocuo1142 发表于 2025-4-18 16:37

ns_sleep函数本身并不包含唤醒机制,唤醒需要通过外部中断或定时器中断来实现。

laocuo1142 发表于 2025-4-18 16:37

要实现定时10秒唤醒,需要配置定时器并在中断服务程序中退出低功耗模式。

suyaya 发表于 2025-4-27 09:28

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;

suw12q 发表于 2025-5-12 14:49

在N32WBxxx系列芯片中,ns_sleep函数通常用于进入低功耗睡眠模式,而唤醒机制需结合硬件中断(如RTC、外部引脚中断)或特定事件触发,无需在代码中显式调用单独的唤醒函数

q1d0mnx 发表于 2025-5-12 16:10

当芯片进入睡眠模式后,若配置了RTC定时中断、外部引脚中断(如WKUP引脚)或其他可唤醒中断源,这些中断事件会触发CPU退出睡眠模式。

tax2r6c 发表于 2025-5-12 17:26

RTC定时中断可配置为10秒触发一次,中断服务程序(ISR)中处理唤醒逻辑。

su1yirg 发表于 2025-5-12 18:30

唤醒由硬件自动触发,无需在代码中调用特定函数。只需确保中断配置正确,并在中断服务程序中清除中断标志位。

q1ngt12 发表于 2025-5-12 19:42

配置RTC时钟源(如LSE或LSI),并设置分频器和闹钟值,确保10秒后触发中断。

zhizia4f 发表于 2025-5-12 21:48

启用RTC闹钟中断,并在NVIC中使能对应中断通道。

t1ngus4 发表于 2025-5-13 07:32

在RTC中断服务程序中,清除中断标志位,并执行唤醒后的初始化操作(如重新配置时钟)。

liu96jp 发表于 2025-5-13 10:06

唤醒后,系统时钟可能恢复为默认值(如HSI),需在中断服务程序中重新配置为所需时钟源(如HSE)。

d1ng2x 发表于 2025-5-13 11:16

进入睡眠模式前,需关闭非必要外设以降低功耗;唤醒后,需重新初始化这些外设。

ex7s4 发表于 2025-5-13 13:22

必须在中断服务程序中清除中断标志位,否则会导致重复触发中断。

地瓜patch 发表于 2025-5-22 22:21

进入有个指令然后用时间来唤醒

suncat0504 发表于 2025-5-29 22:04

通过中断可以唤醒吧。至于使用什么中断,根据自己的需要。

suncat0504 发表于 2025-5-29 22:05

对于巡检处理,是通过定时中期的中断来取消睡眠。或者使用按键中断即时响应,解除睡眠。
页: [1]
查看完整版本: N32WBXXX低功耗