你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

求教STM32F103进入STOP模式后用外部中断唤醒的问题

[复制链接]
crotex 提问时间:2012-8-13 16:26 /
 void EXTI0_IRQHandler(void)
{
 
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
        if(EXTI_GetITStatus(EXTI_Line0) != RESET)     //检查指定的EXTI0线路触发请求发生与否
        {
 
                EXTI_ClearITPendingBit(EXTI_Line0);  //清除EXTI0线路挂起位
                EXTI_ClearFlag(EXTI_Line0);          //清楚EXTI0线路挂起标志位
                if(STOP_MODEL())
                {
                        PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);
                }
        }
}
 
void EXTI1_IRQHandler(void)
{
 
        ErrorStatus HSEStartUpStatus;
        RCC_HSEConfig(RCC_HSE_ON);
 
          /* Wait till HSE is ready */
        HSEStartUpStatus = RCC_WaitForHSEStartUp();
 
        if(HSEStartUpStatus == SUCCESS)
        {
                /* Select HSE as system clock source */
            RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);
        }
        if(EXTI_GetITStatus(EXTI_Line1) != RESET)     //检查指定的EXTI1线路触发请求发生与否
        {
                EXTI_ClearITPendingBit(EXTI_Line1);  //清除EXTI1线路挂起位
                EXTI_ClearFlag(EXTI_Line1);          //清楚EXTI1线路挂起标志位
        }
}
通过中断0使CPU进入STOP模式,想通过中断1来唤醒,但是无法唤醒
中断配置如下
        GPIO_InitTypeDef GPIO_InitStructure;
         EXTI_InitTypeDef EXTI_InitStructure;
         NVIC_InitTypeDef NVIC_InitStructure;
 
 
          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
 
 
//init GPIOB.0          下拉输入
          GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
 
          GPIO_Init(GPIOB, &GPIO_InitStructure);
 
  //GPIOB.0
         GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource0);
 
         EXTI_InitStructure.EXTI_Line=EXTI_Line0;
          EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
          EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
          EXTI_InitStructure.EXTI_LineCmd = ENABLE;
          EXTI_Init(&EXTI_InitStructure);
 
 
          NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;                       
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;       
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;                               
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
          NVIC_Init(&NVIC_InitStructure);
 
          //init GPIOA.1          下拉输入
          GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_1;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
          GPIO_Init(GPIOA, &GPIO_InitStructure);
 
            //GPIOA.1
          GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource1);
 
          EXTI_InitStructure.EXTI_Line=EXTI_Line1;
          EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
          EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
          EXTI_InitStructure.EXTI_LineCmd = ENABLE;
          EXTI_Init(&EXTI_InitStructure);
 
 
          NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;                       
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03;       
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;               
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
          NVIC_Init(&NVIC_InitStructure);
新手没有积分,还希望大侠们指点。
收藏 评论4 发布时间:2012-8-13 16:26

举报

4个回答
crotex 回答时间:2012-8-13 16:31:23

RE:求教STM32F103进入STOP模式后用外部中断唤醒的问题

不识庐山真面目,只缘身在此山中呀,发完帖子,猛然发现问题了,原来唤醒的中断1的优先级低于中断0,提高优先级搞定了
阿呆 回答时间:2012-8-24 18:17:58

回复:求教STM32F103进入STOP模式后用外部中断唤醒的问题

不错,恭喜你
阳阳NO1 回答时间:2015-6-3 20:48:32
这个跟中断优先级有什么关系
Glenxu 回答时间:2024-7-27 21:14:13

EXTI_ClearITPendingBit(EXTI_Line1); //清除EXTI1线路挂起位 EXTI_ClearFlag(EXTI_Line1); //清楚EXTI1线路挂起标志位

请在这两句的前面加上对Line0的同样处理,这样就可以防止IO同时触发的情况下,反复进入STOP的问题。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版