STM32 GPIO |CSDN创作打卡

GPIO结构框图

推挽输出(0-3.3):

 在该结构中输入高电平时,上方的P-MOS导通,下方的N-MOS截止,对外输出高电平 。

而在该结构中输入低电平时,N-MOS管导通P-MOS截止,对外输出低电平

当引脚高低电平切换时,两个管子轮流导通,P管负责灌电流N管负责拉电流,使其负载能力和开关速度都比普通的方式有很大的提高。推挽输出的低电平为0伏,高电平为3.3伏。

开漏输出(0-5):

在开漏输出模式时,上方的P-MOS管始终处于截止状态。当输入低电平时,P-MOS管截止,N-MOS管导通,对外输出低电平。

若控制输入为高电平 ,则P-MOS管关闭,N-MOS管处于截止状态,所以引脚既不输出高电平,也不输出低电平,为高阻态。如需要输出高电平(5V),必须在外部接一个上拉电阻。

它具有“线与”特性。也就是说,若有很多个开漏模式引脚连接到一起时,只有当所有引脚都输出高阻态,才由上拉电阻提供高电平,此高电平的电压为外部上拉电阻所接的电源的电压。若其中一个引脚为低电平,那线路就相当于短路接地,使得整条线路都为低电平,0伏。

 输出数据寄存器:

     前面提到的双MOS管结构电路的输入信号,是由GPIO“输出数据寄存器“GPIOx_ODR”提供的,因此我们通过修改输出数据寄存器的值就可以修改GPIO引脚的输出电平。

复用功能输出

    “复用功能输出”中的“复用”是指STM32的其他片上外设对GPIO引脚进行控制,此时GPIO引脚用作该外设的一部分,算第二用途。从其他外设引出来的“复用功能输出信号”与GPIO本身的数据寄存器都连接到双MOS管结构中,通过途中梯形结构作为开关切换选择。

     例如我们使用USART串口通讯时,需要用到某个GPIO引脚作为通讯发送引脚,这个时候就可以把该GPIO引脚配置成USART串口复用功能,由串口外设控制该引脚,发送数据。

相关寄存器配置

STM32F10x共有7组GPIO(从A到G),每组GPIO有16个端口(从0到15)。
每组GPIO端口有以下7个寄存器,每组寄存器可以控制16个I/O口。

  GPIOx_CRL :端口配置低寄存器
  GPIOx_CRH:端口配置高寄存器
  GPIOx_IDR:端口输入寄存器
  GPIOx_ODR:端口输出寄存器
  GPIOx_BSRR:端口位设置/清除寄存器
  GPIOx_BRR :端口位清除寄存器
  GPIOx_LCKR:端口配置锁存寄存器   
 

根据数据手册中列出的每个I/O端口的特定硬件特征, GPIO端口的每个位可以由软件分别配置 成多种模式。

─ 输入浮空      ─ 输入上拉      ─ 输入下拉    ─ 模拟输入    ─ 开漏输出    ─ 推挽式输出

─ 推挽式复用功能   ─ 开漏复用功能

 寄存器配置(以低寄存器配置为例) 

 

 范例:(以库函数为例)

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOC, &GPIO_InitStructure);
	GPIO_SetBits(GPIOC, GPIO_Pin_13);
	GPIO_ResetBits(GPIOC, GPIO_Pin_13);

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

让记忆定格1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值