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

stm32f030f4p6进入stop的问题

[复制链接]
阳阳NO1 提问时间:2015-6-4 10:43 /
阅读主题, 点击返回1楼
收藏 评论25 发布时间:2015-6-4 10:43
25个回答
阳阳NO1 回答时间:2015-6-4 22:52:28
本帖最后由 阳阳NO1 于 2015-6-4 22:53 编辑
creep 发表于 2015-6-4 22:24
如果能把jlink驱动升级到V4.90e版本以上,可以使用jlink的Jlink RTT client或者Jlink RTT logger 输出打 ...

焊了个串口出来了,测试了下,还是IO口没配好,有时按下按键,然后将按键设置成EXTI模式,系统进入stop,立马又被中断唤醒。有时唤醒之后将IO口设置成普通输入输出,但里面就进入stop模式了
QQ图片20150604225400.jpg



creep 回答时间:2015-6-4 23:22:11
阳阳NO1 发表于 2015-6-4 22:52
焊了个串口出来了,测试了下,还是IO口没配好,有时按下按键,然后将按键设置成EXTI模式,系统进入stop, ...

我现在怀疑你的那个按键有问题了。是不是按键太灵敏了?千万别是硬件到底问题了。
阳阳NO1 回答时间:2015-6-4 23:40:51
creep 发表于 2015-6-4 23:22
我现在怀疑你的那个按键有问题了。是不是按键太灵敏了?千万别是硬件到底问题了。 ...

我的硬件就一个上拉电阻,配置我上拉下拉都改过,无济于事,那我明天换个按键试试。
但是从道理上讲,是有可能啊,比如进入STOP之后,按下按键触发中断,然后在中断里面配置引脚为输入引脚,退出中断,在主程序里面去按键扫描,如果手按的时间长点,就会检测到这个按键按下,这不又是进入到stop模式了啊
creep 回答时间:2015-6-5 09:07:28
阳阳NO1 发表于 2015-6-4 23:40
我的硬件就一个上拉电阻,配置我上拉下拉都改过,无济于事,那我明天换个按键试试。
但是从道理上讲,是 ...

我想了下你说的这个长按按键会导致唤醒后再次进入休眠模式的可能性确实是存在的,但是比较可惜的是我在这个开发板怎么也测试不到这种情况的发生,无论是长按还是短按程序都能正常工作。为了避免你i说的那个情况的发生可以修改下按键中断代码如下,加上按键的按下使能标志。你再测试下在你的板子上是否能正常工作。
  1. void EXTI15_10_IRQHandler(void)
  2. {
  3.     if(EXTI_GetITStatus(EXTI_Line13) != RESET)
  4.     {
  5.         SYSCLKConfig_STOP();
  6.         g_keyWorkMode = IO_MODE;
  7.         KEY_CheckMode(IO_MODE);
  8.         g_KeyRelease = DISABLE;
  9.         printf("\n\r-----按键中断唤醒MCU--------\n\r\n\r");
  10.         EXTI_ClearITPendingBit(EXTI_Line13);
  11.     }
  12. }
复制代码
阳阳NO1 回答时间:2015-6-5 09:53:21
creep 发表于 2015-6-5 09:07
我想了下你说的这个长按按键会导致唤醒后再次进入休眠模式的可能性确实是存在的,但是比较可惜的是我在这 ...

你的这种办法我昨晚上也想到了,我还做了实验,效果很差:
QQ图片20150605094052.png

我甚至修改按键扫描,添加了松手检测,只有在手松开的时候,才去返回KEY_PRESS;
U8 Key_Scan(void)
{
    if(g_KeyRelease && (!KEY_USER_STA)) /*表示有按键按下*/
    {
        delay_ms(10);
        if(!KEY_USER_STA)
                {
                          while(!KEY_USER_STA);
                          g_KeyRelease = ENABLE;
                          return  KEY_PRESS;
                }
                                       
    }
        else if(KEY_USER_STA)               
             g_KeyRelease = ENABLE;
        return 0;
}
现象如下:

QQ图片20150605094313.png
而且一出现这样的情况,按键就失去左右了,再也唤不醒芯片了。
说实话,我真的有点想不通了,将测试工程上传至附件,希望得到高人指点
file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\413351855\QQ\WinTemp\RichOle\}DN2_P0I$BQ97$Z7R05F}IL.png


测试进入stop模式.rar

下载

7.23 MB, 下载次数: 41, 下载积分: ST金币 -1

阳阳NO1 回答时间:2015-6-5 10:57:16
本帖最后由 阳阳NO1 于 2015-6-5 11:01 编辑
creep 发表于 2015-6-5 09:07
我想了下你说的这个长按按键会导致唤醒后再次进入休眠模式的可能性确实是存在的,但是比较可惜的是我在这 ...

似乎找到原因了,我有点怀疑是IO口切换状态的时候出的问题,于是我在IO口切换状态的时候,添加了延时。
暂时测试出来效果很好:
QQ图片20150605105342.png
外部中断0和1都可以唤醒,只是外部中断0怎么一下子中断了3次,我设置的是上升沿下降沿都中断,应该是2次才读,可能有抖动吧
我会继续测试stop模式的

creep 回答时间:2015-6-5 11:03:35
阳阳NO1 发表于 2015-6-5 10:57
似乎找到原因了,我有点怀疑是IO口切换状态的时候出的问题,于是我在IO口切换状态的时候,添加了延时。
...

如果是按我的那个测试程序改的话,无论如何都不应该连续发生2次按键中断事件,更别说3次了。这说明进入中断函数里配置IO的状态并没有关闭中断使能才导致又发生中断。
stary666 回答时间:2015-6-5 11:13:22
加个串口打印,不就知道了
阳阳NO1 回答时间:2015-6-5 11:17:49
creep 发表于 2015-6-5 11:03
如果是按我的那个测试程序改的话,无论如何都不应该连续发生2次按键中断事件,更别说3次了。这说明进入中 ...

不是的,那是外部中断0产生的中断,外部中断0我是用来检测交直流的,所以我设置的是上升下降沿都产生中断。我现在用来开关机键是外部中断1,外部中断1是很好的,每次就是一次中断。
creep 回答时间:2015-6-5 11:24:22
阳阳NO1 发表于 2015-6-5 11:17
不是的,那是外部中断0产生的中断,外部中断0我是用来检测交直流的,所以我设置的是上升下降沿都产生中断 ...

看来你把这个问题解决了啊,恭喜!!
阳阳NO1 回答时间:2015-6-5 13:04:37
creep 发表于 2015-6-5 11:24
看来你把这个问题解决了啊,恭喜!!

也多亏了你的帮忙啊!
12

所属标签

相似问题

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