nRF51822低功耗CPU睡眠软件应用

下面是本人调试通过的nRF51822低功耗睡眠的软件应用,当执行NRF_POWER->SYSTEMOFF = 1;CPU将停止运行,保留外设参数,本人实测睡眠模式下电路电流消耗10微安,当被GPIO的DETECT信号唤醒后,复位,软件从main函数开始执行。whilie(1)下CPU消耗18毫安电流。不废话了,上实例代码

[cpp]  view plain  copy
  1. /*****************************************************/  
  2. #include <stdbool.h>  
  3. #include <stdint.h>  
  4. #include "nrf.h"  
  5. #include "nrf_gpio.h"  
  6. #include "boards.h"  
  7.   
  8.   
  9. #define KeyPressFlag 0  
  10.   
  11.   
  12. int main(void)  
  13. {  
  14.       
  15.     nrf_gpio_cfg_input(key_0, NRF_GPIO_PIN_NOPULL);// 配置按键BUTTON_0为输入  
  16.       
  17.     // 配置BUTTON_1管脚为DETECT信号输出,该句很重要,是CPU被GPIO唤醒的必要条件  
  18.     nrf_gpio_cfg_sense_input(key_1, NRF_GPIO_PIN_NOPULL, NRF_GPIO_PIN_SENSE_LOW);   
  19.    
  20.     nrf_gpio_range_cfg_output(LED_START, LED_STOP);//配置LED指示灯管脚为输出  
  21.   
  22.   
  23.     nrf_gpio_pin_set(LED_0); //点亮LED灯  
  24.   
  25.   
  26.     // 睡眠保留RAM的参数  
  27.     NRF_POWER->RAMON = POWER_RAMON_ONRAM0_RAM0On   << POWER_RAMON_ONRAM0_Pos  
  28.                      | POWER_RAMON_ONRAM1_RAM1On   << POWER_RAMON_ONRAM1_Pos  
  29.                      | POWER_RAMON_OFFRAM0_RAM0Off << POWER_RAMON_OFFRAM0_Pos  
  30.                      | POWER_RAMON_OFFRAM1_RAM1Off << POWER_RAMON_OFFRAM1_Pos;  
  31.       
  32.     while(1)  
  33.     {       
  34.         // 如果BUTTON0 被按下,则熄灭LED灯让CPU进入睡眠  
  35.         if(nrf_gpio_pin_read(key_0) == KeyPressFlag)  
  36.         {  
  37.             nrf_gpio_pin_clear(LED_0);  
  38.   
  39.   
  40.             //CPU进入睡眠模式,若有GPIO的DETECT信号唤,则CPU被唤醒而后复位从main函数开始执行。  
  41.             NRF_POWER->SYSTEMOFF = 1;  
  42.         }  
  43.     }  
  44. }  

转自:http://www.openedv.com/posts/list/44983.htm,在此感谢!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值