请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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