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