当前位置:网站首页>CMT2380F32模块开发11-RTC例程
CMT2380F32模块开发11-RTC例程
2022-08-11 05:24:00 【andylauren】
实时时钟/日历提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数可自动调整。时钟操作可通过 AM/PM 寄存器位,决定采用 24 或 12 小时格式。
实时时钟的时钟源可配置为外部低速晶振,外部高速晶振,内部低速 RC;默认使用外部低速晶振。
具有闹钟功能,具有高精度 1Hz 方波信号输出,具有周期中断,具有闹钟中断。
所有软件写入和读取的日期时间值都为 BCD 码,无须十六进制转换为十进制。任何无效的日期时间将无法写入,比如 32 日,25 时,70 秒,B 月等。
RTC 在上电之后复位一次,在系统不掉电的情况下,外部各种复位请求都不能复位 RTC,RTC 会一直处于计数状态。在上电之后,设定日历初始值、闹钟设置、误差补偿、中断等之后,启动 RTC。
注意,开发板没有外部晶振,所以这里的例程都会使用内部低速晶振,这样可以保证低功耗仍然运行。
rtc_int例程
本样例主要低功耗时钟模块周期中断实例。
Clk_SetRCLFreq(ClkFreq32768);
Clk_Enable(ClkRCL, TRUE); //开启内部晶振32
Clk_SetPeripheralGate(ClkPeripheralRtc, TRUE); //使能rtc时钟
stcRtcConfig.enClkSel = RtcClk32; // RtcClkHxt1024;//RtcClk32;//
stcRtcConfig.enAmpmSel = Rtc24h; // Rtc12h;//
stcCycSel.enCyc_sel = RtcPrads;
stcCycSel.enPrds_sel = Rtc_1S;
stcRtcConfig.pstcCycSel = &stcCycSel;
#if 1
Rtc_DisableFunc(RtcCount);
stcAlarm.u8Minute = 0x59;
stcAlarm.u8Hour = 0x12;
stcAlarm.u8Week = 0x08;
Rtc_DisableFunc(RtcAlarmEn);
Rtc_EnAlarmIrq(Rtc_AlarmInt_Enable);
Rtc_SetAlarmTime(&stcAlarm);
Rtc_EnableFunc(RtcAlarmEn);
#endif
stcTime.u8Year = 0x17;
stcTime.u8Month = 0x06;
stcTime.u8Day = 0x07;
stcTime.u8Hour = 0x12;
stcTime.u8Minute = 0x58;
stcTime.u8Second = 0x55;
stcTime.u8DayOfWeek = Rtc_CalWeek(&stcTime.u8Day);
stcRtcConfig.pstcTimeDate = &stcTime;
stcIrqCb.pfnAlarmIrqCb = RtcAlarmCb;
stcIrqCb.pfnTimerIrqCb = RtcCycCb;
stcRtcConfig.pstcIrqCb = &stcIrqCb;
stcRtcConfig.bTouchNvic = TRUE;
Rtc_DisableFunc(RtcCount);
Rtc_Init(&stcRtcConfig);
Rtc_EnableFunc(RtcCount);
while (1 == Gpio_GetIO(0, 2))
; //注意:此处用户不能屏蔽,否则进入深度休眠模式导致SWD连接不上。
Gpio_SetIO(2, 3, 0);
Lpm_Config(&stcLpmCfg);
Lpm_GotoLpmMode();
Gpio_SetIO(2, 3, 1);
配置1s周期中断,按下按键1,进入低功耗,启动计数,观察LED1是否1s高低电平变化。
rtc_cnt例程
本样例主要涉及RTC模块计数寄存器的写入和读取。
Clk_SetRCLFreq(ClkFreq32768);
Clk_Enable(ClkRCL, TRUE); //开启内部晶振32
Clk_SetPeripheralGate(ClkPeripheralRtc, TRUE); //使能rtc时钟
stcRtcConfig.enClkSel = RtcClk32; // RtcClkHxt1024;//RtcClk32;//
stcRtcConfig.enAmpmSel = Rtc24h; // Rtc12h;//
stcTime.u8Year = 0x17;
stcTime.u8Month = 0x06;
stcTime.u8Day = 0x07;
stcTime.u8Hour = 0x12;
stcTime.u8Minute = 0x59;
stcTime.u8Second = 0x59;
stcTime.u8DayOfWeek = Rtc_CalWeek(&stcTime.u8Day);
stcRtcConfig.pstcTimeDate = &stcTime;
stcIrqCb.pfnAlarmIrqCb = RtcAlarmCb;
stcIrqCb.pfnTimerIrqCb = RtcCycCb;
stcRtcConfig.pstcIrqCb = &stcIrqCb;
stcRtcConfig.bTouchNvic = TRUE;
Rtc_DisableFunc(RtcCount);
Rtc_Init(&stcRtcConfig);
Rtc_EnableFunc(RtcCount);
while (1) {
Rtc_ReadDateTime(&stcReadTime);
}
运行几秒暂停一下,查看变量stcReadTime。
rtc_cali例程
这个例程是时钟补偿的方法,因为我没有去具体校准,而且每个板子校准的值都是不一样的。这个例程需要的时候自行阅读吧。
边栏推荐
- 梅科尔工作室-深度学习第二讲 BP神经网络
- 微信小程序-腾讯云即时通信 IM 小程序直播(一)
- 【转载】图表:数读2022年上半年国民经济
- LiDAR Snowfall Simulation for Robust 3D Object Detection
- The working principle and industry application of AI intelligent image recognition
- 【高德地图】易采坑合集
- 四大组件之一BroadCast(其一)
- 梅科尔工作室-HarmonyOS应用开发第一次培训
- TAMNet: A loss-balanced multi-task model for simultaneous detection and segmentation
- 安全帽识别-施工安全的“监管者”
猜你喜欢
随机推荐
Pay “Attention” to Adverse Weather
小程序技术原理分析
架构设计杂谈
SCNet:Semantic Consistency Networks for 3D Object Detection
梅科尔工作室-Pr第二次培训笔记(基本剪辑操作和导出)
Node-1.高性能服务器
【sqlyog】【mysql】csv导入问题
安全帽识别系统
目标检测思维导图
GBase数据库监控
GBase 8a语法格式
Reconstruction and Synthesis of Lidar Point Clouds of Spray
swin-transformer训练自己的数据集<自留>
梅科尔工作室-HarmonyOS应用开发第一次培训
基于AI智能图像识别:4个不同的行业应用
Safety helmet recognition - construction safety "regulator"
Redis主从复制的搭建
AI智能图像识别的工作原理及行业应用
数据库的基本语法(其一)
Maykle Studio - HarmonyOS Application Development Fourth Training