【WCH蓝牙系列芯片】-基于CH582开发板—万年历RTC时钟
-------------------------------------------------------------------------------------------------------------------------------------
在使用CH582这款芯片,可以用其内部的RTC跑万年历时钟。
实时时钟(RTC)是一个独立的定时器模块,其可编程计数器最大可达到32位,配合软件可以实现实时时钟功能,并且可以修改计数器的值来重新配置系统的当前时间和日期。RTC模块在后备供电区域,系统复位和待机模式唤醒对其不造成影响。
要想实现万年历时间误差不太,RTC的低频晶振得选着外部的32.768K低频晶振,虽然CH582中有内部的32.768K低频晶振,也有外部的32.768K低频晶振,这两个区别在于精度不同,外部的晶振在20ppm以内,内部的晶振在400ppm-5000ppm.
在程序中,进行RTC初始化配置:
在初始化RTC时间时,在跑蓝牙程序中,除初始化外,在程序运行中不可再调用此函数,否则会影响tmos和蓝牙的运行,可以将设置的时间值与当前时间作差,获取时间时加上这个差值。
在进入RTC中断时,有两种方式,
1、定时模式,有八种周期可选
2、触发模式,可以自行配置参数,
如:TC_TRIGFunCfg(32768*1); //触发方式 32768为1s
在RTC中断服务函数中,将万年历时间都打印出来。
通过串口打印可以看到按照一秒的时间将RTC时间打印出来
在使用RTC时,如果使用了内部的32.768K低频时钟,需要做校准处理,不然误差很大,
要是跑蓝牙程序就会出现断连的现象,使用 Lib_Calibration_LSI();两分钟内部校准一下。