不积小流,无以成江海。
分类: 嵌入式
2023-04-03 09:34:13
https://
mp.weixin.qq.com/s?__biz=MzA3OTM2NzUxOA==&mid=400250581&idx=4&sn=f5184a2aba115c4f50dba1d35ad8bfde&chksm=0d9b6ae43aece3f218122a45b807a2703871b2a60ae43f01a706b5d601d1c97e319c5afd70ff&scene=27
{BANNED}{BANNED}最佳佳近学习了stm32的GPIO的相关操作,发现其GPIO的配置模式有好几种,包括:
1.模拟输入;
2.浮空输入;
3.上拉输入;
4.下拉输入;
5.开漏输出;
6.推挽输出;
7.复用开漏输出;
8.复用推挽输出
如图是GPIO的结构原理图:
初学感觉起来,还是挺复杂的,我在这里想简单的说说自己的理解,希望大家多多交流。
1.模拟输入
从上图我们可以看到,我觉得模拟输入{BANNED}{BANNED}最佳佳重要的一点就是,他不经过输入数据寄存器,所以我们无法通过读取输入数据寄存器来获取模拟输入的值,我觉得这一点也是很好理解的,因为输入数据寄存器中存放的不是0就是1,而模拟输入信号不符合这一要求,所以自然不能放进输入数据寄存器。该输入模式,使我们可以获得外部的模拟信号。
2.浮空输入
该输入状态,我的理解是,它的输入完全由外部决定,我觉得在数据通信中应该可以使用该模式。应为在数据通信中,我们直观的理解就是线路两端连接着发送端和接收断,他们都需要准确获取对方的信号电平,不需要外界的干预。所以我觉得这种情况适合浮空输入。比如我们熟悉的I2C通信。
3上拉输入
上拉输入就是在输入电路上使用了上拉电阻。这种模式的好处在于我们什么都不输入时,由于内部上拉电阻的原因,我们的处理器会觉得我们输入了高电平,这就避免了不确定的输入。这在要求输入电平只要高低两种电平的情况下是很有用的。
4下拉输入
和上拉输入类似,不过下拉输入时,在外部没有输入时,我们的处理器会觉得我们输入了低电平。
5开漏输出
开漏输出,输出端相当于三极管的集电极,所以适合与做电流驱动的应用。要得到高电平,需要上拉电阻才可以。
6推挽输出
推挽输出使用了推挽电路,结合推挽电路的特性,它是由两个MOSFET组成,一个导通的同时,另外一个截至,两个MOSFET分别连接高低电平,所以哪一个导通就会输出相应的电平。推挽电路速度快,输出能力强,直接输出高电平或者低电平。
7复用开漏和复用推挽
我们知道这只是对GPIO的复用而已。使普通的GPIO具有了别的功能。
以上,是我对GPIO几种输入输出模式的理解,欢迎大家和我交流。
另外我还想说说我对位带操作在SRAM中的优势的理解:
Stm32的位带操作在SRAM中的优势是特别明显的,那就是在利用位带操作之后,我们可以对每一个比特进行读写。我们知道之前的处理器中存储数据有固定的对其格式,有字节对齐,字对齐,双字对齐等等,这样的话,如果一个数据只有8位,而采取字对齐的方式的话(16位)就会浪费掉存储空间。但是在有了位带操作之后,我们不用担心这种情况,因为我们可以充分的利用每一比特空间。