瑞萨单片机论坛
直播中

少年阿炳

3年用户 40经验值
擅长:嵌入式技术
私信 关注
[经验]

【瑞萨RA4系列开发板体验】定时器(r_agt)使用经验

前言

本次分享是使用瑞萨的RASC自动生成定时器的基础配置,在尝试使用定时器时,试了N遍都不得其法,最终求助后完成了定时器的配置。感谢。
本文只分享定时器相关的内容,新手需要有一点点的基础,至少会点灯了。

配置定时器的注意事项

图片.png

1.PCLKB时钟频率较高,秒中断需要切换其他低速时钟,本次我选择的是LOCO。
2.RASC里配置是直接配置中断间隔时间,和stm32需要计算的方式不一样。

配置过程

选择 New Stack-->timers-->Timer,Low-Power(r_agt)

图片.png

点击新生成的Stack,
分别在General和Interrupt中配置参数和回调函数。
图片.png

时钟选择:LOCO
Period Unit:选择 milliseconds(毫秒)
Period:输入500
上面的意思是让定时器没500ms产生一次中断。

在Interrupt中定义回调函数,函数名可自定义。
设置中断优先级Priority 3

同时我配置了LED1。

到这里就配置完毕。点击生成工程。

代码部分

#include "hal_data.h"

FSP_CPP_HEADER
void R_BSP_WarmStart(bsp_warm_start_event_t event);
FSP_CPP_FOOTER

volatile uint32_t time0_500ms = 0;

void g_timer0_callback(timer_callback_args_t *p_args) 
{ 
    /* TODO: add your own code here */ 
    if (TIMER_EVENT_CYCLE_END == p_args->event) 
    {
        time0_500ms ++;
    }
}

/*******************************************************************************************************************//**
 * main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used.  This function
 * is called by main() when no RTOS is used.
 **********************************************************************************************************************/
void hal_entry(void)
{
    /* TODO: add your own code here */
    fsp_err_t err;
    /* TODO: add your own code here */
    err = R_AGT_Open(&g_timer0_ctrl, &g_timer0_cfg);
    assert(FSP_SUCCESS == err);
    err = R_AGT_Start (&g_timer0_ctrl);
    while(1)
    {
        if(time0_500ms >= 2)
        {            
            time0_500ms = 0;
            R_PORT4->PODR ^= 1<<(BSP_IO_PORT_04_PIN_15 & 0xFF);
        }

    }
#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
}

实现现象

*附件:r_agt.rarLED1按照一秒每次的频率闪烁。

代码

更多回帖

发帖
×
20
完善资料,
赚取积分