EFM32片内外设--GPIO EM4唤醒
来源:互联网 发布:windows平板应用 编辑:程序博客网 时间:2024/05/17 06:59
EFM32的EM3虽然功耗很低,0.6uA,但是在一些场合仍然显得浪费,特别是那种一次性消费的电池供电产品,客户的想法仍然是越低越好,最好是不耗电。所以,很多时候,就只能让MCU进入EM4状态。
当EFM32进入EM4状态之后,片内的几乎所有模块都掉电了,只有特殊的的几个GPIO口以及外部Reset引脚才能唤醒。那几个特殊的GPIO口就是具有EM4唤醒的引脚,例如PF2,PE13等等。另外,软件也可以配置GPIO口唤醒的极性,例如下降沿唤醒,以及上升沿唤醒等。这些由GPIO_EM4WUPOL寄存器中的EM4WUPOL来控制。如果配置了多个GPIO口作为EM4唤醒源的话,也可以通过GPIO_EM4WUCAUSE寄存器来查询,MCU是被哪个GPIO口唤醒的。
如下,我们就以GPIO口的EM4唤醒做个最简单的例程:
测试硬件: TG STK
软件:
#include "efm32.h"
#include "em_chip.h"
#include "em_cmu.h"
#include "em_gpio.h"
#include "em_emu.h"
int main(void)
{
/* Chip errata */
CHIP_Init();
CMU_ClockEnable(cmuClock_HFPER, true);
CMU_ClockEnable(cmuClock_GPIO, true);
GPIO_PinModeSet(gpioPortD,7,gpioModePushPull,1);
unsigned long ulDelay = 600000;
while(ulDelay--);
GPIO_PinModeSet(gpioPortD,7,gpioModePushPull,0);
GPIO_PinModeSet(gpioPortE,13,gpioModeInputPullFilter ,1); //上拉输入
GPIO_EM4EnablePinWakeup(GPIO_EM4WUEN_EM4WUEN_E13, 0); //低电平触发
while(1)
{
EMU_EnterEM4();
}
}
PS: 在测试的过程中发现,如果单纯的将PE13设置为gpioModeInput模式的话,在不加外部器件的情况下,比较容易受到外部的干扰。但是如果配置为上拉带滤波输入的话,抗干扰的性能则会大幅度加强。
- EFM32片内外设--GPIO EM4唤醒
- EFM32片内外设--GPIO之SWD接口复用
- EFM32片内外设 -- Systick
- EFM32片内外设 -- DWT
- EFM32片内外设---USART2
- EFM32片内外设--AES基本介绍
- EFM32片内外设--AES ECB例程
- EFM32片内外设--DAC之tips
- EFM32片内外设--LETimer Free Mode
- EFM32片内外设--ADC 基本例程
- EFM32片内外设--LEUart抖动误差
- EFM32片内外设--RTC+EM3
- EFM32片内外设--LCD Bitband操作
- EFM32片内外设--TFT 汉字字库
- EFM32片内外设--MSC Device information
- EFM32片内外设--RMU基本操作
- EFM32片内外设--WDT基本操作
- EFM32片内外设--LCD之动画
- 【hibernate实例】单项多对一增加查找
- 【hibernate】hibernate 4 (hibernate对象的三种状态)
- xss之用户提交脚本攻击
- extjs tree(树)换节点图标及去掉图标后去掉空白部分
- BlockingQueue详解
- EFM32片内外设--GPIO EM4唤醒
- JSTL-c标签
- JAVA中的开源标记库下载网址
- C#实现的自定义IIS认证模块
- ollydbg使用初步(1)
- Android:如何启动外部应用程序?
- 如何设置Office Word2003的一级与二级标题
- iOS关闭键盘的两种简单方法
- mysql update safe model 一些问题