Renesas MCU之定时器计数功能应用

目录

概述

1 功能介绍

1.1 时钟相关配置

1.2 应用接口

2 FSP配置Project参数

2.1 软件版本信息

2.2 配置参数

2.3 项目生成 

3 定时器功能代码实现

3.1 定时器初始化函数

3.2  定时器回调函数

4 功能测试

5 参考文档


概述

本文主要介绍Renesas MCU的定时器功能的基本用法,笔者使用FSP工具配置定时器参数,基于Renesas e² studio编写和调试代码。

1 功能介绍

1.1 时钟相关配置

时钟配置:

AGT时钟基于PCLKB、LOCO或子时钟频率。可以使用RA Configuration编辑器的Clocks选项卡或在运行时使用CGC接口来设置时钟频率。

定时器周期

RA Configuration编辑器将根据所选的周期时间、单位和时钟速度自动计算周期计数值和源时钟分配器。当选择的单位为“Raw counts”时,根据选择的时钟源不同,允许的最大周期设置不同:

Clock source16-bit Timer Maximum period (counts)32-bit Timer Maximum period (counts)
LOCO/Subclock0x8000000x8000000000
PCLKB0x800000x800000000
All other sources0x100000x100000000

注意:

虽然AGT是一个16位定时器,但由于计数器溢出时发生周期中断,将周期寄存器设置为0导致有效周期为1个计数。因此,所有用户提供的原始计数值都反映了周期计数的实际数量(而不是原始寄存器值)。

1.2 应用接口

1)启动和停止AGT

在启动或停止定时器后,AGT寄存器不能被访问,直到AGT状态在3个AGTCLK周期后更新。如果在3 AGTCLK周期结束之前调用另一个AGT函数,则该函数旋转等待AGT状态更新。启动或停止计时器后所需的等待时间可以使用AGTCLK的频率来确定,该频率由timer_cfg_t::source_div和agt_extended_cfg_t::count_source派生。

在访问MCU外设寄存器之前,应用程序负责确保所需的时钟启动和稳定。

2)低功耗模式

AGT1(仅通道1)可用于进入贪睡模式,或在计数器底流发生时唤醒MCU从贪睡、软件待机或深度软件待机模式。比较匹配A和B事件也可用于从软件待机或贪睡模式中唤醒。

3)一次性模式

AGT定时器本身不支持单次模式。单次模式是通过在调用回调之前停止中断服务程序中的计时器来实现的。如果在计时器到期之前中断没有得到服务,计时器将生成多个事件。在这种情况下,回调只被调用一次,但如果计时器链接到Transfer (r_dtc),则可能生成多个事件。

2 FSP配置Project参数

2.1 软件版本信息

软硬件信息版本信息
Renesas MCUR7FA4M2AD3C
Renesas e² studio2024-04 (24.4.0)
FSP 版本5.3.0

2.2 配置参数

1)添加和定时器相关的Stacks

2)配置定时器参数

修改属性信息,定时器中断函数触发时间为1ms

定义定时器中断函数

2.3 项目生成 

完成以上参数配置就可以生成项目,嗲你Generate project content 就可以生成项目文件,具体文件架构如下:

3 定时器功能代码实现

3.1 定时器初始化函数

代码24行:初始化定时器相关的参数,包括分频系数、中断回调函数等

代码26行:启动定时器

源代码:

void g_timer0_Init(void)
{fsp_err_t err = FSP_SUCCESS;/* Initializes the module. */err = R_AGT_Open(&g_timer0_ctrl, &g_timer0_cfg);/* Handle any errors. This function should be defined by the user. */assert(FSP_SUCCESS == err);/* Start the timer. */(void) R_AGT_Start(&g_timer0_ctrl);
}

3.2  定时器回调函数

代码37行:检测定时器中断溢出事件

代码40行:实现1s定时

代码41行:当时间到达1s之后,LED翻转

源代码

void g_timer0_callback(timer_callback_args_t *p_args)
{static int count =0 ;/* 1毫秒定时器溢出事件 */if (TIMER_EVENT_CYCLE_END == p_args->event){count++;if( count %1000 == 0)LED3_TOGGLE;}
}

