STM32入门教程-2023版【3-1】GPIO可配置的几种模式和手册描述
关注?+ 点赞? ?不错过精彩内容
大家好,我是硬核王同学,最近在做免费的嵌入式知识分享,帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作!?
四、端口可以配置的8种模式
前三个模式电路基本一样,区别就是上拉电阻和下拉电阻的连接,在使用浮空输入时,端口一定要接一个连续的驱动源,不能使端口悬空
输入模式下,输出驱动器是断开的,只能输入不能输出,开关闭合对应着三种模式
容忍5V的引脚,保护二极管上面需要做出处理,要不然这里直接接VDD3.3V,外部再接入5V的电压会导致上面的二极管打开,并且产生较大电流,这样是不太妥当的
模拟输入可以说是ADC模数转换器的专属配置了
输出是断开的,输入的施密特触发器也是关闭无效的状态,整个GPIO只剩下这根线有用,也就是从引脚直接接上片上外设,也就是ADC。所以当我们使用ADC时,直接将引脚配置为模拟输入就行了,其他时候一般用不上
下面两者的区别在于,开漏输出的高电平呈现高阻态,没有驱动能力,推挽输出的高低电平都有驱动能力
P-MOS如果无效就是开漏输出,P-MOS和N-MOS有效就是推挽输出。另外,我们可以看到在输出模式下,输入模式同样有效(前面的结构输出模式下,输入模式都是无效的)。这是因为一个端口可以有多个输入,但只能有一个输出。所以当配置成输出模式时,内部顺便输入一下是没问题的
下面两者与上面的区别在于,复用的输出,引脚是由片上外设控制的
这8种模式,除了模拟输入这个模式会关闭数字的输入功能,其他7个模式中所有的输入都是有效的
五、STM32手册中的GPIO
STM32手册一上来就讲了GPIO的八种功能,就是我们上面讲的8种模式,如果哪里有不懂得可以再结合手册理解一下
当我们使用这些片上外设的引脚时,可以参考STM32手册这个表里给的配置
GPIO寄存器描述:GPIO配置寄存器:端口配置寄存器,每一个端口的模式由4位进行配置
16个端口就需要64位,所以这里配置寄存器两个,一个是端口配置低寄存器,一个是端口配置高寄存器
具体怎么配置的,可以参考这个寄存器下面的详细说明,这里还多出了一项GPIO输出的速度,结构图里没有说明速度这个参数,这个GPIO输出速度可以限制输出引脚的最大翻转速度,这个设计是为了降低功耗和稳定性,如果要求不高直接配置成50MHz即可
GPIO寄存器描述:GPIO配置寄存器:端口输入寄存器对应的GPIO位结构是这里
里面低16位对应15~0号引脚,高16位没有使用
GPIO寄存器描述:GPIO配置寄存器:端口输出寄存器
里面低16位对应15~0号引脚,高16位没有使用
GPIO寄存器描述:GPIO配置寄存器:端口位设置/清除寄存器
这个寄存器的高16位是进行位清除的,低16位是进行位设置的
写一就是设置或清除,写0就是不产生影响
GPIO寄存器描述:GPIO配置寄存器:端口位清除寄存器
这个寄存器的低16位的作用和上面端口位设置/清楚寄存器的高16位作用是一样的,这个寄存器存在是为了方便操作设置的,想进行单一的位设置和位清除,那位设置用上面这个寄存器,位清除用下面这个寄存器,因为在设置和清除时,使用的都是低16位的数据,这样就方便一些;如果想使用多个端口的位设置和位清除,那就使用第一个寄存器即可,这样就可以保证位位设置和位清除的同步性。如果对信号的同步性要求不高的话,先进行位设置再进行位清除也是没问题的
GPIO寄存器描述:GPIO配置寄存器:端口配置锁定寄存器
最后一个就是端口配置锁定寄存器,这个可以对端口的配置进行锁定,防止意外更改,使用方法看介绍,这里我们暂时使用的不多
作?者?:硬核王同学
-------?END?--------
关注公众号回复“加群”按规则加入技术交流群 ?回复“1024”查看更多内容
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!