[STM32F1] 停止模式下用外部事件唤醒出现个问题

[复制链接]
831|7
 楼主| 飛饵 发表于 2020-5-23 13:51 | 显示全部楼层 |阅读模式
本帖最后由 飛饵 于 2020-5-23 13:55 编辑

用一个按键设置成EXTI_Mode_Event模式来唤醒,现在问题是如果进入停止模式前按下该按键产生了一个事件,接着就没法进入了,需要再次运行停止模式的代码才行。看手册说进入停止模式前需要清除所有EXTI请求位,但我用了EXTI_ClearITPendingBit()和EXTI_ClearFlag()都没用。另外,用中断模式是没问题,因为在中断里清除了标志位,用RTC闹钟设置成事件模式也没问题。
那按键的问题有什么办法解决吗??
mmuuss586 发表于 2020-5-23 14:28 | 显示全部楼层
停止模式前,按按键不要去处理唤醒就可以了吧
 楼主| 飛饵 发表于 2020-5-23 19:49 | 显示全部楼层
mmuuss586 发表于 2020-5-23 14:28
停止模式前,按按键不要去处理唤醒就可以了吧

不太明白。我是用另一个按键来进入停止模式的,唤醒是单独一个键,不冲突啊。
香水城 发表于 2020-5-24 08:43 | 显示全部楼层
会不会还是你配置代码逻辑方面哪里有问题? 用事件唤醒的话需要配置事件屏蔽寄存器。

● 配置个事件线的屏蔽位(EXTI_EMR)
● 配置事件线的触发选择位(EXTI_RTSR和EXTI_FTSR)

 楼主| 飛饵 发表于 2020-5-24 14:11 | 显示全部楼层
香水城 发表于 2020-5-24 08:43
会不会还是你配置代码逻辑方面哪里有问题? 用事件唤醒的话需要配置事件屏蔽寄存器。

● 配置个事件线的屏 ...

配置代码有问题吗?
  1.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
  2.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE);
  3.        
  4.        
  5.         GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource2);
  6.        
  7.        
  8.         EXTI_DeInit();
  9.        
  10.         EXTI_initstructure.EXTI_Line = EXTI_Line2; //中断线2
  11.         EXTI_initstructure.EXTI_Mode = EXTI_Mode_Event; //使用事件模式
  12.         EXTI_initstructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发
  13.         EXTI_initstructure.EXTI_LineCmd = ENABLE;
  14.        
  15.         EXTI_Init(&EXTI_initstructure);
xinxianshi 发表于 2020-5-24 23:51 | 显示全部楼层
这属于中断吗
 楼主| 飛饵 发表于 2020-5-25 15:00 | 显示全部楼层

stm32的中断是在事件的基础上加上中断控制吧,有中断产生一定是有事件,但有事件不一定能产生中断
xinxianshi 发表于 2020-5-26 21:17 | 显示全部楼层
飛饵 发表于 2020-5-25 15:00
stm32的中断是在事件的基础上加上中断控制吧,有中断产生一定是有事件,但有事件不一定能产生中断 ...

好吧,STM32搞的太深读了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

117

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部