RTC
周期性唤醒实验中。我的板子是阿波罗F767的板子。我写的代码如下:voidRTC_WakeUp_Set(u16 cnt,u32 WakeUpClock){ __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(&RTC_Handler,RTC_FLAG_WUTF); HAL_RTCEx_SetWakeUpTimer_IT(&RTC_Handler,cnt,WakeUpClock);
HAL_NVIC_EnableIRQ(RTC_WKUP_IRQn); //
使RTC_WKUP_IRQn
断通道 HAL_NVIC_SetPriority(RTC_WKUP_IRQn,2,3); //
抢占优先级2
,子优先级3 }voidRTC_WKUP_IRQHandler(void){ HAL_RTCEx_WakeUpTimerIRQHandler(&RTC_Handler);}voidHAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc){ printf("WakeUp! "); printf("%d-%d-%d
",RTC_GetTimeInit.Hours,RTC_GetTimeInit.Minutes,RTC_GetTimeInit.Seconds); //
打印出唤醒时的RTC时间,便于调试。 LED1_Toggle;}
使用USMART
组件调试时,结果如下图:
问题:1、这里的返回值是0x03代表什么意思呢,我翻了翻开发手册里USMART组件,并没找到相关解释。。2、
无论设置参数CNT
值是多少(这里以0,1,2,4
为例)。显示的时间都是3
秒唤醒一次。这是为什么呢
解锁就是给RTC的WPR依次写入0xCA和0x53嘛?我用的HAL库操作,对应的HAL库函数里面有__HAL_RTC_WRITEPROTECTION_DISABLE这么个宏定义来做这个工作
一周热门 更多>