请教各位大神,关于STM32F301 的读IO电平速度问题
最近用TM32F301 的读IO电平,发现速度很慢!while(1)
{
if(((GPIOB->IDR)&0x1)!=0) break;
}
GPIOA->BSRRL = 0x1;
当读到PB0为高电平时,退出,然后用PA0输出1,来示波器观察,然后,发现居然有240ns的时差!!
请教大家,这是为何?按72M算,也有14ns一条指令的速度,但是这里居然240!为什么呢?搞了几天,一直没解决
如果想要最快的识别PB0为高电平的方法是?清大家指点!
谢谢!
你看下汇编是不是不止一条指令 看一下IO输出的配置。 creep 发表于 2016-4-12 09:15
你看下汇编是不是不止一条指令
看了 汇编大概4-5条,但是这样算来 不该240ns啊 安 发表于 2016-4-12 09:37
看一下IO输出的配置。
都有配置输出为高速的,读就没有配置高速了 呵呵 以为多慢呢。
差不多了。可以尝试换换写法。
while (((GPIOB->IDR)&0x1)==0) ;
GPIOA->BSRRL = 0x1;
另外,这么快的速度,你的测量可靠不?
最高50M,楼主看一下IO的配置频率 xmshao 发表于 2016-4-13 08:43
呵呵 以为多慢呢。
差不多了。可以尝试换换写法。
哦 因为测一个时间为 600ns的 ,现在误差在240ns,所以 太慢了, 开始用这个写法,也是这样, 安 发表于 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个问题, 读 判断,循环 的时间久了! xmshao 发表于 2016-4-13 08:43
呵呵 以为多慢呢。
差不多了。可以尝试换换写法。
关于测试可靠性的问题,我准备多次测,取平均
页:
[1]
2