打印
[产品应用]

CW32L010从休眠模式下唤醒MCU的问题

[复制链接]
1495|33
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
peng19106|  楼主 | 2024-11-6 12:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 peng19106 于 2024-11-6 14:28 编辑

    现在开发的项目需要低功耗,现在的工作逻辑是:无动作10s后,MCU进入休眠模式,然后在用户按下按键后,外部中断唤醒MCU。    在10s计时满足后,关闭定时器,重新配置PB06,用于外部中断唤醒,然后进入休眠模式。
    但是现在遇到一个问题是,进入休眠模式后,外部中断无法唤醒MCU。
    请教一下各位,问题是哪一点,配置外部中断不可用?休眠模式配置不对还是时钟配置问题?
    1.计时满足后,会进入休眠模式

       //关闭相关外设
       // baseTime_disable();
       //MCU进入休眠状态
       key_io_config(GPIO_IT_FALLING);
       rt_thread_delay(10);
       Sys_ctrl_sleep();
    2.定时器关闭,key重配置
void baseTime_disable(void)
{
    BTIM_ClearITPendingBit(CW_BTIM1, BTIM_IT_UPDATE);
    BTIM_Cmd(CW_BTIM1,DISABLE);
    __SYSCTRL_BTIM123_CLK_DISABLE();
}


/* key配置 */
void key_io_config(uint32_t IT_type)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    __SYSCTRL_GPIOB_CLK_ENABLE();
        
        GPIO_DeInit(CW_GPIOB,GPIO_PIN_6);
        //KEY --> PB6
        GPIO_InitStruct.IT = IT_type;                                                //GPIO_IT_NONE                  GPIO_IT_FALLING
        GPIO_InitStruct.Mode = GPIO_MODE_INPUT_PULLUP;                //GPIO_MODE_INPUT                GPIO_MODE_INPUT_PULLUP
        GPIO_InitStruct.Pins = GPIO_PIN_6;
        GPIO_Init(CW_GPIOB,&GPIO_InitStruct);

        HAL_GPIO_WritePin(CW_GPIOB,GPIO_PIN_6,(GPIO_PinState)GPIO_PIN_SET);
        
        if( IT_type != GPIO_IT_NONE )
        {
                GPIO_ConfigFilter(CW_GPIOB,  GPIOx_ICR_PIN6_Msk, GPIO_FLTCLK_LSI);
                // while( PB06_GETVALUE() );
                GPIOB_INTFLAG_CLR(GPIOx_ICR_PIN6_Msk);
                NVIC_EnableIRQ(GPIOB_IRQn);
        }
}



    3.外部中断回调函数
void GPIOB_IRQHandler(void)
{
    /* USER CODE BEGIN */
        GPIOB_IRQHandlerCallback();
    /* USER CODE END */
}


/* GPIOB外部中断回调函数 */
void GPIOB_IRQHandlerCallback(void)
{
        if( REGBITS_GET(CW_GPIOB->ISR, GPIOx_ISR_PIN6_Msk) > 0 )
    {
        GPIOB_INTFLAG_CLR(GPIOx_ICR_PIN6_Msk);
                sys_para.wakeup = 1;

    }
}


    4.休眠模式配置
/**
**        @brief                进入休眠模式
**/
void Sys_ctrl_sleep(void)
{
    PWR_InitTypeDef     PWR_InitStruct = {0};

        SYSCTRL_GotoSleep();

    sys_para.wakeup = 1;
    MCU_wakeup_peripherals();
}



void MCU_wakeup_peripherals(void)
{
        if( sys_para.wakeup == 0 )
                return ;
        
        SYSCTRL_HSI_Enable(SYSCTRL_HSIOSC_DIV12);
        
        sys_para.wakeup = 0;
        sys_para.status = STATUS_WORK;
        
        GPIO_Port_config();
        baseTime_config(999,3);
}

  

使用特权

