123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /*********************************************************************
- *
- * 文件名: User_Wdt.c
- * 功能描述:低功耗功能管理
- * 作者: 陈俊超
- * 时间:2020-11-20
- *
- ********************************************************************/
- #include "User_low_power.h"
- #include "nrf_pwr_mgmt.h"
- #include "nrf_drv_clock.h"
- #include "nrf_gpio.h"
- #include "app_uart.h"
- #include "app_timer.h"
- #include "main.h"
- /********************** 变量区 **************************************/
- #define RAM_RETENTION_OFF (0x00000003UL) /**< 该标志用于关闭nRF52上的RAM 电源 */
- APP_TIMER_DEF(m_lowpower_timer);
- /********************** 函数功能区 **************************************/
- /**********************************************************
- * 函数名字:LowPower_timer_handler
- * 函数作用:低功耗任务管理
- * 函数参数:p_context:上下文
- * 函数返回值:无
- ***********************************************************/
- static void LowPower_timer_handler(void * p_context)
- {
-
- }
- /**********************************************************
- * 函数名字:SleepMode_init
- * 函数作用:睡眠定时器初始化
- * 函数参数:无
- * 函数返回值:无
- ***********************************************************/
- void SleepMode_init(void)
- {
- //创建低功耗任务管理的定时器
- ret_code_t err_code = app_timer_create(&m_lowpower_timer,
- APP_TIMER_MODE_REPEATED,
- LowPower_timer_handler);
- APP_ERROR_CHECK(err_code);
- err_code = app_timer_start(m_lowpower_timer, APP_TIMER_TICKS(Lowpower_INTERVAL_MS), NULL);
- APP_ERROR_CHECK(err_code);
- }
- /**********************************************************
- * 函数名字:IntoSystemOffMode
- * 函数作用:进入SystemOff超低功耗模式
- * 注意: 该模式下唤醒设备将会重启
- * 函数参数:无
- * 函数返回值:无
- ***********************************************************/
- void IntoSystemOffMode(void)
- {
- // uint32_t err_code;
- // User_HardwareTime_Set(DisEnable);
- // err_code = nrfx_saadc_channel_uninit(3);
- // nrfx_saadc_uninit();
- //
- // MPU6050_sheep();
- //
- // err_code = app_timer_stop_all();
- // APP_ERROR_CHECK(err_code);
- // #if DEBUG_EN
- // err_code = app_uart_close();//关闭串口
- // APP_ERROR_CHECK(err_code);
- // #endif
- //
- // if(NRF_SUCCESS == nrf_esb_disable())
- // {
- // nrf_drv_clock_hfclk_release();
- // //NRF_CLOCK->TASKS_HFCLKSTOP = 1;
- // }
- //
- // nrf_gpio_pin_write(LED_RUN,1);
- // nrf_gpio_pin_write(MT_EN,0);
- nrf_gpio_cfg_sense_input(MPU6050_INIT_PIN, NRF_GPIO_PIN_NOPULL, NRF_GPIO_PIN_SENSE_HIGH );//IO
- #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);
- }
|