请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC2340R5 工具/软件:
你好。 当我不处于待机状态时、我可以使用 RTC 定期延迟。 但是、一旦进入待机模式、我就不再获得 RTC 比较回调。
是否还需要执行其他操作才能从待机状态唤醒? 我认为我不需要向电源管理器添加约束;在我看来、RTC 比较事件始终处于启用状态、但可能不是这样。
void rtc_callback(uintptr_t arg) { rtc_timeout_ticks += delay_ticks; HWREG(RTC_BASE + RTC_O_CH0CC8U) = rtc_timeout_ticks; GPIO_toggle((uint8_t)DIO_GREEN_LED); } int main() ..... // Initialize our timer status for our compare timer memset((void *)&rtc_delay_node.hw_interrupt, 0, sizeof(HwiP_Struct)); // Install the interrupt handler for the RTC. HwiP_Params rtc_params; HwiP_Params_init(&rtc_params); //rtc_params.arg = 0; //rtc_params.priority = INT_PRI_LEVEL2; HwiP_construct(&rtc_delay_node.hw_interrupt, INT_CPUIRQ0, rtc_private_isr_callback, &rtc_params); HWREG(EVTSVT_BASE + EVTSVT_O_CPUIRQ0SEL) = EVTSVT_CPUIRQ0SEL_PUBID_AON_RTC_COMB; // Update the run-time status for this timer delay_ticks = 2E6/8UL; // Adjust timeout value to be relative to the current time. rtc_timeout_ticks = HWREG(RTC_BASE + RTC_O_TIME8U) + delay_ticks; HWREG(RTC_BASE + RTC_O_CH0CC8U) = rtc_timeout_ticks; HwiP_enableInterrupt(INT_CPUIRQ0); // Enter the idle state Power_idleFunc();