评论回复
33
软核硬核| | 2025-3-10 11:03 | 只看该作者
时钟配置对于MCU的休眠和唤醒行为有直接影响。如果配置不当,可能导致MCU无法正确休眠或唤醒,从而影响设备性能。

使用特权

评论回复
32
七毛钱| | 2025-3-8 20:00 | 只看该作者
检查并重新配置时钟系统。如果需要,可以配置内部低频时钟以保证芯片在PD模式下也可以进行必要的计数或操作。

使用特权

评论回复
31
麻花油条| | 2025-3-8 19:00 | 只看该作者
在进入休眠模式前,关闭所有不需要的中断源。

使用特权

评论回复
30
cr315| | 2025-3-8 16:26 | 只看该作者
检查并设置正确的中断触发条件。

使用特权

评论回复
29
jcky001| | 2025-3-8 14:56 | 只看该作者
硬件连接问题或硬件故障

使用特权

评论回复
28
两只袜子| | 2025-3-8 13:30 | 只看该作者
软件中可能存在bug,导致休眠模式或外部中断的配置不正确。

使用特权

评论回复
27
classroom| | 2025-3-8 12:30 | 只看该作者
如果外部中断依赖于特定的时钟源,而该时钟源在休眠模式下被关闭,则外部中断将无法工作。

使用特权

评论回复
26
probedog| | 2025-3-8 12:00 | 只看该作者
在休眠模式下,MCU的时钟系统可能被关闭或降低频率,导致外部中断无法及时响应。

使用特权

评论回复
25
laocuo1142| | 2025-3-7 16:59 | 只看该作者
在进入休眠模式前,可能没有正确配置外部中断。

使用特权

评论回复
24
stormwind123| | 2025-3-7 12:30 | 只看该作者
休眠模式的配置可能不正确,导致MCU无法响应外部中断。

使用特权

评论回复
23
powerantone| | 2025-3-7 12:00 | 只看该作者
在进入休眠模式前,可能未正确关闭或配置其他可能唤醒MCU的中断源,如定时器中断、ADC中断等。这些中断源如果在休眠前未关闭,可能会在休眠期间频繁唤醒MCU。

使用特权

评论回复
22
flycamelaaa| | 2025-3-7 10:00 | 只看该作者
如果使用了同一组外部中断的多个中断口,且未正确判断中断触发源,也可能导致无法正确唤醒MCU。

使用特权

评论回复
21
天天向善| | 2025-3-5 12:54 | 只看该作者
关于CW32L010唤醒MCU的问题,确保其休眠模式设置正确,检查唤醒中断设置与源,在合适的输入条件下可通过复位或中断唤醒MCU

使用特权

评论回复
20
ClarkLLOTP| | 2024-12-18 16:43 | 只看该作者
可以参考一下相关的例程

使用特权

评论回复
19
tiakon| | 2024-12-15 17:11 | 只看该作者
确保在进入休眠模式之前,所有必要的时钟已经使能。

使用特权

评论回复
18
pe66ak| | 2024-12-15 14:18 | 只看该作者
时钟源选择,确保在休眠模式下,选择了合适的时钟源(如LSI),并且该时钟源能够支持外部中断唤醒。

使用特权

评论回复
17
nqty| | 2024-12-15 13:13 | 只看该作者
时钟配置可能影响MCU的休眠和唤醒行为。

使用特权

评论回复
16
eleg34ance| | 2024-12-15 11:21 | 只看该作者
确保选择了正确的休眠模式(如低功耗模式),并且该模式支持外部中断唤醒。

使用特权

评论回复
15
gra22ce| | 2024-12-15 10:42 | 只看该作者
休眠模式的配置可能存在问题,导致MCU无法正确响应外部中断。

使用特权

评论回复
14
gongqijuns| | 2024-12-15 07:08 | 只看该作者
中断优先级,确保中断优先级配置正确,避免中断被屏蔽。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

6

帖子

0

粉丝