This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C1294NCZAD:从深度睡眠中唤醒

Guru**** 2502205 points
Other Parts Discussed in Thread: TM4C1294NCZAD

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/749626/tm4c1294nczad-wake-up-from-deep-sleep

器件型号: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 永远不会唤醒! 我从不会看到系统复位、两个消耗都不会增加、因此我假设它不会返回运行模式。 在此过程中、我是否遗漏了任何内容?

谢谢你

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我错过了太多初始化。 您是否能够将项目导出到.zip 文件并附加它? 如果您不希望在论坛上发布、请以朋友的身份向我申请、然后您可以通过电子邮件向我发送.zip 文件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉我的错误。 问题似乎是我无法从中断上下文调用 SysCtlDeepsleep()函数!
    在经过10秒的延迟后、我将其移到了主任务中、现在它可以工作了。 我是对的吗?
    无论如何、谢谢您、如果我有其他问题、我会告诉您。