打印
[STM32F1]

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

[复制链接]
614|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)

使用特权

评论回复
5
飛饵|  楼主 | 2020-5-24 14:11 | 只看该作者
香水城 发表于 2020-5-24 08:43
会不会还是你配置代码逻辑方面哪里有问题? 用事件唤醒的话需要配置事件屏蔽寄存器。

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

配置代码有问题吗?
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE);
       
       
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource2);
       
       
        EXTI_DeInit();
       
        EXTI_initstructure.EXTI_Line = EXTI_Line2; //中断线2
        EXTI_initstructure.EXTI_Mode = EXTI_Mode_Event; //使用事件模式
        EXTI_initstructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发
        EXTI_initstructure.EXTI_LineCmd = ENABLE;
       
        EXTI_Init(&EXTI_initstructure);

使用特权

评论回复
6
xinxianshi| | 2020-5-24 23:51 | 只看该作者
这属于中断吗

使用特权

评论回复
7
飛饵|  楼主 | 2020-5-25 15:00 | 只看该作者

stm32的中断是在事件的基础上加上中断控制吧,有中断产生一定是有事件,但有事件不一定能产生中断

使用特权

评论回复
8
xinxianshi| | 2020-5-26 21:17 | 只看该作者
飛饵 发表于 2020-5-25 15:00
stm32的中断是在事件的基础上加上中断控制吧,有中断产生一定是有事件,但有事件不一定能产生中断 ...

好吧,STM32搞的太深读了。

使用特权

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

本版积分规则

18

主题

117

帖子

1

粉丝