test_pm.c 796 B

123456789101112131415161718192021222324252627282930313233343536
  1. #include "user.h"
  2. static int32_t test_done(void *pData, void *pParam)
  3. {
  4. DBG("RTC唤醒, 测试结束");
  5. PM_SetDriverRunFlag(PM_DRV_DBG, 1);
  6. }
  7. void prvPM_Test(void *p)
  8. {
  9. int i;
  10. DBG("测试在1秒后开始,休眠60秒后RTC唤醒恢复");
  11. for(i = GPIOA_02; i < GPIO_NONE; i++)
  12. {
  13. GPIO_PullConfig(i, 0, 0);
  14. GPIO_Config(i, 0, 0);
  15. }
  16. Task_DelayMS(1000);
  17. PM_SetDriverRunFlag(PM_DRV_DBG, 0); //DBG是开机就打开的,如果没有其他外设使用,关闭这个就可以进入低功耗
  18. RTC_SetAlarm(60, test_done, 1); //开个RTC唤醒一下,或者键盘,或者GPIO
  19. while(1)
  20. {
  21. Task_DelayMS(1000);
  22. DBG("UTC %llu", RTC_GetUTC());
  23. }
  24. }
  25. void PM_TestInit(void)
  26. {
  27. Task_Create(prvPM_Test, NULL, 1024, SERVICE_TASK_PRO, "pm task");
  28. }
  29. //INIT_TASK_EXPORT(PM_TestInit, "3");