1.上拉和下拉输入模式:
提供一个默认的输入电平,对与一个数字的端口,不是高电平就是低电平。如果输入什么都不接,那么输入就会处于一种浮空的状态(极易被改变状态),引脚的输入电平极易收到外界干扰而改变。
上拉输入模式:默认高电平输入模式
下拉输入模式:默认低电平输入模式
2.施密特触发器:
对电压进行整形,可以有效避免因信号波动造成的输出抖动的现象;如果输入电压大于 某一阈值,输出就会升为高电平,如果输入电压小于某一阈值,输出就会瞬间将为低电平
3.推挽、开漏、关闭
- 推挽:P-MOS和N-MOS均有效。数据寄存器为1,上管导通,下管断开,输出直接接到VDD,输出高电平;数据寄存器为0,上管断开,下管导通,输出直接接到VSS,就是输出低电平。 这种模式下,高低电平均有较强的驱动能力,所以推挽输出模式也叫强推输出模式,在该模式下,STM32对IO口有绝对的控制权,高低电平都是由STM32说了算。
- 开漏:P-MOS输出无效,只有N-MOS在工作。数据寄存器位1,下管断开,这时输出相当于断开,也就是高阻模式;数据寄存器为0时下管导通,输出直接接到VSS,也即是输出低电平。 这种模式下只有低电平有驱动能力,高电平时没有驱动能力的。开漏模式可以作为通信协议的驱动方式,多机通信的情况下,该模式可以避免各个设备的相互干扰。也可输出5V电平信号
- 关闭:引脚配置为输入模式,两个MOS管均无效,也就是输出关闭,端口的电平由外部信号来控制
4.如果通过输出数据寄存器进行控制,就是普通的IO口输出,
写数据寄存器的某一位就可以操作某个端口
5.位设置/清除寄存器,可以单独输出数据寄存器的某一位,而不影响其他位
GPIO模式
- 上拉、下拉、浮空输入结构
- 模拟输入
- 开漏、推挽输出
一个 端口只能有一个输出,但可以有多个输入 - 复用开漏、推挽
高电平弱驱动,低电平强驱动(一般单片机)
操作STM32的GPIO一共需要3个步骤:
- 使用RCC开启GPIO时钟(最常用 RCC_AGB, RCC_APB2, RCC_APB1)
- 使用GPIO_init函数初始化时钟
- 使用输入或输出的函数控制GPIO口
GPIO_Mode_AIN(Analog IN) 模拟输入
GPIO_Mode_IN_FLOATING 浮空输入
GPIO_Mode_IPD(In Pull Down) 下拉输入
GPIO_Mode_IPU(In Pull Up) 上拉输入
GPIO_Mode_Out_OD(Out Open Drain) 开漏输入
GPIO_Mode_Out_PP(Out Push Pull) 推挽输出
GPIO_Mode_AF_OD(Atl Open Drain) 复用开漏
GPIO_Mode_AF_PP(Alt Push Pull) 复用推挽
(他用推挽输出,但我没理解是啥意思)
(这里气死我了,这个板子要超大力的摁在面包板上,才有反应)
推挽输出高低电平都有驱动能力
开漏输出仅有低电平由驱动能力
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!
ics/618654289)
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!