4 功能测试

编译代码下载代板卡中,可以看见LED3会以1s的间隔闪烁

1)点亮LED3的效果

 

2)关闭LED3的效果

5 参考文档

file:///D:/Renesas/RA/e2studio_v2024-04_fsp_v5.3.0/fsp_documentation/v5.3.0/fsp_user_manual_v5.3.0/index.html

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

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

相关文章

使用Python在Word中创建和提取表格

目录 安装Python Word库 使用Python在Word中创建预定义行和列的表格 使用Python在Word中动态创建表格 使用Python在Word中提取表格数据 Word 文档中的表格是一种强大且灵活的数据组织和展示工具,它能将信息以行和列的形式有序地排列,使文档内容更加清…

全新STC12C5A60S2单片机+LCD19264大屏万年历农历生肖节气节日显示+闹钟+温湿度+台灯

资料下载地址:全新STC12C5A60S2单片机LCD19264大屏万年历农历生肖节气节日显示闹钟温湿度台灯 这是旧版 退役拆解了 新版 与电路图所示 共设置4个按键 短按开关台灯 加减键调光 长按进入菜单 1.台灯 加入PCA PWM 调光 STC12C5A60S2的PCA PWM非常好用 设置简单无极…

kubernetes负载均衡---MetalLB

https://github.com/metallb/metallb 参考 : https://mp.weixin.qq.com/s/MBOWfcTjFMmgJFWw-FIk0Q 自建的Kubernetes集群,默认情况下是不支持负载均衡的。当需要提供服务的外部访问时,可使用 Ingress、NodePort等方式。他们都存在一些问题 …

如何把几个pdf文件合成在一个pdf文件

PDF合并,作为一种常见的文件处理方式,无论是在学术研究、工作汇报还是日常生活中,都有着广泛的应用。本文将详细介绍PDF合并的多种方法,帮助读者轻松掌握这一技能。 打开 “轻云处理pdf官网” 的网站,然后上传pdf。 pd…

基于线性回归根据饮食习惯和身体状况估计肥胖水平

目录 1. 作者介绍2.饮食习惯与身体状况数据集介绍3.实验步骤3.1 数据分析3.2 可视化处理数据3.3 导入线性回归模型进行训练3.4 预测结果3.5 完整代码3.5.1 数据分析3.5.2 模型评估 参考文献 1. 作者介绍 刘欢,女,西安工程大学电子…

哈希表(Hash table)

哈希表(Hash table),也称为散列表,是一种根据关键码值(Key value)直接进行访问的数据结构。它通过散列函数(Hash function)将关键码值映射到表中的一个位置,以此来访问记录,从而加快查找的速度。以下是关于哈希表的详细解释: 基本概念 散列函数:将关键码值映射到表…

10 -每台机器的进程平均运行时间(高频 SQL 50 题基础版)

10 - 每台机器的进程平均运行时间 -- sum(if(activity_type end,timestamp ,-timestamp )) -- 如果activity_type为“end”,值为timestamp,为“start” 为-timestamp,所有数相加end-start -- count(distinct process_id),获取同一机器有几个进行id -- r…

python的sql解析库-sqlparse

内容目录 一、基本方法:1.parse(sql)2.format(sql)3.split()4.parsestream() 二、Token三、其他类型四、案例: 提取所有查询的字段和表名 sqlparse 是一个 Python 库,是一个用于 Python 的非验证 SQL 解析器, 用于解析 SQL 语句并提供一个简单的 API 来访问解析后的…

Vue中如何获取dom元素?

在Vue中,通常我们不直接操作DOM元素,因为Vue是一个声明式渲染的框架,它鼓励我们使用数据驱动视图的方式来更新UI。然而,在某些情况下,你可能需要直接访问DOM元素。在这种情况下,你可以使用Vue的ref属性和$r…

k8s Pods漂移时间配置

默认为300秒 apiVersion: apps/v1 kind: Deployment metadata:name: my-test spec:replicas: 1selector:matchLabels:app: my-apptemplate:metadata:labels:app: my-appspec:containers:- name: my-containerimage: nginx:latestports:- containerPort: 80tolerations:- key: &…

