STM32的运行速度到底是多少?

[复制链接]
14528|15
 楼主| colaring 发表于 2008-5-30 16:03 | 显示全部楼层 |阅读模式
刚才做实验发现一个大问题,使用ST的固件库 执行如下程序
 while(1)
{
    GPIO_SetBits(GPIOB,GPIO_Pin_11);
    GPIO_ResetBits(GPIOB,GPIO_Pin_11);
 }
用示波器看完整的波形周期竟然是400ns,反汇编也就7条指令,为何执行了400ns????。。。cpu72M速度,就算除去指令延迟,减一倍的速度,也应该是32M的速度啊,那单周期指令也应该是30ns,7条也就210ns,难道这7条指令全赶上多周期的了?

STM103 内核72M flash取指令1周期延迟 指令缓冲开 APB1=36M APB2=72M AHB=72M
GPIO 50M 推挽

难道这就是STM32的速度?不明白请指点一下
据我所知AVR在18M时用汇编:
     ldi R16,0
     ldi R17,0xff
here:out PORTB,r16
     out PORTB,r17
     rjmp here
用的时间应该是6时钟周期=300ns,依然比STM32快。。。。
香水城 发表于 2008-5-30 16:18 | 显示全部楼层

请区别CPU的运行速度和GPIO运行速度的区别

GPIO的速度比CPU慢,你的测试中I/O口的速度拖慢了CPU的速度,所以你这样的测试没有意义。

以前有很多关于这个问题的讨论,你可以在论坛中搜一下。
 楼主| colaring 发表于 2008-5-30 16:22 | 显示全部楼层

接着问


GPIO不是最快可以18m翻转么?那么你们GPIO 2M  10M 50M的速度设置是否有意义呢?实际翻转速度才2M嘛
香水城 发表于 2008-5-30 16:30 | 显示全部楼层

以前讨论过多次,管脚速度设置表示能通过的信号频率

但如果信号没有这么高的频率,设置高的频率也没用。

请不要把GPIO模块的速度与管脚速度混为一谈,这是两个概念。


举个例子:高速公路允许最高120公里/小时,一部最快只能跑50公里/小时的车在这个高速公路上永远也跑不出120公里/小时的速度。
simon21ic 发表于 2008-5-30 21:30 | 显示全部楼层

STM32的GPIO速度确实不快

相对于LPC的增强IO来比
zongzi 发表于 2008-6-1 21:09 | 显示全部楼层

STM32速度问题

举个例子:高速公路允许最高120公里/小时,一部最快只能跑50公里/小时的车在这个高速公路上永远也跑不出120公里/小时的速度。


 GPIO模块速度达不到么?是不是管脚干别的用可以达到速度如spi时能不能达到18M呢
simon21ic 发表于 2008-6-1 21:14 | 显示全部楼层

spi可以到18M

信号波形还好,再高的话信号的波形就类似正弦波了(不过发现默写设备还可以操作)
香水城 发表于 2008-6-1 21:24 | 显示全部楼层

STM32的GPIO模块最高可达到18MHz信号输出,SPI也能达到18MHz

icekoor 发表于 2015-4-30 11:44 | 显示全部楼层
受益匪浅,学习了
myxiexing 发表于 2015-5-1 00:33 | 显示全部楼层
受教了...
那就地方iv 发表于 2015-5-1 09:55 | 显示全部楼层
学习了
lkl0305 发表于 2015-5-1 10:11 | 显示全部楼层
老帖新学
csust_omega 发表于 2015-5-1 23:38 | 显示全部楼层
72M主频下直接操作寄存器可达到18M的翻转速率,即需要四条指令。
singlechipp 发表于 2015-5-1 23:50 | 显示全部楼层
直接操作是快不了的。
csust_omega 发表于 2015-5-3 19:37 | 显示全部楼层
singlechipp 发表于 2015-5-1 23:50
直接操作是快不了的。

库函数本质上也是操作寄存器,但封装成了函数的形式,也就是说除了操作寄存器的时间,调用函数时入栈出栈还要耗掉一部分时间,况且函数内部还有各种判断,你说哪个快?
anazel 发表于 2015-5-4 18:45 | 显示全部楼层
嗯,学习了,要对速度要求高的话还是要操作寄存器啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

156

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部