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的情况:

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值