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.

[参考译文] EK-TM4C123GXL:休眠模块:RTC 中断停止会在一段时间后出现

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/572138/ek-tm4c123gxl-hibernation-module-rtc-interrupt-stopps-appearing-after-some-time

器件型号:EK-TM4C123GXL

您好!

我尝试测试休眠模块及其实时时钟(RTC)。 我在 TM4C123GXL Launchpad 上使用 TivaWare_C_Series-2.1.3.156。

休眠处理程序中有一个简单的已切换标志、该标志在 RTC 调用的每个安全条件下出现、而在主循环中、它会将 Launchpad 的红色 LED 设置为打开或关闭。 如果我启动程序并对其进行调试、它将正常运行大约10秒、但随后只有主 while (1)循环正在运行、来自休眠模块的中断停止出现、LED 指示灯保持熄灭或亮起状态。 对于我一直关注 TivaWare 库和 QS-RGB 示例的代码、但我不知道为什么会出现此问题。

#include "inc/tm4c123ghp6.h"
#include 
#include 

#include "inc/hw_types.h"
#include "void/hw_memmap.h"
#include "inc/hw_hibernate.h"

#include "driverlib/gpio.h"
#include "driverlib/hibernate.h"
#include "driverlib/interrupt.h"

#include "driverlib_pert_symtl





(void)


;
include "void_ipt_intract.h)#include "void/intract/intract.h (void eid_zh";void #include "void_int_int_sym_pert_intl"(intract.h)





while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOF))
{
}
GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_3 | GPIO_PIN_1);
}


//
//处理休眠中断。
//
void
HibernateHandler (void)
{
uint32_t ui32Status;
//
获取中断状态并清除任何挂起的中断。
//
ui32Status = HibernateIntStatus (1);
HibernateIntClear (ui32Status);
//
处理 RTC 匹配0中断。
//
if (ui32Status & HIBERNATE_INT_RTC_MATCK_0)
{
//
此处执行 RTC 匹配0中断操作。
//
}

HibernateRTCMatchSet (0、HibernateRTCGet ()+ 1);

//切换标志
LED_COUNT ^= 1;

}



//
//主函数。
//
int
main (void)
{
//
系统初始化代码...
//


// SysCtlClockSet (SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHz);


IntMasterEnable ();

LED_INIT ();

//启用休眠模块。
//
SysCtlPeripheralEnable (SYSCTL_Periph_HIBERNATE);
//
//等待休眠模块准备就绪。
//
while (!SysCtlPeripheralReady (SYSCTL_Periph_HIBERNATE)
){
}
HibernateEnableExpClk (SysCtlClockGet ());
//
等待模块上电的时间。
//

HibernateGPIORetentionEnable(); //VDD3ON

//
配置休眠模块的时钟源并启用
// RTC 功能。
//
//HibernateClockConfig (HIBERNATE_OSC_LOWDRIVE);
HibernateRTCEnable ();
//
//将 RTC 设置为初始值。
//
HibernateRTCSet (0);
//
//从现在开始将 Match 0设置为30秒。
//
HibernateRTCMatchSet (0、HibernateRTCGet ()+ 2);
//
在休眠模块上设置中断以启用 RTC 匹配
// 0中断。 清除所有挂起的中断并注册
//中断处理程序。
//
HibernateIntEnable (HIBERNATE_INT_RTC_MATH_0);
HibernateIntClear (HIBERNATE_INT_PIN_WAKE | HIBERNATE_INT_LOW_BAT |
HIBERNATE_INT_RTC_MATH_0);
HibernateIntRegister (HibernateHandler);

IntEnable (59);


while (1)
{

if (LED_RTC_R_MATH_0)












}=~1};HibernateGPIO = 1 = 1 μ 1 μ_ER_PIN_ORT1;INT_ORT1_INT_GPIO



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

    今年1月、我们在论坛上发布了与您类似的帖子 我正在寻找它、并将尝试发布链接、但如果您可以在论坛上并行搜索、这将是很好的。