目录
概述
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 MCU | R7FA4M2AD3C |
Keil | MDK ARM 5.38 |
FSP 版本 | 4.0.0 |
调试工具:st-link | ST-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的情况: