电路设计,软件开发,专业项目团队承接电子产品开发!


ISPRO下载型编程器
火爆销售中

RS232/TTL转换器
全IC串口窃电

RS232/TTL转换线
全IC串口窃电

ByteBlasterMV Cable
CPLD/FPGA并口下载线

ByteBlaster II Cable ISPRO下载型编程器
支持S51/AVR/PIC
超级51开发板套件
前卫实用超值

PC/MCU/CPLD
三合一学习套件

全新万年历方案
AVR单片机开发板
 

Min51单片机仿真机
迷你型

ARM7开发板
仅售260元!
 

RS-232/RS-485双向接口电平转换器  

51单片机升级STM32
火爆销售中
MPLAB-ICD2
火爆销售中
LED51开发板
玩具又名图文显示棒

面板模块/开发板
经济危机明智决择

       

GSM MODEM GSM猫

SMS短信模块 工业级/全自动
火爆销售中

大功率数传电台

高速数传电台

您当前位置:电子技术资料 -> STM32 -> STM32 GPIO配置 ->

祝您阅读愉快!

STM32 IO配置详解及代码例子


类别:技术文章
来源:未知
作者:未知
关键字:IO配置
加入日期:2011-1-9

STM32 IO配置详解及代码例子

IO口模式:

GPIO_Mode_AIN = 0x0, 模拟输入
GPIO_Mode_IN_FLOATING = 0x04, 浮空输入


GPIO_Mode_IPD = 0x28, 带下拉输入
GPIO_Mode_IPU = 0x48, 带上拉输入


GPIO_Mode_Out_OD = 0x14, 表示配置相应管脚为GPIO开漏输出(真双向IO)
GPIO_Mode_Out_PP = 0x10, 通用推挽输出模式


GPIO_Mode_AF_OD = 0x1C, 表示配置相应管脚为复用功能的开漏输出
GPIO_Mode_AF_PP = 0x18 复用功能的推挽输出模式



推挽输出:可以输出高,低电平,连接数字器件;推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止.


开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).
要实现 线与 需要用OC(open collector)门电路.是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,

各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小,效率高。输出既可以向负载灌电流,也可以从负载抽取电流。

//--------------------------------------------------------------------------

但用作纯粹的输出时,可以选用GPIO_Mode_Out_PP,但是有些硬件上有要求用开发射极的结构就要用GPIO_Mode_Out_OD 。

如果既要用于输出,又要接收信号作输入,无需改变该pin的工作模式,只需设定为输入浮点状态GPIO_Mode_IN_FLOATING ,但是读的时候读输入寄存器(GPIOE->IDR)的值。输出值照样设定,不过输出pin脚可能要硬件上 上拉。


/*******************************************************************************

* Function Name : GPIO_Configuration 通用输入输出口配置

* Description : Configures the different GPIO ports.

* Input : None

* Output : None

* Return : None

*******************************************************************************/

void GPIO_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

/* ---------------------------------GPIOA配置--------------------------------*/

// PA09:10 =Tx:Rx 串口0收发接口

/* Configure USART1 Tx (PA.09) as alternate function push-pull */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

/* Configure USART1 Rx (PA.10) as input floating */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA, &GPIO_InitStructure);




/* ---------------------------------GPIOB配置--------------------------------*/


/* ---------------------------------GPIOC配置--------------------------------*/

//PC4,5,6,7 =LED1,2,3,4接口配置

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_Init(GPIOC, &GPIO_InitStructure);


// PC0 =ADC-Channel10模拟输入(接开发板上滑动变阻器)

/* Configure PC.00 (ADC Channel10) as analog input -------------------------*/

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//PC.00为ADC Channel10模拟输入(接滑动变阻器)

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOC, &GPIO_InitStructure);


/* ---------------------------------GPIOD配置--------------------------------*/

// PD11~15; PD3:4 =KEY4-DOWN,UP,LEFT,RIGHT,SEL; KEY2:3

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_11 | GPIO_Pin_12 |

GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOD, &GPIO_InitStructure);


/* ---------------------------------GPIOE配置--------------------------------*/


}


您可能还会关注的相关技术资料:
暂无

中国电子网
www.EC66.com
QQ:34740080 EMAIL:iloveaoe@163.com
最佳浏览:1024*768
Copyright (C) 2001-2010 EC66.COM All Rights Reserved
Aoe/帝国 制作维护
粤ICP备18061901号