野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11293|回复: 15

STM32F103VET6GPIO配置为输出问题

[复制链接]
发表于 2021-10-18 14:45:05 | 显示全部楼层 |阅读模式
STM32F103VET6GPIO配置为输出时,要开启对应的GPIO口时钟,要配置输出速度。这个输出速度的10M、2M、50M具体怎么理解?给这个GPIO的ODR寄存器写入0xFFFF,配置为10M是不是可以理解为,这个口以10M的频率输出高电平,此时输出低电平吗?这个是个什么波?请求指点
回复

使用道具 举报

发表于 2021-10-18 19:12:50 | 显示全部楼层
这个在HAL库开发GPIO章节讲到了,视频里说是高低电平切换的频率。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-18 19:21:00 | 显示全部楼层
谢谢你的回复。但是ODR输出寄存器已经置1的话,高低电平切换是什么意思呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-18 19:51:39 | 显示全部楼层
“输出速度可配置,有2MHz\10MHz\50MHz的选项。此处的输出速度即I/O支持的高低电平状态最高切换频率,支持的频率越高,功耗越大,如果功耗要求不严格,把速度设置成最大即可。 ”ODR已经使得GPIO输出为高电平了,它这里高低电平切换是个啥?
回复 支持 反对

使用道具 举报

发表于 2021-10-22 09:33:08 | 显示全部楼层
这个是设置的最大频率,现在是点灯,当你用在接口上的时候    可能就有几十M
回复 支持 反对

使用道具 举报

发表于 2021-10-24 14:13:54 | 显示全部楼层
successwanglei 发表于 2021-10-18 19:21
谢谢你的回复。但是ODR输出寄存器已经置1的话,高低电平切换是什么意思呢? ...

高低电平的切换频率可以体现响应的速度
输出速度越慢就代表了响应越慢
比如你的一个器件要接收一个低电平到高电平的启动信号,那你配置不同的输出速度,器件的响应时间就不一样
回复 支持 反对

使用道具 举报

发表于 2021-10-25 18:01:10 | 显示全部楼层
其实准确来说那些是IO口的输出带宽
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-25 19:57:40 | 显示全部楼层
一级菜鸟 发表于 2021-10-24 14:13
高低电平的切换频率可以体现响应的速度
输出速度越慢就代表了响应越慢
比如你的一个器件要接收一个低电平 ...

谢谢你大神!!!我主要的问题是:已经通过输出寄存器使得GPIO的某个端口已经输出为高电平了,那它现在的高低电平切换什么?我的意思是输出为1,就不切换到0了,还是不理解它这个高低电平切换。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-25 20:12:12 | 显示全部楼层
一级菜鸟 发表于 2021-10-24 14:13
高低电平的切换频率可以体现响应的速度
输出速度越慢就代表了响应越慢
比如你的一个器件要接收一个低电平 ...

你好!这个问题是不是可以这么理解:所谓GPIO端口的输出速度,是指某个端口可以支持最高的高低电平切换频率,是用的它切换时,才有高低电平切换,用不到这个高低电平切换时,它要么一直输出高电平,要么一直输出低电平,要么输出高阻态?你上面的回答是涉及到了高低电平切换了,我意思是比如点灯,这时候它这个端口是高低电平切换吗?还是一直是高电平或者一直是低电平?
回复 支持 反对

使用道具 举报

发表于 2021-10-26 12:12:43 | 显示全部楼层
本帖最后由 一级菜鸟 于 2021-10-26 12:15 编辑
successwanglei 发表于 2021-10-25 20:12
你好!这个问题是不是可以这么理解:所谓GPIO端口的输出速度,是指某个端口可以支持最高的高低电平切换频 ...

就拿你这个点灯来说,假设你的IO口现在是高电平
灯要是低电平才能点亮,你配置IO口不同的输出速度,灯点亮的时间是不同的
只不过肉眼无法察觉
如果一个IO口一直输出一个电平就没有输出速度之说了,可以参考以下文章
STM32的GPIO配置不同输出速度会有什么影响?_strongerHuang-CSDN博客


回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-26 14:32:34 | 显示全部楼层
一级菜鸟 发表于 2021-10-26 12:12
就拿你这个点灯来说,假设你的IO口现在是高电平
灯要是低电平才能点亮,你配置IO口不同的输出速度,灯点亮 ...

谢谢!理解了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-26 14:56:29 | 显示全部楼层
一级菜鸟 发表于 2021-10-26 12:12
就拿你这个点灯来说,假设你的IO口现在是高电平
灯要是低电平才能点亮,你配置IO口不同的输出速度,灯点亮 ...

再麻烦大神你解释一下。我们假设程序中输出数据寄存器使GPIO口输出低电平,这个端口的输出速度又配置为10M,按照你的理解,这个GPIO端口以10M的速度在高低电平切换中,其实灯是一亮一灭的,只是人眼无法识别,以为它一直输出低电平,一直点亮中。我很想知道,是什么使得该端口会有高电平输出的那段时间的(尽管高电平时间很短,10M的话是一秒有1000万次切换,它的周期为0.1uS,那么该口就会有0.05uS的低电平持续,0.05uS的高电平持续,该口是这种方波输出吗?这种现象和ODR使得该口为低电平的现象冲突吗?)请解释一下!谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-26 15:02:52 | 显示全部楼层
就拿点灯来说,假设是低电平点亮,是什么使得该口会出现高电平?不然就没有高低电平切换一说。
回复 支持 反对

使用道具 举报

发表于 2021-10-26 16:20:39 | 显示全部楼层
successwanglei 发表于 2021-10-26 14:56
再麻烦大神你解释一下。我们假设程序中输出数据寄存器使GPIO口输出低电平,这个端口的输出速度又配置为10 ...

你理解错我的意思了
你这样像是在描述PWM信号
回复 支持 反对

使用道具 举报

发表于 2021-10-26 16:22:56 | 显示全部楼层
successwanglei 发表于 2021-10-26 14:56
再麻烦大神你解释一下。我们假设程序中输出数据寄存器使GPIO口输出低电平,这个端口的输出速度又配置为10 ...

一直输出低电平就没有电平的切换呀
切换就是意味着改变
没有改变就没有切换速度这一说
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-26 19:58:42 | 显示全部楼层
一级菜鸟 发表于 2021-10-26 16:22
一直输出低电平就没有电平的切换呀
切换就是意味着改变
没有改变就没有切换速度这一说 ...

理解理解!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 08:53 , Processed in 0.036016 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表