硬汉嵌入式论坛

 找回密码
 立即注册
查看: 575|回复: 7
收起左侧

[技术讨论] PY32F030进入STop模式不能使用外部中断唤醒

[复制链接]

1

主题

0

回帖

3

积分

新手上路

积分
3
发表于 2025-1-16 09:04:42 | 显示全部楼层 |阅读模式
最近在做项目,第一次用PY32F030,调试低功耗进入STOP模式使用按键外部中断唤醒。

发现怎么都唤醒不了,请教论坛大神解答
代码附下。。。



//进入掉电模式,关闭数码管显示,关闭USB输出,关闭ADC采样,设置上拉口关闭数字输入
void Power_Down(void)
{
        uint8_t Txbuffer=0xC0;
       
        BAT_Enable(0);
        V12_Enable(0);
        Vtim.led_flag = 0;
        LED_Enable(0);
        Vtim.SOSturn_flag = 0;
        Vtim.Dis_Showflag = 0;
        LED_OFF();
        memset(Discon,0,9);
        LED_OFF();
        VJumpStarter.idleflag = 0;
       
        HAL_Delay(100);
        //配置按键产生外部中断
  GPIO_InitTypeDef  GPIO_InitStruct={0};
  __HAL_RCC_GPIOA_CLK_ENABLE();                  /* Enable GPIOA clock */
  GPIO_InitStruct.Mode  = GPIO_MODE_IT_FALLING;  /* GPIO mode set to falling edge interrupt */
  GPIO_InitStruct.Pull  = GPIO_PULLUP;           /* Pull-up */
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;  /* High-speed */
  GPIO_InitStruct.Pin = GPIO_PIN_15;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  /* Enable EXTI interrupt */
  HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);
  /* Configure interrupt priority */
  HAL_NVIC_SetPriority(EXTI4_15_IRQn, 2, 2);
        __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_15);
       
       
        __HAL_RCC_GPIOB_CLK_ENABLE();                  /* Enable GPIOA clock */
  GPIO_InitStruct.Mode  = GPIO_MODE_IT_FALLING;  /* GPIO mode set to falling edge interrupt */
  GPIO_InitStruct.Pull  = GPIO_PULLUP;           /* Pull-up */
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;  /* High-speed */
  GPIO_InitStruct.Pin = GPIO_PIN_3;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  /* Enable EXTI interrupt */
  HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);
  /* Configure interrupt priority */
  HAL_NVIC_SetPriority(EXTI2_3_IRQn, 2, 2);
        __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_3);
       
       
        HAL_GPIO_WritePin(GPIOA,GPIO_PIN_10,GPIO_PIN_RESET);
        IIC_SendData(SYS_CTL9,&Txbuffer,1);
        HAL_Delay(100);
       
//        SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk));
//        SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk));
//        PWR_StopModeConfigTypeDef PwrStopModeConf = {0};
        __HAL_RCC_PWR_CLK_ENABLE();//PWR时钟使能
        __HAL_RCC_SYSCFG_CLK_ENABLE();
  /* Suspend Systick interrupt to prevent SysTick interrupt from waking up the system */
  HAL_SuspendTick();   


//  /* VCORE = 1.0V  when enter stop mode */
////  PwrStopModeConf.LPVoltSelection       =  PWR_STOPMOD_LPR_VOLT_SCALE2;
////  PwrStopModeConf.FlashDelay            =  PWR_WAKEUP_FLASH_DELAY_5US;
////  PwrStopModeConf.WakeUpHsiEnableTime   =  PWR_WAKEUP_HSIEN_AFTER_MR;
////  PwrStopModeConf.RegulatorSwitchDelay  =  PWR_WAKEUP_LPR_TO_MR_DELAY_2US;
////  PwrStopModeConf.SramRetentionVolt     =  PWR_SRAM_RETENTION_VOLT_VOS;
////  HAL_PWR_ConfigStopMode(&wrStopModeConf);  

//  /* Enter STOP mode */
  HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI);  
