硬汉嵌入式论坛

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

[有问必答] STM32F407停机模式唤醒异常

[复制链接]

4

主题

13

回帖

25

积分

新手上路

积分
25
发表于 2020-1-3 16:37:19 | 显示全部楼层 |阅读模式
问题描述:1、STM32F407上电后自动进入STOP模式(正常实现)
2、通过IO口(外部中断)唤醒;现在能进入中断,但无法继续执行。
请大家帮忙看看是什么问题。

main()
{
     初始化;
     进入STOP模式;
     点亮LED0
     WFI();////////////////用仿真器看一直在这句语句后。
      清LED0;
     while(1)
     {
          LED0闪烁
     }
}

void exit_int(void)
{
   清标志;
   亮LED1;
}
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2020-1-3 21:22:08 | 显示全部楼层
这个帖子有之前做的停机案例,可以试试

【安富莱】FreeRTOS操作系统教程发布,支持F103,F407和F429,配套145个例子,1200页教程
https://forum.anfulai.cn/forum.p ... 7658&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

4

主题

13

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2020-1-6 18:55:51 | 显示全部楼层
问题找到了,是SCB里设置SLEEPDEEP位错误。
1.我是使用寄存器直接设置方式,CM4内核头文件里的SLEEPDEEP位定义位2,我也没有注意,后来发现F103的SLEEPDEEP是4,将其改过来就可以唤醒了。但不知道为什么会这样,是头文件错误?使用寄存器操作的小伙伴以后注意了。
回复

使用道具 举报

4

主题

13

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2020-1-6 18:58:22 | 显示全部楼层
问题找到了,我是用寄存器操作方式,cm4.h里的SLEEPDEEP定义为2,实际应该是4(我看CM3是4),改为4就可以实现唤醒了。
回复

使用道具 举报

4

主题

13

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2020-1-6 19:01:11 | 显示全部楼层
问题解决了。
我用寄存器操作方式,非库;CM4.H里的SLEEPDEEP=2,CM3.H的SLEEPDEEP=4,后来将SLEEPDEEP改为4就可以唤醒了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-17 12:36 , Processed in 0.039150 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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