stm32入门GPIO初始化

STM32F103的开发板有7组IO口,每组IO口有16个IO,总共这块板子有112个IO口

GPIO的工作模式主要有八种:4种输入方式,4种输出方式

(1)GPIO_Mode_AIN 模拟输入 (应用ADC模拟输入,或者低功耗下省电)

(2)GPIO_Mode_IN_FLOATING 浮空输入 (浮空就是浮在半空,可以被其他物体拉上或者拉下,可以用于按键输入)

(3)GPIO_Mode_IPD 下拉输入 (IO内部下拉电阻输入)

(4)GPIO_Mode_IPU 上拉输入 (IO内部上拉电阻输入)

(5)GPIO_Mode_Out_OD 开漏输出(开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行)

(6)GPIO_Mode_Out_PP 推挽输出 (推挽就是有推有拉电平都是确定的,不需要上拉和下拉,IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的 )

(7)GPIO_Mode_AF_OD 复用开漏输出(片内外设功能(I2C的SCL,SDA))

(8)GPIO_Mode_AF_PP 复用推挽输出 (片内外设功能(TX1,MOSI,MISO.SCK.SS))

GPIO的初始化步骤

1.使能GPIOX时钟

2.指明GPIOX的位,这一位的速度大小以及格式

3.调用GPIOX的初始化函数,进行初始化

4.调用GPIO-setbits函数,进行相应位的置位

example:LED_Init的GPIO初始化

/************************************************************/
//对于单个GPIO口的初始化

GPIO_InitTypeDef GPIO_InitStructure;

//使能GPIOA时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

//设置GPIOA参数:管脚,工作模式,反转速率

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

//调用初始化函数,根据设定参数初始化

GPIO_Init(GPIOA,&GPIO_InitStructure)

//调用GPIO_SetBits函数置位GPIO的相应的引脚

GPIO_SetBits(GPIOA,GPIO_PIN_0);





/************************************************************/
//对于多个GPIO口的初始化

GPIO_InitTypeDef GPIO_InitStructure;

//使能GPIOA,GPIOE时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);

//设置GPIOA,GPIOE参数:管脚,工作模式,反转速率,

//调用初始化函数,根据设定参数初始化

//调用GPIO_SetBits函数置位GPIO的相应的引脚

//先设置GPIOA

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;

GPIO_InitStructure.GPIO_Pin_Mode = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_SetBits(GPIOA,GPIO_Pin_4);

//再设置GPIOB

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;

GPIO_InitStructure.GPIO_Pin_Mode = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOE,&GPIO_InitStructure);

GPIO_SetBits(GPIOE,GPIO_PIN_3);

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值