IAR下如何确定某一段代码的执行时间?

2019-03-24 10:02发布

现有IAR for ARM 6.10,J-Link 4.22,LM3S9B96-C3。请问怎么能够测试一段代码的执行时间呢?无多任务无中断,就是单独执行几个函数。 用simulator查看cyclecounter,感觉数值不对啊。我是运行了一个AES加密函数,连密钥扩展到加密完成,两条cyclecounter之间的差值才有9个,这也太快了吧。   [ 本帖最后由 ultrabenz 于 2012-6-6 17:00 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
tekkon
1楼-- · 2019-03-25 07:24
SYSCTL_USE_PLL   要看你几分频了

ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN);

这样设置是PLL 2.5分频  200/2.5 等于80   系统工作在80MHZ

你也可以用SysCtlClockGet()来获取你的系统时钟。。。
shower.xu
2楼-- · 2019-03-25 13:12
 精彩回答 2  元偷偷看……
ultrabenz
3楼-- · 2019-03-25 17:45
请问Systick是多久减一呢?
我现在设置为(SYSCTL_SYSDIV_1 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ)的话差值是0x0B3F,设置为(SYSCTL_SYSDIV_2 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ)的话差值是0x0F24。怎么分频多了,反而计数值大了呢?
就是说系统速度慢了,但是Systick减一的速度还是原来的速度?
tekkon
4楼-- · 2019-03-25 18:51
(SYSCTL_SYSDIV_1 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ)  ?  你是想直接用16MHZ晶振频率 还是想用分频?  你想让你的系统工作在多少频率?  你得明白这些问题。。。  
你可以看看用户手册里关于系统时钟设置那一章节,再看看TI给的例子是如何设置的。底下连接是一个关于8962的系统设置,看以参考参考,
http://bbs.eeworld.com.cn/viewthread.php?tid=211433

搞明白你的系统时钟了,计算代码执行时间就会非常简单。
对于24位计数器可以总共计数16,777,216个系统时钟, 如果你的系统工作在50MHZ,相当于0.33554432秒(16,777,216*(1/50MHZ))

在搞明白系统时钟和上面的计算后,你可以定义两个变量获取不同的systick,  如果执行代码后获取的systick大于执行前,就要考虑翻转问题了。这样稍微改动程序(加上24位的systick)去计算你想要的绝对值。
ultrabenz
5楼-- · 2019-03-25 23:41
 精彩回答 2  元偷偷看……
tekkon
6楼-- · 2019-03-25 23:49
对于你说的问题  我在我的程序里进行了测试   我用80MHZ 和50MHZ 分别执行了一段代码  得到他们的执行时间不同   然后我还测试了你说的3分频和4分频  也不同。。。

LM3S9B96最高是80MHZ  至于100MHZ的问题还是期待高手来回答了?  我最高只用过80MHZ

一周热门 更多>

相关问题

    相关文章