新驱动力MM32F103测试(六)待机模式
<div class='showpostmsg'> 本次实验是利用MM32F103开发板上的“WKUP”按键及“LED”的“待机唤醒”测试。一、实验资源
1、MM32F103开发板;
2、KEIL 5.25.2;
3、J-LINK V9;
4、新驱动力提供的开发例程;
5、万用表;
二、实验过程
1、知识准备及硬件连接。
从用户手册中可以了解到采用ARM Cortex M3核心的MM32F103C8T6芯片在电源管理方面同样有三种低功耗模式,即:
1、睡眠模式(CPU停止,所有外设包括 CPU 的外设,如 NVIC、系统时钟(SysTick)等仍在运行);
2、停机模式(所有的时钟都已停止);
3、待机模式(1.5V 电源关闭);
从上表可以看出,在这三种低功耗模式中当属“待机模式”具有最低的功耗表现,实验“待机模式”唤醒的条件利用了“WKUP引脚的上升 沿”。根据原理图,将“WKUP”按键与"VDD"相连,当PA0(WKUP)上出现一个上升沿时系统即会从“待机模式”唤醒。
2、程序的实现。
程序在官方例程上进行了修改,当系统上电后D2点亮3秒后熄灭,系统进入“待机模式”,随后系统便开始监听"WUKA"按键的状态,当“WKUP”按键按下,PA0(WKUP)上出现一个上升沿时系统从“待机模式”唤醒,D2点亮工作5秒后再次进入“待机模式”,等待下一次“唤醒”。以下是主程序代码:
int main(void)
{
u8 i;
delay_init();
/* 设置中断优先级分组2*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
LED_Init();
WKUP_Init(); //外部中断唤醒待机初始化
for(i=0; i<3; i++)//上电后D2亮3秒,然后熄灭;
{
LED = 0;
delay_ms(1000);
}
LED = 1;
Sys_Standby(); //进入待机模式
while(1)
{
if(Check_WKUP()==1)//等待WKUP键按下唤醒
{
for(i=0; i<5; i++)
{
LED = 0;
delay_ms(1000);
}
}
else
Sys_Standby();//工作5秒后进入待机状态等待下一次唤醒
}
}
3、实验结果。拔下P13跳线帽将万用表串入,这里使用了“20mA”档位。一张待机;一张唤醒;
4、过程中出现的问题,如下图:
在网上查了一下,应该是“待机模式”下芯片睡着了。按照想到的方法:先按着“RESET”再“Download”,差不多的时候松开“RESET”就正常干活儿了。松开“RESET”的火侯要拿捏一下,不过也不难试几次就行了。
三、实验总结
第一次体验“待机模式”,只是在例程基础上进行简单的测试,有很多内在的东西还是不清晰,下来要仔细研究代码并结合手册学习。
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>
页:
[1]