当前位置: 首页 > news >正文

Renesas R7FA8D1BH (Cortex®-M85)内部RTC的应用

目录

概述

1 软硬件

1.1 软硬件环境信息

1.2 开发板信息

1.3 调试器信息

2 FSP配置RTC

2.1 配置参数

2.2 RTC模块介绍

3 RTC相关函数

3.1 R_RTC_Open()

 3.2 R_RTC_Close()

3.3 R_RTC_ClockSourceSet()

3.4  R_RTC_CalendarTimeSet()

3.5  R_RTC_CalendarTimeGet()

4 应用案例

4.1 功能介绍

​4.2 源代码文件

5 测试

5.1 测试代码介绍

5.2 测试功能


测试视频:

使用Renesas R7FA8D1BH (Cortex®-M85)控制多类i2c类型设备,实时读取数据显示在OLED 屏幕,按键实现页面切换

 

概述

本文主要介绍Renesas R7FA8D1BH (Cortex®-M85)内部RTC的应用的相关内容,包括使用FSP配置RTC的参数,FSP提供的RTC相关的应用函数接口,还编写一个Demo,调用RTC的函数接口,实现时间数据的实时更新功能。

1 软硬件

1.1 软硬件环境信息

软硬件信息版本信息
Renesas MCUR7FA8D1BH
KeilMDK ARM 5.38
FSP 版本5.3.0
调试工具:N32G45XVL-STBDAP-LINK

1.2 开发板信息

笔者选择使用野火耀阳开发板_瑞萨RA8,该板块的主控MCU为R7FA8D1BHECBD,7FA8D1BHECBD的内核为ARM Contex-M85。

1.3 调试器信息

对于R7FA8D1BHECBD芯片,其使用的内核为Cortex®-M85 Core, ST-LINK-V2或者J-LINK-V9不支持下载和调试功能。笔者经过多次尝试,发现N32G45XVL-STB板卡上自带的DAP-LINK可以下载和调试R7FA8D1BHECBD。

下图为N32G45XVL-STB开发板实物图:

2 FSP配置RTC

2.1 配置参数

1)2)在Stacks面板上创建RTC模块

2)其他参数,选择默认值

 3) 配置完成参数后,生成项目代码,在hal_data.c文件中查看和RTC相关的代码

2.2 RTC模块介绍

RTC HAL模块配置RTC模块,控制时钟、日历和闹钟功能。回调可用于响应警报和周期性中断。

主要特性:

RTC时间和日期的获取和设置。
RTC时间和日期报警的获取和设置。
RTC告警和定时事件通知。
RTC时间捕获。

 RTC HAL模块支持三种不同的中断类型:

1)当匹配年、月、日、星期中的某一天、小时、分钟或秒的任意组合时产生的警报中断
2)每2、1、1/2、1/4、1/8、1/16、1/32、1/64、1/128或1/256秒产生的周期性中断。
3)当从RTC日历读取时间以获得准确的时间读数时,内部使用进位中断

3 RTC相关函数

3.1 R_RTC_Open()

函数原型:


fsp_err_t R_RTC_Open	(	rtc_ctrl_t *const 	p_ctrl,
rtc_cfg_t const *const 	p_cfg 
)	

应用范例:

   /* Open the RTC module */err = R_RTC_Open(&g_rtc0_ctrl, &g_rtc0_cfg);

返回值:

Return values

FSP_SUCCESSInitialization was successful and RTC has started.
FSP_ERR_ASSERTIONInvalid p_ctrl or p_cfg pointer.
FSP_ERR_ALREADY_OPENModule is already open.
FSP_ERR_INVALID_ARGUMENTInvalid time parameter field.

 3.2 R_RTC_Close()

函数原型:

fsp_err_t R_RTC_Close	(	rtc_ctrl_t *const 	p_ctrl	)	

返回值:

Return values

FSP_SUCCESSDe-Initialization was successful and RTC driver closed.
FSP_ERR_ASSERTIONInvalid p_ctrl.
FSP_ERR_NOT_OPENDriver not open already for close.

3.3 R_RTC_ClockSourceSet()

函数原型:设置时钟源

fsp_err_t R_RTC_ClockSourceSet	(	rtc_ctrl_t *const 	p_ctrl	)	

应用范例:

    /* This condition can differ based on use case. */if (R_SYSTEM->RSTSR0 == 1){/* Set the RTC clock source. Can be skipped if "Set Source Clock in Open" property is enabled. */R_RTC_ClockSourceSet(&g_rtc0_ctrl);}

返回值:

Return values

FSP_SUCCESSInitialization was successful and RTC has started.
FSP_ERR_ASSERTIONInvalid p_ctrl or p_cfg pointer.
FSP_ERR_NOT_OPENDriver is not opened.
FSP_ERR_INVALID_ARGUMENTInvalid clock source.

3.4  R_RTC_CalendarTimeSet()

函数原型: 设置时间

fsp_err_t R_RTC_CalendarTimeSet	(	rtc_ctrl_t *const 	p_ctrl,
rtc_time_t *const 	p_time 
)	

 返回值:

Return values

FSP_SUCCESSCalendar time set operation was successful.
FSP_ERR_ASSERTIONInvalid input argument.
FSP_ERR_NOT_OPENDriver not open already for operation.
FSP_ERR_INVALID_ARGUMENTInvalid time parameter field.

