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

Renesas MCU使用定时器之实现1ms定时中断

目录

概述

1 软硬件介绍

1.1 软件版本信息

1.2  硬件介绍

2 FSP配置项目 

2.1 项目参数配置

2.2 配置定时器参数

3 功能实现

3.1 软件架构实现

3.2 实现功能函数

4 测试


概述

本文主要介绍使用Renesas MCU定时器之实现1ms定时中断功能,文中介绍使用FSP配置定时器的参数和中断回调函数的方法。并在回调函数中实现1s定时功能,触发LED状态变化。

1 软硬件介绍

1.1 软件版本信息

软硬件信息版本信息
Renesas MCUR7FA4M2AD3C
KeilMDK ARM 5.38
FSP 版本4.0.0
调试工具:st-linkST-LINK/V2-1

1.2  硬件介绍

使用定时器实现1ms定时,在中断函数中实现1s计数用于trigger led的状态。LED对应的IO接口为P405。

2 FSP配置项目 

2.1 项目参数配置

1)配置系统时钟

笔者使用的开发板上配置的晶振为12M Hz,在Clock时钟蓝选择该型号的时钟配置参数

2)配置debug接口,选择swo类型

3)配置IO输出属性,配置P405为输出IO,用于控制LED1的状态

2.2 配置定时器参数

 1)在Stacks中创建定时器对象

2) 配置定时器的参数

注意:在Interrupt中定义Callback函数g_timer1_Callback

3 功能实现

3.1 软件架构实现

在FSP中配置完成参数后,点击Generate Project生成项目文件

3.2 实现功能函数

1)定时器初始化函数

注意: 定时器相关的函数,应该调用R_AGT_XXX类型的接口函数

代码29行: 初始化定时器接口参数

代码33行: 启动定时器

代码36行: 使能定时器

程序源码:

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

 2)中断回调函数

定时器会每隔1ms调用一次该回调函数,在该定时器内部实现1000次计数,当计数数值到了之后,LED3实现状态翻转。

 程序源码:

void g_timer1_Callback(timer_callback_args_t *p_args)
{static int count =0 ;/* timer Callback action  */if (TIMER_EVENT_CYCLE_END == p_args->event){count++;if( count %1000 == 0)LED3_TOGGLE;}
}

4 测试

编译代码,下载到板卡中运行代码,debug代码后,可以看见,代码运行到断点处:

板卡上LED的情况:

相关文章:

  • redis大key优化
  • csdn上传源码资源卖钱能买房买车吗?每天最高收入200-500?
  • Docker 可用镜像源
  • Qt 技术博客:深入理解 Qt 中的 delete 和 deleteLater 与信号槽机制
  • docker内apt-get update Waiting for headers 0%
  • 音视频的Buffer处理
  • Parallelize your massive SHAP computations with MLlib and PySpark
  • NTFS和exFAT哪个性能好 U盘格式化NTFS好还是exFAT好 mac不能读取移动硬盘怎么解决
  • 深信服科技:2023网络安全深度洞察及2024年趋势研判报告
  • [实践篇]13.29 再来聊下Pass Through设备透传
  • sixLabors.ImageSharp图片截取
  • 中介子方程二十九
  • win10远程桌面连接端口,远Win10远程桌面连接端口修改及无法连接解决方案
  • Vue67-Vuex简介
  • Leetcode3185. 构成整天的下标对数目 II
  • E-HPC支持多队列管理和自动伸缩
  • iOS编译提示和导航提示
  • java中的hashCode
  • Js基础知识(一) - 变量
  • Meteor的表单提交:Form
  • mysql 数据库四种事务隔离级别
  • Shadow DOM 内部构造及如何构建独立组件
  • Vue小说阅读器(仿追书神器)
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 闭包--闭包之tab栏切换(四)
  • 编写符合Python风格的对象
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 技术发展面试
  • 经典排序算法及其 Java 实现
  • 免费小说阅读小程序
  • 一天一个设计模式之JS实现——适配器模式
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • FaaS 的简单实践
  • puppet连载22:define用法
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #stm32整理(一)flash读写
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)甲方乙方——赵民谈找工作
  • *p++,*(p++),*++p,(*p)++区别?
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .Net Redis的秒杀Dome和异步执行
  • .net 调用php,php 调用.net com组件 --
  • .NET框架
  • .NET设计模式(8):适配器模式(Adapter Pattern)