这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Renesas » 【CPKCORRA8D1B评测】---打开硬件定时器

共4条 1/1 1 跳转至

【CPKCORRA8D1B评测】---打开硬件定时器

助工
2024-11-11 23:26:20     打赏

说到测mcu效率,其实业界有一个很好的工具,脚CoreMark,他的设计思想是让MCU去跑不同的逻辑,分别调用特定的指令,同时开启硬件定时器,以1ms为周期定时跑10s,这样计算测试项跑完后,每个测试项所消耗的时间,测完后再根据一定规则算出总分。

很不幸的是,貌似CoreMark跑分并未涉及到Helium部分。因此我决定采用类似的思路,在启用Helium和不启用Helium的环境下,使用同一配置的硬件定时器来计算跑完计算代码所消耗的时间,以此获得Helium的开关对效率提升程度的结论。

硬件准备

  RA系列的定时器,其实应该叫General PWM Timer,其主要功能是PWM波形产生,另外有两个附加的功能,AD转换的时钟信号,以及通用定时器。RA8集成了一个32位8通道定时器(通道0至通道7)以及一个16位6通道的定时器(通道8至通道13)。

     为了能获取更精确的效果,我选用了32位定时器作为计时基准(在定时器时钟固定的情况下,更多的位数可以记录更长的时间,从而避免数据翻转带来的异常统计困难问题)。

软件修改

RASC配置

    还是老套路,从stacks开始修改。

     之后点击Generate Project Context生成工程后关闭RASC。

代码修改

定时器实现文件

bsp_gpt_timing.c

   主要功能是定时器初始化,启用,获取当前计时,关闭等入口的实现,对接FSP层。

#include "bsp_gpt_timing.h"

unsigned long time_ms_ticks;

void GPT_Stop_timer(void)
{
    R_GPT_Stop(&g_timer0_ctrl);

    time_ms_ticks = 0;
    R_GPT_CounterSet(&g_timer0_ctrl, 0);
}

void GPT_Start_timer(void)
{
    time_ms_ticks = 0;
    R_GPT_CounterSet(&g_timer0_ctrl, 0);

    R_GPT_Start(&g_timer0_ctrl);
}

void GPT_Timing_Init(void)
{
    R_GPT_Open(&g_timer0_ctrl, &g_timer0_cfg);

    GPT_Start_timer();
}

unsigned long GPT_Get_Tick(void)
{
    return time_ms_ticks;
}

void gpt0_timing_callback(timer_callback_args_t * p_args)
{
    time_ms_ticks ++;
}

定时器头文件

bsp_gpt_timing.h

   主要作用是把接口暴露给应用使用

#ifndef __BSP_GPT_TIMING_H
#define __BSP_GPT_TIMING_H
#include "hal_data.h"

void GPT_Timing_Init(void);
void GPT_Start_timer(void);
void GPT_Stop_timer(void);
unsigned long GPT_Get_Tick(void);

#endif

应用修改

   里面所做的功能为初始化定时器并每隔1000个定时中期打印一次计时,若时间精确的话,此时钟应该与PC时钟一致。

......
#include "bsp_debug_uart.h"
#include "bsp_gpt_timing.h"

void hal_entry(void)
{
    unsigned long oldtime = 0;
    /* TODO: add your own code here */
    Debug_UART_Init();
    GPT_Timing_Init();

    printf("debug uart init OK\n\r");

 ......
    while(1)
    {
        if((GPT_Get_Tick() - oldtime)  >= 1000)
        {
            oldtime = GPT_Get_Tick();
            printf("Tick %ldms\n\r",oldtime);
        }
    }
}

 ......

效果验证

  按照打印时间和电脑时间变化的对比,计时3min,未发现误差(3min 1s内的误差),可判定硬件定时器开启成功。

2.jpg





关键词: CPKCOR     RA8D1B     评测     硬件     定时器    

专家
2024-11-12 08:36:24     打赏
2楼

感谢楼主分享


专家
2024-11-12 08:51:32     打赏
3楼

学习一下


专家
2024-11-12 09:34:39     打赏
4楼

瑞萨的图形设计,似乎也不错。


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]