OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8677|回复: 11

外部中断唤醒停机模式进入到启动文件reset handler 之后死机

[复制链接]

11

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2013-9-28
在线时间
18 小时
发表于 2014-4-22 19:21:52 | 显示全部楼层 |阅读模式
如题:烦请大师过目一下,这个问题折腾小弟好几天了,一直找不到问题的根源,如大师指点,感激不尽。
代码如下:
void WFI_SET(void);

void EXTI0_IRQHandler(void)
{
SCB->SCR&=~(1<<2);
Stm32_Clock_Init(9);//系统时钟设置
 delay_init(72);  //延时初始化
 uart_init(72,9600); //串口1初始化
 LED_Init();
 delay_ms(100);    //消抖 
  EXTI->R|=1<<0;  //清除LINE0上的中断标志位
  }

int main(void)
{
 Stm32_Clock_Init(9);//系统时钟设置
 delay_init(72);  //延时初始化
 uart_init(72,9600); //串口1初始化
 LED_Init();
 wkup_init();
 DBGMCU->CR&=~(1<<1);

    EXTI->R=0xFFFF;//所有外部请求位被清除,使得CPU能进入停机模式
    while(!(RTC->CRL>>5));
    RTC->CRL&=~(1<<1);//清除闹钟请求中断标志,使得CPU能进入停机模式
    RCC->APB1ENR|=1<<28;//PWR接口时钟使能 
    WR->CR&=~(1<<1);//CPU进入深度睡眠时,进入停机模式
    WR->CR|=1<<0;//停机模式下电压调压器处于低功耗模式
    SCB->SCR|=1<<2;//设置系统控制寄存器的SLEEPDEEP位为深度睡眠模式。
    WFI_SET(); //进入停机
     SCB->SCR&=~(1<<2);
while(1)
 {
 LED1=!LED1;  
 delay_ms(1000);
 }              
}

void wkup_init(void)//待机初始化函数
{

   RCC->APB2ENR|=1<<2;     //使能PORTA时钟
   GPIOA->CRL&=0xFFFFFFF0;
   GPIOA->CRL|=1<<3;//定义PA0为输入,PA0默认复用可以充当WKUP。
   GPIOA->ODR&=~(1<<0);//定义PA0为下拉输入,高电平可以唤醒,所以此处设计为下拉输入。
   Ex_NVIC_Config(GPIO_A,0,RTIR); //定义PA0为上升沿触发事件
   MY_NVIC_Init(2,1,EXTI0_IRQChannel,2);    //定义PA0中断:抢占2,子优先级2,组2
}


监控发现:外部PA0.0触发中断后,执行ISR,单步执行完后,进入到启动文件的:
; Reset Handler
Reset_Handler   PROC
                EXPORT  Reset_Handler             [WEAK]
                IMPORT  __main
                LDR     R0, =__main
                BX      R0
                ENDP
中,再单步,出现死机现象。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-4-22 20:45:04 | 显示全部楼层
回复 支持 反对

使用道具 举报

11

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2013-9-28
在线时间
18 小时
 楼主| 发表于 2014-4-22 23:06:47 | 显示全部楼层
原程序代码

停机唤醒.rar

466.9 KB, 下载次数: 1415

回复 支持 反对

使用道具 举报

26

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2013-8-1
在线时间
57 小时
发表于 2014-4-23 10:24:50 | 显示全部楼层
在你的工程里面添加一个内核启动项试试
回复 支持 反对

使用道具 举报

11

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2013-9-28
在线时间
18 小时
 楼主| 发表于 2014-4-23 14:38:47 | 显示全部楼层


增加了这个内核启动项,也根本不管用。
回复 支持 反对

使用道具 举报

11

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2013-9-28
在线时间
18 小时
 楼主| 发表于 2014-4-23 14:39:04 | 显示全部楼层
回复【4楼】zyjs1987:
在你的工程里面添加一个内核启动项试试
---------------------------------
不管用。
回复 支持 反对

使用道具 举报

26

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2013-8-1
在线时间
57 小时
发表于 2014-4-24 09:42:30 | 显示全部楼层
回复【6楼】刘宇shop:
---------------------------------
然后不要用这个WFI_SET(); //进入停机;而是用__WFI();
回复 支持 反对

使用道具 举报

11

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2013-9-28
在线时间
18 小时
 楼主| 发表于 2014-4-24 18:04:40 | 显示全部楼层
回复【7楼】zyjs1987:
---------------------------------
回复【7楼】zyjs1987:
回复【6楼】刘宇shop:
---------------------------------
然后不要用这个WFI_SET(); //进入停机;而是用__WFI();
---------------------------------
牛!大神。可以了,可以加一下大神QQ么,有问题要问。
回复 支持 反对

使用道具 举报

26

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2013-8-1
在线时间
57 小时
发表于 2014-4-25 15:37:51 | 显示全部楼层
回复【8楼】刘宇shop:
---------------------------------
因为当时我也弄了快一个星期呢!qq号发给你了,以后可以常交流
回复 支持 反对

使用道具 举报

7

主题

32

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-4-16
在线时间
13 小时
发表于 2016-3-28 09:22:44 | 显示全部楼层
刘宇shop 发表于 2014-4-24 18:04
回复【7楼】zyjs1987:
---------------------------------
回复【7楼】zyjs1987:
回复【6楼】刘宇shop:
--- ...

楼主能贡献一下调试后的工程文件么?  停机模式调试时候出了点问题
回复 支持 反对

使用道具 举报

7

主题

32

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-4-16
在线时间
13 小时
发表于 2016-3-28 09:23:59 | 显示全部楼层
zyjs1987 发表于 2014-4-25 15:37
回复【8楼】刘宇shop:
---------------------------------
因为当时我也弄了快一个星期呢!qq号发给你了, ...

吧友您好,你说的是楼主这个问题要先添加内核启动文件,然后把main函数的WFI_SET()改成_WFI() 是么
回复 支持 反对

使用道具 举报

7

主题

32

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-4-16
在线时间
13 小时
发表于 2016-3-28 09:49:21 | 显示全部楼层
zyjs1987 发表于 2014-4-25 15:37
回复【8楼】刘宇shop:
---------------------------------
因为当时我也弄了快一个星期呢!qq号发给你了, ...

吧友你能分享一下你调好的那个 停机唤醒模式的程序么  我现在遇到一些问题 感觉唤醒不了的
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 16:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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