打印
[N32WBxxx]

从机例程实现 1000ms广播一次0.5sRTC唤醒一次

[复制链接]
394|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
无非0到1|  楼主 | 2022-8-22 17:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
        在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

使用特权

评论回复
沙发
foxsbig| | 2022-8-22 21:06 | 只看该作者
就时间减半就行了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

24

帖子

0

粉丝