OpenEdv-开源电子网

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

stm32f103停机模式的问题

[复制链接]

84

主题

347

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2008
金钱
2008
注册时间
2014-7-1
在线时间
189 小时
发表于 2015-10-1 10:47:58 | 显示全部楼层 |阅读模式
停机模式功能已经完成了,可以进入停机模式,也可以通过外部中断打开。

//系统进入停机模式 
void Sys_Enter_Stop(void) 
{         
  //关闭所有外设(根据实际情况写) 
Sys_Out_stop();//将PA4设置为下降沿触发,PB6上升沿触发,用于开启停机模式
Sys_Stop();//系统进入停机模式


//退出停机模式设置
void Sys_Out_stop(void)
{
Ex_NVIC_Config(GPIO_A,4,FTIR);    //PA4下降沿触发
Ex_NVIC_Config(GPIO_B,6,RTIR);    //PB6上升沿触发
MY_NVIC_Init(2,2,EXTI4_IRQn,2);  //抢占2,子优先级2,组2 
MY_NVIC_Init(2,3,EXTI9_5_IRQn,2);  //抢占2,子优先级3,组2
}

//系统进入停机模式
void Sys_Stop(void)
{
SCB->SCR|=1<<2;//使能SLEEPDEEP位 (SYS->CTRL)   
  RCC->APB1ENR|=1<<28;     //使能电源时钟  
PWR->CR &=~(1<<1);       //当CPU进入深睡眠时进入停机模式,调压器的状态由LPDS 位控制。
PWR->CR|=1<<0;           //在停机模式下电压调压器处于低功耗模式  
WFI_SET(); //执行WFI指令
}

//外部中断4服务程序 
void EXTI4_IRQHandler(void) 
{       
 close_stop_irq();//屏蔽中断
 led_red=~led_red;//红灯改变
 EXTI->R=1<<4;  //清除LINE1上的中断标志位
 on_off_flag=1;//开机
}

//外部中断9~5服务程序 
void EXTI9_5_IRQHandler(void) 
{       
    on_off_flag=1;//开机
 EXTI->IMR &=~(1<<6);//屏蔽线6上的中断
 EXTI->R=1<<6;  //清除LINE6上的中断标志位   
}  

做一个相信自己的人
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-10-1 23:01:05 | 显示全部楼层
进来一看以为是分享帖,还奇怪怎么挂了个求助的标题,原来问题藏在了程序里

建议楼主整理一下问题吧
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-10-4 10:50:17 | 显示全部楼层
在EXTI4_IRQHandler的最后,加入一个printf,将on_off_flag的值打印出来。
看看就知道了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

84

主题

347

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2008
金钱
2008
注册时间
2014-7-1
在线时间
189 小时
 楼主| 发表于 2015-10-9 08:55:19 | 显示全部楼层
回复【2楼】龙之谷:
---------------------------------
问题解决了。我格式排好了发送的,但是显示的时候空格和tab都没有了,格式乱了
做一个相信自己的人
回复 支持 反对

使用道具 举报

84

主题

347

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2008
金钱
2008
注册时间
2014-7-1
在线时间
189 小时
 楼主| 发表于 2015-10-9 08:57:11 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
嗯,谢谢。我把延时去掉好了。。。。
做一个相信自己的人
回复 支持 反对

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-10-9 16:52:31 | 显示全部楼层
这次是真正的分享帖了,谢谢分享~
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复 支持 反对

使用道具 举报

84

主题

347

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2008
金钱
2008
注册时间
2014-7-1
在线时间
189 小时
 楼主| 发表于 2015-10-9 17:21:55 | 显示全部楼层
回复【6楼】龙之谷:
---------------------------------
客气了。。。。
做一个相信自己的人
回复 支持 反对

使用道具 举报

84

主题

347

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2008
金钱
2008
注册时间
2014-7-1
在线时间
189 小时
 楼主| 发表于 2015-10-15 22:31:49 | 显示全部楼层
不好意思各位,上面的代码有问题,停机模式里的变量赋值并未成功,因为巧合我错认为逻辑对了。
下面的程序,实际上on_off_flag=1;  这一句没有作用,但是对端口操作有效,led_red=~led_red;这一句有作用

?//外部中断4服务程序 
void EXTI4_IRQHandler(void) 
{       
 close_stop_irq();//屏蔽中断
 led_red=~led_red;//红灯改变
 EXTI->R=1<<4;  //清除LINE1上的中断标志位
 on_off_flag=1;//开机
}
做一个相信自己的人
回复 支持 反对

使用道具 举报

7

主题

32

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-4-16
在线时间
13 小时
发表于 2016-4-10 14:54:52 | 显示全部楼层
shenqihao 发表于 2015-10-15 22:31
不好意思各位,上面的代码有问题,停机模式里的变量赋值并未成功,因为巧合我错认为逻辑对了。
下面的程序 ...

楼主您好,我之前想做这个停机模式 做了很久也没有成功。都是进入之后没办法唤醒。 我之前也有帖子描述过这个问题,您能把你这个做好的例程发我一份么?  827270279@qq.com   万分感谢!!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 00:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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