专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
IAR下如何确定某一段代码的执行时间?
2019-03-24 10:02
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
2830
14
1084
现有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
加载中...
上一页
1
2
3
下一页
一周热门
更多
>
相关问题
相关文章
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN);
这样设置是PLL 2.5分频 200/2.5 等于80 系统工作在80MHZ
你也可以用SysCtlClockGet()来获取你的系统时钟。。。
我现在设置为(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减一的速度还是原来的速度?
你可以看看用户手册里关于系统时钟设置那一章节,再看看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)去计算你想要的绝对值。
LM3S9B96最高是80MHZ 至于100MHZ的问题还是期待高手来回答了? 我最高只用过80MHZ
一周热门 更多>