EFM32片内外设--GPIO EM4唤醒

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模式的话,在不加外部器件的情况下,比较容易受到外部的干扰。但是如果配置为上拉带滤波输入的话,抗干扰的性能则会大幅度加强。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值