STM32--GPIO学习

来源:互联网 发布:mysql命令行导入数据库 编辑:程序博客网 时间:2024/05/16 10:33

摘自:http://blog.csdn.net/wangxiaobupt/article/details/18150043

八种模式:

(1)GPIO_Mode_AIN 模拟输入   //一般用在ADC上
(2)GPIO_Mode_IN_FLOATING 浮空输入     //高低电平不确定,一般用在数据传输,读取电平高低
(3)GPIO_Mode_IPD 下拉输入   //默认低电平,接下拉电阻
(4)GPIO_Mode_IPU 上拉输入   //默认高电平,接上拉电阻
(5)GPIO_Mode_Out_OD 开漏输出    //若接上拉电阻,为高电平,否则为低电平。吸电流能力强。实现IIC的线与,还可以通过改变上拉电阻改变输出电平。
(6)GPIO_Mode_Out_PP 推挽输出    //可输出高低电平
(7)GPIO_Mode_AF_OD 复用开漏输出    //可开启第二功能的开漏
(8)GPIO_Mode_AF_PP 复用推挽输出    //可开启第二功能的推挽
 
 
补:
开漏形式的电路有以下几个特点
1.     利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很下的栅极驱动电流
2.     一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。比如加上上拉电阻就可以提供TTL/CMOS电平输出等。(上拉电阻的阻值决定了逻辑电平转换的沿的速度 。阻值越大,速度越低功耗越小,所以负载电阻的选择要兼顾功耗和速度。
3.     OPEN-DRAIN提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。所以如果对延时有要求,则建议用下降沿输出。
 
编程:

1.定义GPIO结构体变量 GPIO_InitTypeDef  GPIO_InitStructure;
2.开启GPIO相应的时钟 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);  //使能PB,PE端口时钟
3. 给要用的IO初始化
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;     //LED0-->PB.5 端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   //IO口速度为50MHz
4. 初始化端口
GPIO_Init(GPIOB, &GPIO_InitStructure);      //根据设定参数初始化GPIOB.5
5. 初始化结束后,可按需求置高或低。GPIO_SetBits(GPIOB,GPIO_Pin_5);       //PB.5 输出高
6.还可以读电平  GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_5)  //读取E5口的电平。
0 0
原创粉丝点击