C++语言学习(七)—— 继承、派生与多态(一)

目录 一、派生类的概念 1.1 定义派生类的语法格式 1.1.1 定义单继承派生类 1.1.2 定义多继承派生类 1.2 继承方式 二、公有继承 三、派生类的构造和析构 四、保护成员的引入 五、改造基类的成员函数 六、派生类与基类同名成员的访问方式 七、私有继承和保护继承 7.…

bug记录——报了一堆xtr1common和yvals_core.h的错误

现象 今天使用VisualStdio2022时&#xff0c;突然出现了这样严重的报错&#xff0c;看得我一头雾水&#xff0c;而且无法启动VisualStdio2022的调试。 原因 发现NULL没法直接使用时&#xff0c;跟着提示添加了如下的头文件。 #include<cstddef>&#xff0c;是C标准库的头…

代码随想录算法训练营Day61 | 总结和展望 | Python | 个人记录向

总结 感觉训练营说短不短&#xff0c;说长不长&#xff0c;没想到一下子就度过了60天的刷题之旅。训练营之前自己模糊地刷过代码随想录&#xff0c;主要是二叉树前面的章节二叉树的前一部分后面章节的前几题&#xff0c;能稍微应对面试。但是&#xff0c;我亟需对coding进行系…

Blog项目切换Markdown编辑器———LayUI弹出层弹出写在页面的内容导致的各种bug

【2024.5.24回顾】 1 问题描述(描述完自己解决了…) 正常情况 点击添加文章按钮后&#xff0c;弹出文章编辑界面&#xff0c;如果用富文本功能编辑&#xff0c;则一切正常。可以多次打开、关闭 Markdown 如果在弹出层中点击了切换编辑器按钮&#xff0c;会成功切换为markd…

使用chatgpt api快速分析pdf

需求背景 搞材料的兄弟经常要分析pdf&#xff0c;然后看到国外有产品是专门调用chatpdf来分析pdf的&#xff0c;所以就来问我能不能帮他也做一个出来。正好我有chatgpt的api&#xff0c;所以就研究了一下这玩意怎么弄。 需求分析 由于chatgpt是按字符算钱的&#xff0c;所以…

JDBC学习笔记(三)高级篇

一、JDBC 优化及工具类封装 1.1 现有问题 1.2 JDBC 工具类封装 V1.0 resources/db.properties配置文件&#xff1a; 工具类代码&#xff1a; 1.3 ThreadLocal 1.4 JDBC 工具类封装 V2.0 二、DAO封装及BaseDAO 工具类 2.1 DAO 概念 2.2 BaseDAO 概念 2.3 BaseDAO 搭建 2.4 Ba…

每天一个数据分析题(三百四十八)

理解业务分析模型能够更好的把握业务全局&#xff0c;以下属于分析模型中分类模型的是 A. RFM模型 B. 销售漏斗模型 C. 波士顿矩阵 D. 客户价值模型 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此处获取答案

Go 实现的命令行程序,可以通过参数来控制和消耗 CPU 占比。通常用于测试系统负载和性能。

说明 Go 实现的命令行程序&#xff0c;可以通过参数来控制和消耗 CPU 占比。通常用于测试系统负载和性能。 代码在下面 编译和运行 在终端中编译代码&#xff1a; go build 运行程序并传入 CPU 使用率参数&#xff0c;例如&#xff1a; ./tools_cpu_burner -p50代码解释 fla…

WPF前端:一个纯Xaml的水平导航栏

效果图&#xff1a; 代码&#xff1a; 1、样式代码&#xff0c;可以写在窗体资源处或者样式资源文件中 <Style x:Key"MenuRadioButtonStyle" TargetType"{x:Type RadioButton}"><Setter Property"FontSize" Value"16" />…

Always语句和assign的用法

Always语句 简介 always语句块从仿真0时刻开始执行其中的行为语句&#xff1b;最后一条执行完成后&#xff0c;再开始执行其中的第一条语句&#xff0c;如此往复循环&#xff0c;直到整个仿真结束。因此&#xff0c;always语句块常用于对数字电路中一组反复执行的活动进行建模…