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

news2024/12/23 22:30:48

目录

概述

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.c
 Description:  RTC interface
 Author     :  tangmingfei2013@126.com
 Date       :  2024/06/03
 */
#include <string.h>
#include <stdio.h>
#include <stdbool.h>
#include "bsp_rtc.h"
#include "hal_data.h"

#define USER_YEAR           2024

rtc_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的值

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2145076.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HC-SR04超声波传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理介绍 三、程序设计 main.c文件 ultrasonic.h文件 ultrasonic.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 HC-SR04超声波传感器是通过发送和接收超声波&#xff0c;利用时间差和声音传播速度…

Python编码系列—Python团队开发工作流:高效协作的艺术

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

煤炭检测系统源码分享

煤炭检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

A股上市公司企业创新能力、质量、效率-原始数据+dofile+结果(2006-2023年)

上市公司的创新能力体现在其不断研发新技术、新产品和服务的能力上&#xff0c;这是企业保持竞争优势的关键&#xff1b;质量则是指公司所提供的产品或服务达到高标准的程度&#xff0c;高质量是赢得客户信任和市场份额的基础&#xff1b;效率则涵盖了生产运营中的资源利用程度…

天线工程师进阶指南:只会割铜皮式调天线,就Out了!跨学科天线设计介绍

❝本次推文简单介绍下跨学科天线设计。 什么是天线&#xff1f; 天线是一种变换器&#xff0c;它把传输线上传播的导行波&#xff0c;变换成在无界媒介&#xff08;通常是自由空间&#xff09;中传播的电磁波&#xff0c;或者进行相反的变换。 发射天线可以将来自发射机的高频…

资源创建方式

kubernetes支持两种创建资源的方式&#xff1a; 用kubectl命令直接创建&#xff0c;比如&#xff1a;kubectl run nginx-deployment --imagenginx1.7.9 --replicas2&#xff0c;在命令行中通过参数指定资源的属性 通过配置文件和kubectl apply创建&#xff0c;创建nginx.yml文…

9月18日

思维导图 配置桥接网络的过程 配置桥接网络 确保虚拟机提供了桥接模式菜单栏>编辑>虚拟机网络编辑器确保虚拟机可以设置桥接网络&#xff08;如无法通过桥接连接网络&#xff0c;则可以还原设置后重新尝试&#xff0c;如果还不行则找到VMware的软件安装包&#xff0c;双…

Pc端关于不同PDF阅读器的实际体验

因为马上研究生开学了&#xff0c;平时也会阅读很多pdf&#xff0c;实际上我们电脑上也自带一个pdf阅读的软件&#xff1a;也就是我们的edge&#xff0c;但是还是可能有些不够我们使用。下面是一些容易获取到的软件资源。 下面的评价仅是个人观点&#xff0c;请理性看待。 一…

【Pycharm使用技巧记录手册】批量检索与替换功能——辅助Yolo训练标签label配置文件构建

在yolo训练前的准备工作中&#xff0c;需要编写yaml配置文件中的信息。对于多分类问题&#xff0c;需要将其类别与索引一一对应。实践中&#xff0c;类别与索引的关系可能写在字典数据格式内&#xff0c;如何将其转换为配置文件内的信息&#xff0c;这是一个看起来简单但如果纯…

亲测有效,长期有效的RTSP流地址公网RTSP地址,各种类型的视频源

我们经常需要做一些实时视频流的测试&#xff0c;但是手边又没有办法及时弄到一个摄像机&#xff0c;我们经常会去搜索一下“公网RTSP地址”&#xff0c;但是大部分现在都失效了&#xff0c;有什么办法能够让我们快速构建一个RTSP流&#xff0c;点几下就能直接用&#xff1f; …

yolov5/8/9/10模型在车辆检测中的应用【代码+数据集+python环境+GUI系统】

yolov5/8/9/10模型在车辆检测中的应用【代码数据集python环境GUI系统】 1.背景意义 随着城市化进程的加速和机动车数量的激增&#xff0c;交通拥堵、交通事故等问题日益严重。传统的交通管理手段已经难以满足日益增长的交通需求。基于计算机视觉的车辆检测技术通过实时捕捉道路…

C/C++语言基础--C++面向对象、类、对象概念讲解

本专栏目的 更新C/C的基础语法&#xff0c;包括C的一些新特性 前言 今天更新的比较晚了&#xff0c;主要一直用是谷歌Colab训练模型&#xff0c;访问国内csdn反而不好使了&#xff0c;请大家见谅&#xff1b;C是面向对象的语言&#xff0c;本文将介绍什么是面向对象、什么是类…

jmeter+ant+git+jenkins

基于工具的接口自动化&#xff08;jmeterantgitjenkins&#xff09; 1.1 简介 Jmeter、Ant、Git和Jenkins是一套结合了测试、代码管理和持续集成/持续部署&#xff08;CI/CD&#xff09;的工具链&#xff0c;可以帮助开发者进行高效的接口开发和测试。这四个工具可以相互配合…

828华为云征文|华为云Flexus云服务器X实例之openEuler系统下部署SQLite数据库浏览器sqlite-web

828华为云征文&#xff5c;华为云Flexus云服务器X实例之openEuler系统下部署SQLite数据库浏览器sqlite-web 前言一、Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 Flexus云服务器X实例特点1.3 Flexus云服务器X实例使用场景 二、sqlite-web介绍2.1 sqlite-web简介2.2…

C语言 | Leetcode C语言题解之第406题根据身高重建队列

题目&#xff1a; 题解&#xff1a; int cmp(const void* _a, const void* _b) {int *a *(int**)_a, *b *(int**)_b;return a[0] b[0] ? a[1] - b[1] : b[0] - a[0]; }int** reconstructQueue(int** people, int peopleSize, int* peopleColSize, int* returnSize, int** …

TypeScript入门 (二)控制语句

引言 大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年9月学习赛的TypeScript学习总结文档。本文主要讲解TypeScript中控制语句的部分&#xff1b;希望通过我的知识点总结&#xff0c;能够帮助你更好地…

OpenCV基础入门30讲(Python)——第一讲 环境配置

学习基础要求&#xff1a; 1、会Python。 版本要求&#xff1a; 1、电脑系统&#xff1a;Windows10&#xff08;理论上Ubuntu或者Windows10和Windows11都可以&#xff09; 2、Python版本&#xff1a;Python 3.8&#xff08;理论上Python 3.6-3.9都可以&#xff09; 3、OpenCV版…

微博计算架构实战

课前回顾-性能估算方法 用户量预估 用户行为建模和性能估算 高性能计算架构设计 发微博 发微博是写操作&#xff0c;可以用与写缓冲(Buffer)么&#xff1f;最好是不要加&#xff0c;写缓冲会使得写入速度变慢&#xff0c;比如发送了微博10分钟后&#xff0c;别人还看不到&…

Ansible——Playbook基本功能

文章目录 一、Ansible Playbook介绍1、Playbook的简单组成1&#xff09;“play”2&#xff09;“task”3&#xff09;“playbook” 2、Playbook与ad-hoc简单对比区别联系 3、YAML文件语法&#xff1a;1. 基本结构2. 数据类型3. 列表4. 字典&#xff08;映射&#xff09;5. 注释…

CSS概览

概述 是什么 cascading style css 层叠样式表 由W3C制定的网页元素定义规则 为什么 美化 怎么办 设置样式 布局 css 引入 内部样式表 在head标签内部使用style标签 <html><head><style>.id{width: 400px;height: 400px;border: 1px solid black;ma…