3.5  R_RTC_CalendarTimeGet()

函数原型: 获取实时时间


fsp_err_t R_RTC_CalendarTimeGet	(	rtc_ctrl_t *const 	p_ctrl,
rtc_time_t *const 	p_time 
)	

返回值:

Return values

FSP_SUCCESSCalendar time get operation was successful.
FSP_ERR_ASSERTIONInvalid input argument.
FSP_ERR_NOT_OPENDriver not open already for operation.
FSP_ERR_IRQ_BSP_DISABLEDUser IRQ parameter not valid

4 应用案例

4.1 功能介绍

1) 初始化函数

代码15~23行: 初始化RTCv日期和时间

代码26~39行: 实现初始化函数功能

2)获取RTC功能函数

代码47行: 获取实时时间

代码48行:每个1s打印时间log

 4.2 源代码文件

 /*FILE NAME  :  bsp_rtc.cDescription:  RTC interfaceAuthor     :  tangmingfei2013@126.comDate       :  2024/06/03*/
#include <string.h>
#include <stdio.h>
#include <stdbool.h>
#include "bsp_rtc.h"
#include "hal_data.h"#define USER_YEAR           2024rtc_time_t set_time =
{.tm_sec  = 10,.tm_min  = 20,.tm_hour = 21,.tm_mday = 11,.tm_mon  = 8,.tm_year = USER_YEAR-1900,
};
rtc_time_t get_time;void user_rtc_Init (void)
{fsp_err_t err = FSP_SUCCESS;/* Open the RTC module */err = R_RTC_Open(&g_rtc0_ctrl, &g_rtc0_cfg);/* Handle any errors. This function should be defined by the user. */assert(FSP_SUCCESS == err);/* Set the RTC clock source. Can be skipped if "Set Source Clock in Open" property is enabled. */R_RTC_ClockSourceSet(&g_rtc0_ctrl);/* Set the calendar time */R_RTC_CalendarTimeSet(&g_rtc0_ctrl, &set_time);/* Get the calendar time */R_RTC_CalendarTimeGet(&g_rtc0_ctrl, &get_time);
}void user_get_rtc(void)
{rtc_time_t *rtc_time_t;static int sec;rtc_time_t = &get_time;R_RTC_CalendarTimeGet(&g_rtc0_ctrl, rtc_time_t);if( rtc_time_t->tm_sec != sec  ){sec = rtc_time_t->tm_sec;printf("Current time:  %04d/%02d/%02d/ %02d:%02d:%02d \n",rtc_time_t->tm_year+1900, rtc_time_t->tm_mon, rtc_time_t->tm_mday,rtc_time_t->tm_hour, rtc_time_t->tm_min, rtc_time_t->tm_sec);}}void user_get_currentRtc( rtc_time_t* rtc_time_t)
{R_RTC_CalendarTimeGet(&g_rtc0_ctrl, rtc_time_t);
}

5 测试

5.1 测试代码介绍

代码189行: 获取实时RTC值

代码190行:得到秒数据,当秒被改变时,读取sensor数据,实时显示在OLED上

5.2 测试功能

 编译代码下载到板卡中,其执行步骤如下:

1)编译和下载代码

2)板卡中运行代码:

硬件环境:

 运行结果:

实时刷新sensor的值

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vue 2表格滚动加载
  • 心觉:成功学就像一把刀,有什么作用关键在于使用者(一)
  • STM32G474RE之RTC
  • 《Effective C++》第三版——让自己习惯C++
  • [性能]高速收发的TCP/MQTT通信
  • 【最新综述】基于深度学习的超声自动无损检测(下)
  • VirtualBox 克隆已有的虚拟机
  • 小项目建议用redis替换mq
  • Mysql系列-索引简介
  • qt-creator-10.0.2之后版本的jom.exe编译速度慢下来了
  • AI逻辑推理入门
  • FFT提取图像特征
  • harmony初学者入门
  • 【iOS】dismiss多级的方法
  • Xilinx系FPGA学习笔记(九)DDR3学习
  • @jsonView过滤属性
  • 「面试题」如何实现一个圣杯布局?
  • docker python 配置
  • ES6系统学习----从Apollo Client看解构赋值
  • idea + plantuml 画流程图
  • iOS 系统授权开发
  • JavaScript HTML DOM
  • Linux CTF 逆向入门
  • Service Worker
  • WePY 在小程序性能调优上做出的探究
  • 对超线程几个不同角度的解释
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 复习Javascript专题(四):js中的深浅拷贝
  • 关于使用markdown的方法(引自CSDN教程)
  • 理解在java “”i=i++;”所发生的事情
  • 网页视频流m3u8/ts视频下载
  • 学习使用ExpressJS 4.0中的新Router
  • $nextTick的使用场景介绍
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (LLM) 很笨
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET 4.0中的泛型协变和反变
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NetCore 如何动态路由
  • .NET中使用Protobuffer 实现序列化和反序列化
  • /etc/fstab 只读无法修改的解决办法
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [] 与 [[]], -gt 与 > 的比较
  • [000-01-022].第03节:RabbitMQ环境搭建