一、GPIO
(1)GPIO基本结构
1、 APB2为控制总线,
2、每个GPIO引脚有16个外设含寄存器和驱动器,寄存器和APB2配合完成读取输出电平的功能
其中,寄存器写1,输出高电平;0,低电平//驱动器则增强驱动能力
(2)GPIO位结构
1、右端有两个保护二极管,vdd是3.3v,超过则导通。vss为0v(相对),若输入小于0v,则电流从vss流出,保护电路。
2、右上有两个开关,接vdd,vss,开关可配置:上导通为上拉输入,反之下拉输入,两个都不导通则浮空输入。存在这两种输入模式的原因是让引脚在未接时能有一个相对稳定的电平,上拉3,3v,下拉0v
3,肖特基(施密特)触发器:
对输入电压进行整形,原理如图,可以让波形理想化。两个阈值范围很巧妙哇
4、输入数据寄存器
顾名思义,通过程序读入电平。
5、两条不寻常的“路”
①模拟输入:接adc
②复用功能输入:接其他需要读取端口的外设
6、输出
输出控制有两种方式:①输出数据寄存器②片上外设,二者通过数据选择器链接到输出控制部分。
具体控制解析:①输出数据寄存器:i/o口方式,写某一位就可以操纵某个端口;其左边的位设置/清除寄存器可用来单独操作某一位而不影响其他位。除用这种方式外,还可通过直接读取输出数据寄存器来整体改写,用&=和&=来完成(??????)不太懂。除这两种外,还还还可以用stm的位带操作(??????)通过特定设置好的地址的改写映射到某一位来达到改写的目的。
7Mos开关
分为P/N两种Mos开关,分别连接Vdd和Vss
存在三种模式
①推挽(!!!)输出:此时N/P Mos开关均有效,输出1,则vdd输出高电平;输出0,则vss输出低电平,此时电平全权由stm决定,也称为强推输出模式。
②开漏输出:此时P/Mos关闭,stm只能输出低电平或断路,可以实现通信协议(????),此时外接5v外设可以实现5v输出。
③关闭:此时二者都关闭,电平纯由外部控制。
(3)GPIO模式:通过配置端口的寄存器,(A:这些模式都是通过端口配置高/低寄存器来完成的,手册里有说。而电路内的寄存器是起读取和输出功能的,他们不是来配置模式的)能形成8种不同的模式
①:浮空/上拉/推挽输入:
输入模式下输出驱动是断开的
②模拟输入
ADC模数转化器专属配置(????)
A:使用ADC是接模拟输入就可以了
③推挽/开漏输出:
开漏/推挽模式具体见上。
此时输入端开启?是因为一个端口只能用一个输出但可以有多个输入。
④复用开漏/推挽输出:
二、stm外部设备及电路
(1)LED与蜂鸣器
①左上:低电平驱动式。用面包板设计电路时简化了限流电阻,自己进行的时候要加上。
②左下:高电平驱动式。
在单片机中第一种使用较多,因为不少单片机采用高电平若驱动低电平强驱动的原则,虽然避免了高低电平打架,但是一定程度上削弱了高电平的驱动能力
③右上:基极低电平导通高电平断开PNP,蜂鸣器最好接在集电极。发射级和基极的通断是需要一定电压的,接一个蜂鸣器可能没法开启
④右下:基极低电平断开高电平导通NPN
三、面包板使用方法
正负极横向均联通,中间纵向联通。
四、操作stm32GPIO步骤
①使用RCC开启GPIO时钟
②使用GPIO_Init函数初始化GPIO
③使用输入/输出控制GPIO口