12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /*********************************************************************
- *
- * 文件名: User_Wdt.c
- * 功能描述:低功耗功能管理
- * 作者: 陈俊超
- * 时间:2020-11-20
- *
- ********************************************************************/
- #include "User_Sleep.h"
- #include "nrf_pwr_mgmt.h"
- #include "nrf_drv_clock.h"
- #include "nrf_gpio.h"
- #include "app_uart.h"
- /********************** 变量区 **************************************/
- #define RAM_RETENTION_OFF (0x00000003UL) /**< The flag used to turn off RAM retention on nRF52. */
- /********************** 函数功能区 **************************************/
- /**********************************************************
- * 函数名字:SleepMode_init
- * 函数作用:看门狗初始化
- * 函数参数:无
- * 函数返回值:无
- ***********************************************************/
- void SleepMode_init(void)
- {
-
- }
- /**********************************************************
- * 函数名字:IntoSystemOffMode
- * 函数作用:进入SystemOff超低功耗模式
- * 注意: 该模式下唤醒设备将会重启
- * 函数参数:无
- * 函数返回值:无
- ***********************************************************/
- void IntoSystemOffMode(void)
- {
- app_uart_close();//关闭串口
- nrf_gpio_cfg_sense_input(WakeUp_PIN, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_LOW );
- #ifdef NRF51
- NRF_POWER->RAMON |= (POWER_RAMON_OFFRAM0_RAM0Off << POWER_RAMON_OFFRAM0_Pos) |
- (POWER_RAMON_OFFRAM1_RAM1Off << POWER_RAMON_OFFRAM1_Pos);
- #endif //NRF51
- #ifdef NRF52
- NRF_POWER->RAM[0].POWER = RAM_RETENTION_OFF;
- NRF_POWER->RAM[1].POWER = RAM_RETENTION_OFF;
- NRF_POWER->RAM[2].POWER = RAM_RETENTION_OFF;
- NRF_POWER->RAM[3].POWER = RAM_RETENTION_OFF;
- NRF_POWER->RAM[4].POWER = RAM_RETENTION_OFF;
- NRF_POWER->RAM[5].POWER = RAM_RETENTION_OFF;
- NRF_POWER->RAM[6].POWER = RAM_RETENTION_OFF;
- NRF_POWER->RAM[7].POWER = RAM_RETENTION_OFF;
- #endif //NRF52
- NRF_POWER->SYSTEMOFF = 0x1;
- (void) NRF_POWER->SYSTEMOFF;
- while (true);
- }
|