瑞萨单片机论坛
直播中

刘鑫源的水煮鱼

8年用户 11经验值
擅长:可编程逻辑 电源/新能源 MEMS/传感技术 测量仪表 嵌入式技术 控制/MCU
私信 关注

【RA-Eco-RA2E1-48PIN-V1.0开发板试用】原创测量代码运行时间

测量时间跑马灯

本帖最后由 刘鑫源的水煮鱼 于 2024-11-6 16:06 编辑

       在很多嵌入式应用当中,需要跑各种各样的算法,比如像BLDC电机的FOC算法,BMS的卡尔曼滤波算法计算SOC,还有神经网络,语音识别,AI算法等等,在嵌入式软件工程师完成自己的算法后,往往会需要评估下算法的执行效率,消耗多少的RAM,ROM,执行花费了多少的时间周期,在这当中,最为重要的当属算法执行的时间最为重要了,有时候为了达到高性能的执行效率,甚至会在软件上通过查表等方法通过空间来换取时间用以优化算法。

        在嵌入式开发当中,测量算法的执行时间是非常重要的,为了完成这个指标,我特地在试用瑞萨的RA2E1开发板上做详细说明。最后通过串口打印输出算法模块函数的执行时间,来展示给大家。
        1.打开我之前的项目工程FPU文件夹目录,打开keil

打开pack insall 安装管理器,安装perf_counter

安装完毕以后,就返回keil界面,点击这个

使能CMSIS里的core

然后使能perf_counter里的core

再hal_entry.c文件里添加如下头文件

我先配置了两个LED ,P103,P104,在keil里打开

配置P103和P104


点击生成

关闭瑞萨IDE,打开keil
封装好LED1和LED2的跑马灯程序
void led_1_flicker(void)
void led_2_flicker(void)
void led_flicker(void)


最后的核心一步,是添加我自己写好的profile测量时间函数,是基于systick定时器来实现的,可以应用在所有Cortex-M处理器上,不限内核版本。

加入keil工程

添加文件目录

在hal_entry()里面添加如下函数代码

while里面实现流水灯,同时测量流水灯执行时间

编译后烧录到板子上
打开串口,选择115200波特
板子上的LED1,LED2在进行跑马灯闪烁。
LED跑马等的裸机是
1,LED1和LED2一起200ms翻转
2,LED1单独200ms翻转,LED2熄灭
3,LED2单独200ms翻转,LED1熄灭
然后可以在串口上面查看LED1和LED2翻转的200ms的执行时间
附件是我的工程代码可以看到这个执行时间是400014us,是因为两个led亮灭,
400014us是这个,因为集成两个LED,所以耗时多了2us

这里LED1和LED2分别亮灭执行了400012us,本身延时400ms + LED的亮灭 =400012us,非常的准确,符合理论预期


测量时间跑马灯

附件: 您需要登录才可以下载或查看附件。没有帐号?注册

更多回帖

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