// HAL_PWR_EnterSLEEPMode(PWR_SLEEPENTRY_WFI);  

        /*系统时钟初始化*/
        System_Init();
        /*硬件底层驱动初始化*/
        Hardware_Init();
        /* Resume the SysTick interrupt */
        HAL_ResumeTick();


        HAL_GPIO_WritePin(GPIOA,GPIO_PIN_10,GPIO_PIN_SET);
        Vtim.Dis_Showflag = 1;
        VJumpStarter.idleflag = 1;
       
        //恢复按键配置
        __HAL_RCC_GPIOA_CLK_ENABLE();
       
        GPIO_InitStruct.Pin = GPIO_PIN_15;       
        GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
        GPIO_InitStruct.Pull = GPIO_PULLUP;
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
        HAL_NVIC_DisableIRQ(EXTI4_15_IRQn);
       
        __HAL_RCC_GPIOB_CLK_ENABLE();
       
        GPIO_InitStruct.Pin = GPIO_PIN_3;       
        GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
        GPIO_InitStruct.Pull = GPIO_PULLUP;
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
        HAL_NVIC_DisableIRQ(EXTI2_3_IRQn);
}




void EXTI4_15_IRQHandler(void)
{
  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_15); /* Handle EXTI interrupt request */
}

void EXTI2_3_IRQHandler(void)
{
        HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3); /* Handle EXTI interrupt request */
}


void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
  if(GPIO_Pin==GPIO_PIN_15)
  {
                printf("K1唤醒");
    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_15);
  }
       
        if(GPIO_Pin==GPIO_PIN_3)
  {
                printf("K2唤醒");
    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_3);
  }
       
       
}


void System_Init(void)
{
       
        HAL_Init();//系统初始化
//        OptionByte_Init();//选项字节初始化
//        RCC_Init();//选择HSI时钟源,24M经过PLL2倍频到48M系统时钟
        APP_SystemClockConfig();

}


void Hardware_Init(void)
{
        GPIO_Init();
        Key_Init();
        Usart1_Init();
        Usart2_Init();
        Timer3_Init();
        Timer16_Init();
        ADC_Init();
        LED_Init();
        IIC_Init();
        ip2369_RegInit();
}




回复

使用道具 举报

1

主题

0

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2025-1-16 09:24:50 | 显示全部楼层
哪位大神解答一下,不胜感激
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2025-1-16 15:30:51 | 显示全部楼层
2336051143 发表于 2025-1-16 09:24
哪位大神解答一下,不胜感激

这个我记得官方软件包里面有例子,你那边测试是否正常。
回复

使用道具 举报

10

主题

40

回帖

70

积分

初级会员

积分
70
发表于 2025-1-17 10:19:36 | 显示全部楼层
PY的使用如何,BUG多不哦,准备新项目上用这个料
回复

使用道具 举报

1

主题

21

回帖

24

积分

新手上路

积分
24
发表于 2025-1-17 10:34:29 | 显示全部楼层
PY官方写的外设驱动函数错漏百出
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2025-4-9 10:50:19 | 显示全部楼层
准备用py32做项目 不知坑多不
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2025-4-9 17:46:56 | 显示全部楼层
liang31555 发表于 2025-4-9 10:50
准备用py32做项目 不知坑多不

测试过一些功能,还不错。
回复

使用道具 举报

0

主题

16

回帖

16

积分

新手上路

积分
16
发表于 2025-4-16 17:40:39 | 显示全部楼层
wqy1103 发表于 2025-1-17 10:19
PY的使用如何,BUG多不哦,准备新项目上用这个料

我公司去年做个低成本的方案用的这颗料,出现楼主的这种问题,进入休眠后唤不醒了,后来找代理商反馈到厂家,厂家回复是芯片设计有BUG,当时叫我们更换其他型号的芯片,所以如果要使用,还是多问问原厂都有哪些坑,让他们出勘误文档,回复是没有,产品做完各种环境实验都要做一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-26 01:59 , Processed in 0.256130 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表