你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
hyfwjh 提问时间:2016-4-12 00:30 /
最近用TM32F301 的读IO电平,发现速度很慢!
while(1)  
{
         if(((GPIOB->IDR)&0x1)!=0)                  break;       

}
         GPIOA->BSRRL = 0x1;

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


谢谢!
<
收藏 评论15 发布时间:2016-4-12 00:30

举报

15个回答
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
呵呵 以为多慢呢。

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

关于测试可靠性的问题,我准备多次测,取平均
12下一页

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版