STM32—GPIO

最近学习完了STM32系列单片机,所以准备对所学习的知识进行总结,以便以后查阅。
文章的单片机以
MCU:STM32F103C8T6
标准准库:V3.5.0
开发环境:Keil5

STM32-GPIO

一、GPIO模式

GPIO共有八种模式,输入和输出分别四种。

GPIO输入模式模式
GPIO_Mode_AIN模拟输入
GPIO_Mode_IN_FLOATING浮空输入
GPIO_Mode_IPD下拉输入
GPIO_Mode_IPU上拉输入
GPIO输出模式模式
GPIO_Mode_Out_OD开漏输出
GPIO_Mode_Out_PP推挽输出
GPIO_Mode_AF_OD复用开漏输出
GPIO_Mode_AF_PP复用推挽输出

1.1 GPIO输入模式

  1. 浮空输入(GPIO_Mode_IN_FLOATING):空闲时,IO状态不确定,由外部决定。
  2. 上拉输入(GPIO_Mode_IPU):空闲时,IO高电平
  3. 下拉输入(GPIO_Mode_IPD):空闲时,IO低电平
  4. 模拟输入(GPIO_Mode_AIN):专门用于ADC与DAC的输入与输出

1.2 GPIO输出模式

  1. 开漏输出(GPIO_Mode_Out_OD):不能输出高电平,必须有外部或(内部)上拉才能输出高电平
  2. 复用开漏输出(GPIO_Mode_AF_OD):与普通的开漏输出一样,输出由单片机外设控制
  3. 推挽输出(GPIO_Mode_Out_PP):可以输出高低电平,驱动能力强
  4. 复用推挽输出(GPIO_Mode_AF_PP):与普通的推挽输出一样,输出由单片机外设控制

Note:

  1. 在GPIO配置为输出模式时,依然可以读取外部的输入信号
  2. F1在输出模式。禁止使用内部上下拉电阻,F4/F7/H7输出模式,可以使用内部上下拉电阻。

二、初始化GPIO

在STM32中使用大部分外设都需要进行初始化

  1. 使能GPIOA时钟
  2. 引脚模式->引脚速度->选择引脚
void GPIO_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//1. 初始化时钟
	GPIO_InitTypeDef GPIO_InitStructure;//GPIO结构体
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//上拉输入
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_5; // A3 A5
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 引脚速度
	GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化
}

三、GPIO读与写

3.1 写GPIO

	GPIO_SetBits(GPIOA,GPIO_Pin_0);//输出高电平
	GPIO_ResetBits(GPIOA,GPIO_Pin_0);//输出电平
    GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)1);//输出高电平

3.2 读GPIO

GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_11);
GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_11);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值