在rtdss例程基础上加入RTC:RTC时钟进行进入sleep下0.5s定时唤醒 LPUART PB1-TX进行打印调试
主要的配置点和注意点:
文件添加:
1> 在工程中添加添加n32wb03x_rtc.c
2> 导入rtc的头文件 #include "n32wb03x_rtc.h"
3> 导入中断注册函数的头文件 #include "global_func.h"
RTC唤醒时间配置:
1> RTC_CLKSourceConfig(2); //选择LSI或者LSE时钟作为RTC得计时时钟源,在rdtss中需要选择LSI,选择LSE会导致串口一直打印,无法进入sleep
2> WakeUpClockSelect(RTC_WKUPCLK_RTCCLK_DIV16); //配置RTC时钟分频系数,得到RTC得计时时钟,LSI/16 = 32000/16 = 2000
3> RTC_SetWakeUpCounter(1000);//设置RTC得计数重装载值,计数到1000,即0.5s产生RTC中断唤醒一次
RTC唤醒中断:
1> EXTI9_RTCWKUP_Configuration(ENABLE); //配置RTC专用的唤醒中断线--外部中断9
2> ModuleIrqRemoval(RTC_IRQn);
ModuleIrqRegister(RTC_IRQn,rtc_IRQHandler); //使用蓝牙协议栈下需要调用这两个函数进行中断处理函数的重新注册
3> rtc_IRQHandler(void) //RTC重新注册的中断处理函数实现
其他:
1> RTC的相关函数参照开发套件的 RtcAutoWakeUp例程复制导入即可
2> 选择LSE作为RTC的时钟源时发现串口一直打印,无法进入sleep,使用LSI可以正常进入sleep
|