7308|6

77

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM32的sleepmode怎么用? [复制链接]

                                 直接执行wfi指令就行了吗?在我的板子上为什么一执行wfi就进入硬件异常呢?
此帖出自stm32/stm8论坛

最新回复

                                 多谢各位的热心帮助。  详情 回复 发表于 2011-1-18 22:04
点赞 关注
 

回复
举报

62

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 这个比较复杂,必须好好看看cm3和stm32的相关手册了
此帖出自stm32/stm8论坛
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 STM32库中有例程,可以参考。
此帖出自stm32/stm8论坛
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 看一下参考手册,和lib里的例程!
此帖出自stm32/stm8论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

5
 
直接执行wfi指令就行了吗?在我的板子上为什么一执行wfi就进入硬件异常呢?
印象里,直接执行wfi指令就行了。

“在我的板子上为什么一执行wfi就进入硬件异常”,如果怀疑硬件问题,可以试着在main()的最开始、延时一段时间就直接执行wfi,看看情况如何
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

6
 
STM32库中没有例程。

下面是我写的进入Sleep模式的代码,你把它添加到软件库中stm32f10x_pwr.c中
/*******************************************************************************
* Function Name  : PWR_EnterSLEEPMode
* Description    : Enters SLEEP mode.
* Input          : - SysCtrl_Set: Select the Sleep mode entry mechanism,.
*                    This parameter can be one of the following values:
*                       - 0: MCU enters Sleep mode as soon as WFI or WFE instruction is executed.
*                       - 1: MCU enters Sleep mode as soon as it exits the lowest priority ISR.
*
*                  - PWR_STOPEntry: specifies if SLEEP mode in entered with WFI or WFE instruction.
*                     This parameter can be one of the following values:
*                       - PWR_SLEEPEntry_WFI: enter STOP mode with WFI instruction
*                       - PWR_SLEEPEntry_WFE: enter STOP mode with WFE instruction
* Output         : None
* Return         : None
*******************************************************************************/
void PWR_EnterSLEEPMode(u32 SysCtrl_Set, u8 PWR_SLEEPEntry)
{
        if (SysCtrl_Set)
                *(vu32 *) SCB_SysCtrl |= SysCtrl_SLEEPONEXIT_Set;        // Set SLEEPONEXIT
        else
                *(vu32 *) SCB_SysCtrl &= ~SysCtrl_SLEEPONEXIT_Set;// Reset SLEEPONEXIT

        *(vu32 *) SCB_SysCtrl &= ~SysCtrl_SLEEPDEEP_Set;        // Clear SLEEPDEEP bit
        if(PWR_SLEEPEntry == PWR_SLEEPEntry_WFI)                        // Select SLEEP mode entry
                __WFI();                                                                                // Request Wait For Interrupt
        else
                __WFE();                                                                                // Request Wait For Event
}

同时将下面的代码添加到stm32f10x_pwr.h中:
/* SLEEP mode entry */
#define PWR_SLEEPEntry_WFI         ((u8)0x01)
#define PWR_SLEEPEntry_WFE         ((u8)0x02)
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 多谢各位的热心帮助。
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表