03:stm32的引脚GPIO

1、芯片的引脚分布

   STM32F103C8T6这款芯片一共有48个引脚,他们分为了特殊功能引脚普通的IO引脚。其中特殊功能的引脚有如下几个:
在这里插入图片描述
如图:被红色框住的就是特殊功能的引脚,包括了3个供电引脚,晶振,复位,下载,启动配置。而被黑色框住的就是普通功能引脚,未被特化,可编程。

  • 其中普通功能引脚一共有35个,我们将他分为3组:分别为PA,PB,PC。其中PA(0~15)一共16个引脚,PB(0~15)一共16个引脚,PC(13~15)一共3个引脚。我们通过编程实现这35个引脚实现输入输出进而实现需要的功能

在这里插入图片描述

在这里插入图片描述
如STM32F103C8T6的最小系统板的引脚图所示,其中被红色框住的就是普通的引脚IO口,用于编程。

2、IO复用与重映射

   如最小系统板的引脚功能图所示。引脚的输出分为通用功能,复用功能,和重映射功能。其中输入没有分为这些功能,输入分为上拉输入,下拉输入,浮空输入,模拟输入

  • 通用功能输出: 引脚就是一个普通的IO口,由芯片CPU直接控制它的输入/输出高电平/低电平(GPIO_Mode_Out_XX)。
  • 复用功能输出: stm32中不同的片上外设的功能引脚固定在不同的输入输出引脚上面。例如串口通信1的输入Rx为PA10,输出引脚Tx为PA10。我们需要使用串口通信1时,引脚初始化就不再是配置成通用模式,而是需要配置为复用模式(GPIO_Mode_AF_XX)。
  • 复用重映射功能输出: 一个引脚可能连接着多个片上外设。==例如:需要使用串口通信时(USART1),就要使用PA9和PA10。使用定时器TIM1时,也要使用PA9和PA10。当我们想要同时使用串口通信1和定时器TIM1时,就需要重映射一个片上外设的引脚。

在这里插入图片描述

  • 重映射时:当我们同时要使用USART1和TIM1时,他们都在PA9和PA10引脚上面,所以我们需要将一个片上外设重映射到另外的引脚上面去,我们打开PB6和PB7的重映射功能,就是USART1。这样就能同时使用USART1和TIM1了。

在这里插入图片描述

3、片上外设GPIO

3.1、GPIO的寄存器组

   GPIO是控制引脚输入输出的片上外设,有GPIOA,GPIOB,GPIOC等等。芯片CPU和其他的片上外设与GPIO连接之间存在着GPIO寄存器,通过配置这些寄存器来控制IO引脚。

在这里插入图片描述
如图:GPIO寄存器有配置寄存器,一共有16个格子对应一组的16个引脚,每个格子用于配置一个引脚的参数,具体是什么不用了解。

  • 输入寄存器IDR:它也是16个格子,对应的是一组的16个引脚,例如:如果IDR的最低位是0,则代表Px0引脚输入的是低电平。

  • 输出寄存器ODR:它也是16个格子,对应的是一组的16个引脚,例如,给寄存器最低位写入1,则代表Px0引脚的输出高电平。

3.2、8种工作模式

   GPIO一共有8种工作模式,分别为输出推挽,输出开漏,复用推挽,复用开漏。上拉输入,下拉输入,浮空输入,模拟输入

在这里插入图片描述

  • 通用输出推挽模式
    在这里插入图片描述
    如图:
       程序写1时:上面的开关闭合,下面的开关打开,上面PMOS导通,输出一个高电平
       程序写0时:上面的开关打开,下面的开关闭合,上面NMOS导通,输出一个低电平
    总结:程序写1,输出高电平。程序写0,输出低电平;所以0和1都有驱动引脚的能力。(程序写入,也就是写入输出寄存器ODR)

  • 通用输出开漏模式
    -

如图:开漏模式时,上面的PMOS一直都是断开的状态。
当程序写0时:下面的NMOS闭合,输出一个低电平
当程序写1时:下面的NMOS也断开,引脚输出是一个高阻抗状态。
总结:程序写1时,引脚为高阻抗,程序写0时,引脚输出低电平;所以只有0才有驱动能力【注】当引脚为高阻抗时,引脚也可以作为输入状态

  • 上拉输入模式
    在这里插入图片描述
    当工作在上拉模式时:上拉电阻的开关闭合,下拉电阻开关断开。
    当IO端口输入0时:寄存器IDR读取为0
    当IO端口输入1时:寄存器IDR读取为1
    当IO端口悬空时: 寄存器IDR读取为1
  • 下拉输入模式
    当工作在下拉模式时:上拉电阻的开关断开,下拉电阻开关闭合。
    当IO端口输入0时:寄存器IDR读取为0
    当IO端口输入1时:寄存器IDR读取为1
    当IO端口悬空时: 寄存器IDR读取为0
  • 浮空输入模式
    当工作在浮空模式时:上拉电阻的开关断开,下拉电阻开关断开。
    当IO端口输入0时:寄存器IDR读取为0
    当IO端口输入1时:寄存器IDR读取为1
    当IO端口悬空时: 寄存器IDR读取不确定,容易被外部电磁波干扰
  • 模拟输入模式
    主要作用于片上外设ADC(模数转换)

3.3、最大输出速度

   最大输出速度:IO允许输出电平的最大切换频率。当输出寄存器写1时,引脚不会立马变为高电平,它有个缓冲时间(图中的上升时间和下降时间)。而这个时间我们可以通过程序来改变,一般有3个挡位。
在这里插入图片描述
   而stm32的最大输出速度有3个挡位:2MHZ,10MHZ,50MHZ。频率最大,上升时间和下降时间越小,输出速度就越快,功耗就越大。
在这里插入图片描述

3.4、GPIO的内部结构

在这里插入图片描述
上半部分的红色框里面的寄存器是IO输入部分。
下半部分的蓝色框里面的寄存器是IO输出部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值