G

GPIO Mode

Xiaoma 学习记录 2024-02-23

一般的GPIO有8种输入输出模式,其中有4种输入,4种输出,在开发中基本上在初始化GPIO口的时候需要用到,对应的参数名为GPIO_Mode。首先贴上GPIO接口电路图:
GPIO

1. GPIO_MODE_AIN 模拟输入

输入信号不经过施密特触发器,此时输入信号为模拟量而非数字量(其他输入都是数字量)。

在数字电路中,脉冲信号往往波动较大不太稳定,所以就需要通过施密特触发器对信号进行整形为稳定的波形,以下图为例:
fix
图中蓝色为真实波形,当信号穿过上界阈值时会被整形为高电平,穿过下界阈值时则被整形为低电平,最终变成了橙色的波形。与蓝色波形相比,橙色波形明显更平稳。(橙色波形的线都是直的,画的时候手抖了所有点弯曲...)

2. GPIO_MODE_IN_FLOATING 浮空输入

3. GPIO_MODE_IPD 下拉输入

4. GPIO_MODE_IPU 上拉输入

5. GPIO-MODE_OUT_OD 开漏输出

6. GPIO_MODE_OUT_PP 推挽输出

7. GPIO_MODE_AF_OD 复用开漏输出

8. GOIO_MODE_AF_PP 复用推挽输出


F4系列

在F4系列中,GPIO模式在代码实现上有点区别,在以上介绍的8种GPIO模式中,实际上包含了输入输出模式和类型。F4系列将二者进行了拆分,GPIO_Mode参数只指定输入输出模式,而增加了GPIO_OType参数指定对应的类型,例如:

// F1
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //GPIOA0
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//推挽复用输出
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //速度100MHz
   GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA0
// F4
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //GPIOA0
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //速度100MHz
   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出
   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; //下拉
   GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA0
PREV
Arm Compiler 5安装

评论(0)

发布评论