hyfwjh 发表于 2016-4-12 00:30:29

请教各位大神,关于STM32F301 的读IO电平速度问题

最近用TM32F301 的读IO电平,发现速度很慢!
while(1)
{
       if(((GPIOB->IDR)&0x1)!=0)                  break;       

}
       GPIOA->BSRRL = 0x1;

   当读到PB0为高电平时,退出,然后用PA0输出1,来示波器观察,然后,发现居然有240ns的时差!!
请教大家,这是为何?按72M算,也有14ns一条指令的速度,但是这里居然240!为什么呢?搞了几天,一直没解决
如果想要最快的识别PB0为高电平的方法是?清大家指点!


谢谢!

creep 发表于 2016-4-12 09:15:43

你看下汇编是不是不止一条指令

发表于 2016-4-12 09:37:19

看一下IO输出的配置。

hyfwjh 发表于 2016-4-13 08:00:17

creep 发表于 2016-4-12 09:15
你看下汇编是不是不止一条指令

看了 汇编大概4-5条,但是这样算来 不该240ns啊

hyfwjh 发表于 2016-4-13 08:00:52

安 发表于 2016-4-12 09:37
看一下IO输出的配置。

都有配置输出为高速的,读就没有配置高速了

xmshao 发表于 2016-4-13 08:43:48

呵呵 以为多慢呢。

差不多了。可以尝试换换写法。

while (((GPIOB->IDR)&0x1)==0) ;
GPIOA->BSRRL = 0x1;

另外,这么快的速度,你的测量可靠不?
               
         

发表于 2016-4-13 11:16:17

最高50M,楼主看一下IO的配置频率

hyfwjh 发表于 2016-4-13 17:10:50

xmshao 发表于 2016-4-13 08:43
呵呵 以为多慢呢。

差不多了。可以尝试换换写法。


哦 因为测一个时间为 600ns的 ,现在误差在240ns,所以 太慢了, 开始用这个写法,也是这样,

hyfwjh 发表于 2016-4-13 17:16:22

安 发表于 2016-4-13 11:16
最高50M,楼主看一下IO的配置频率

设了,置为
        GPIO_InitStruct.Pin = GPIO_PIN_0;
        GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
        GPIO_InitStruct.Pull = GPIO_NOPULL;
        GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;

还是这样,发现2个问题, 读 判断,循环 的时间久了!

hyfwjh 发表于 2016-4-13 17:17:41

xmshao 发表于 2016-4-13 08:43
呵呵 以为多慢呢。

差不多了。可以尝试换换写法。


关于测试可靠性的问题,我准备多次测,取平均
页: [1] 2
查看完整版本: 请教各位大神,关于STM32F301 的读IO电平速度问题