2434|0

36

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【RISC-V MCU CH32V103测评】 ---前进的维子---RTC [复制链接]

 

RISC-V MCU CH32V103测评】 ---前进的维子---RTC 

前进的维子

202121

前言:

本文是维子在EEWORLD上对ch32v103测评的第九篇文章。本文主要讲解手册中RTC的基础知识。并走读例程代码。

首先RTC归根到底也是定时器的一种。系统滴答定时器、看门狗定时器、RTC都是定时器。是定时器就有输入的时钟源。有输入就有比较和输出。也就产生了:秒事件、闹钟事件和溢出事件。我师傅说过,单片机工程师控制其实就是在合适的时候输出合适的电平。定时器是判断时间是否合适的一个条件。

  1. 手册阅读

官方给出的PDF手册描述的已经很清楚。不过,维子还是带这大家看一看,请相信我!——一定能把大家带迷路,哈哈。

1:先看结构图:

2:再看RTC的时钟源:

RTC 时钟(RTCCLK)通过设置 RCC_BDCTLR 寄存器的 RTCSEL[1:0]位,RTCCLK 时钟源可以由 HSE/128LSE LSI 时钟供。修改此位前要保证电源控制寄存器(PWR_CR)应为PWR_CTLR 中的 DBP8 位置 1,只有后备区域复位,才能复位此位。
LSE 作为 RTC 时钟:由于 LSE 处于后备域由 VBAT供电,只要 VBAT维持供电,尽管 VDD供电被切断,RTC 仍继续工作。
LSI 作为 RTC 时钟:如果 VDD供电被切断,RTC 自动唤醒不能保证。
HSE/128 作为 RTC 时钟:如果 VDD 供电被切断或内部电压调压器被关闭(1.8V 域的供电被切断),则 RTC 状态不确定。

结论:时钟源:HSE/128LSE LSI但是要VDD断电仍能工作还是用LSE 

3:再看能干啥?

先说结论:可中断、可唤醒。事件包括:秒、溢出、闹钟……都可以从standby唤醒。唤醒是,闹钟和从WKU引脚的上升沿从Standby退出。

说的远一点:WKUP pin 是属于RTC模块的吗?维子觉着不属,但把人家当孤儿也不好吧。

 

 

4:查看寄存器

RTC功能简单,只要扫一眼,什么都知道了。维子啰嗦几句啊:现在官方给的库,都很完善好用。一般看着官方的例子就可以修改自己的代码。很多人不去看寄存器(时间紧的时候,很多人都不看手册),但是维子觉着最好花两分钟把寄存器过一遍,时间不长,做个了解。

 

  1. 走读代码

有了手册阅读的基础,我们再看代码的时候就很轻松的理解编程的人是为什么这样写的了。程序很简单,RTC初始化和RTC中断。

主函数

int main(void)

{

……

    RTC_Init();

    while(1){

        Delay_Ms(1000);

打印时间。

}

}

中断处理函数 每次中断读一下时间

void RTC_IRQHandler(void)

{

    if (RTC_GetITStatus(RTC_IT_SEC) != RESET)   /* Seconds interrupt */

        RTC_Get();

          if(RTC_GetITStatus(RTC_IT_ALR)!= RESET){

                  RTC_ClearITPendingBit(RTC_IT_ALR);

        RTC_Get();

    }

    RTC_ClearITPendingBit(RTC_IT_SEC|RTC_IT_OW);

    RTC_WaitForLastTask();

}

RTC_Init 

这里就不复制代码上来了。只要知道,在后备寄存器特定位置写入特定值做一下证明可以了。同样用类似的方法,可以判断单片机是复位还是断电。

 

下面是RTC库的函数列表。有了寄存器的阅读,稍微看一下函数体就懂了。

 

  1. 编译和观察结果

 

  1. 总结

RTC作为非常易用的内部外设。使用起来也很简单。一般RTC在低功耗的时候的作用很中重要。用它来做低功耗的延时是个不错的办法。这个例程代码是可以直接借鉴到自己代码里的。单片机越来越简单了。

点赞(1) 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表