请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C1294NCZAD 你好
我尝试将 MCU (Tiva TM4C1294NCZAD)设置为深度睡眠模式、然后通过外部按钮唤醒。 我从 SLEEP_MODEes 示例开始、并将"Go to SLEEP"函数写为:
void GoToSleep () { //*设置深度睡眠的时钟。 *关闭 PIOSC 和 MOSC 以节省功耗、并通过 *内部30kHz 示波器运行。 // SysCtlDeepSlepClockConfigSet (1、(SYSCTL_DSLP_OSC_INT30 | SYSCTL_DSLP_PIOSC_PD | SYSCTL_DSLP_MOSC_PD); //启用深度睡眠模式中的按钮端口和自动时钟门控*/ SysCtlPeripheralClockGating (真); SysCtlPeripheralDeepSlepEnable (SYSCTL_Periph_GPIOK); //将 LDO 设置为1.10V 深度睡眠。 // SysCtlLDODeepSlepSet (SYSCTL_LDO_1_10V); //在深度睡眠模式中将闪存和 SRAM 设置为低功耗。 // SysCtlDeepSlepPowerSet (SYSCTL_FLASH_LOW_POWER | SYSCTL_SRAM_LOW_POWER); //将 FreeRTOS 函数更改为 Suspendende 调度程序*/ vTaskSuspendAll(); SysCtlDeepSleep (); }
我在深度睡眠模式中仅启用 GPIO K 端口、因为我的按钮连接到引脚 K5。 其关联的 ISR 如下:
static int test = 0; void button_Handler (uint32_t index) { if (!test) { GoToSleep (); 测试= 1; } 否则 HAL_System_Reset(); }
当我第一次按下按钮时、MCU 正确进入深度睡眠状态。 但是、每当我按下按钮时、MCU 永远不会唤醒! 我从不会看到系统复位、两个消耗都不会增加、因此我假设它不会返回运行模式。 在此过程中、我是否遗漏了任何内容?
谢谢你