STM32F103C8T6-GPIO学习笔记1

GPIO(General Purpose Input Output)通用输入输出口简介

  1.  可以配置为8种输入输出模式
  2.  引脚电平为: 0V - 3.3V,部分引脚可容忍5V
  3. 输出模式下可以控制端口输出高低电平(驱动LED,蜂鸣器,模拟通讯协议输出时序等)
  4. 输入模式下可以读取端口的高低电平或者电压,(于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等)

GPIO 基本结构 

        在STM32中,所有的GPIO都是挂载在APB2外设总线上。

 图1-1


       图1-2

         STM32 的GPIO寄存器有32位,但是如图1-2     PA0 — PA15 只用了16位, 所以只用到了低16位,而高16位闲置。驱动器用来增强驱动能力  其命名方式为 GPIOA \rightarrow PA  ; GPIOB \rightarrowPB;GPIOC \rightarrow PC


图1-3


        接下来介绍GPIO的8种输入输出模式

                如图1-3 ,可大致将其分为,输入输出 两大部分。  在介绍之前,先看最右边1处的保护电路,作用就是限制I/O输入电压范围在0-3.3V,VDD接 3.3V ,VSS接 0V。 当I/O输入>3.3V 时,上面的二极管会导通;当I/O输入< 0V 时,下面的二极管会导通,从而保护电路。

  1.  浮空输入 :  在图1-3  2处 ,对于数字端口,输入必须是 高/低 电平。如果 2 处上拉电阻和下拉电阻都不接,此时输入会处于一种浮空的状态,引脚的输入电平很容易被外界干扰导致改变。这就是浮空输入。
  2. 上拉输入 :在图1-3  2处 ,如果接入上拉电阻,引脚悬空时,能有上拉电阻(电阻较大)来保证引脚高电平(默认高电平的输入模式)。
  3. 下拉输入 :在图1-3  2处 ,如果接入下拉电阻,引脚悬空时,能有上拉电阻(电阻较大)来保证引脚低电平(默认低电平的输入模式)。

               

        在输出部分,可以由两个地方来进行输出控制,一个是输出数据寄存器(16位),另一个是片上外设

        若通过输出数据寄存器来进行操作,就是普通的I/O口输出,可以通过操作数据寄存器的某一位就可以操作对应的某个端口。 而位设置/清除寄存器可以通过改变输出数据寄存器的某一位而不影响其他位。如 在位设置/清除寄存器 中将某一位设置为1,其他设置为0;那么输出数据寄存器相对应的哪一位会置1/清0,其余不变。

  1. 推挽输出 : 在图1-3  3处,接有两个MOS管(一种电子开关),当选择为推挽输出模式时,P-MOS 和 N-MOS均有效。输出数据寄存器为1时,P-MOS导通,N-MOS断开,输出接VDD,I/O输出高电平;输出数据寄存器为0时,P-MOS断开,N-MOS导通,输出接VSS,I/O输出低电平。 在推挽输出下,STM32对I/O口有绝对的控制权,高低电平都是STM32控制。
  2. 开漏输出 : 在图1-3  3处,此时P-MOS断开,只有N-MOS有效。输出数据寄存器为1时,N-MOS断开,此时输出相当于断开(高阻态模式); 输出数据寄存器为0时,N-MOS导通,输出接VSS,I/O输出低电平。此模式下只有低电平有驱动能力。
  3. 关闭        :在图1-3  3处,P-MOS 和 N-MOS 都不工作,输出关闭,I/O的电平由外部来输入。

        复用开漏输出复用推挽输出同理。

GPIO模式

模式名称

性质

特征

浮空输入

数字输入

可读取引脚电平,若引脚悬空,则电平不确定

上拉输入数字输入可读取引脚电平,内部连接上拉电阻,悬空时默认高电平
下拉输入数字输入

可读取引脚电平,内部连接下拉电阻,悬空时默认低电平

模拟输入模拟输入GPIO无效,引脚直接接入内部ADC
开漏输出数字输出

可输出引脚电平,高电平为高阻态,低电平接VSS

推挽输出数字输出可输出引脚电平,高电平接VDD,低电平接VSS
复用开漏输出数字输出由片上外设控制,高电平为高阻态,低电平接VSS
复用推挽输出数字输出由片上外设控制,高电平接VDD,低电平接VSS


  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: STM32F103C8T6是一款由STMicroelectronics推出的32位ARM Cortex-M3微控制器,它具有丰富的外围设备和强大的处理能力。MAX31865则是一款专为PT100电阻温度传感器设计的温度转换器。 在使用STM32F103C8T6和MAX31865进行PT100温度测量时,首先需要将PT100电阻传感器与MAX31865进行连接。MAX31865有专门的引脚接来与PT100连接,可以实现精准的温度转换。接下来,使用STM32F103C8T6GPIO引脚与MAX31865进行通信,读取和处理MAX31865输出的温度数据。 为了进行温度测量,需要编写相应的软件程序。使用STM32F103C8T6的开发环境和相应的编程语言(比如C语言),可以访问STM32F103C8T6的外设寄存器,配置GPIO引脚以实现与MAX31865的通信。通过读取MAX31865的寄存器,可以获取原始的温度值。然后,利用MAX31865的温度转换算法,将原始温度值转换为实际温度值。 为了进一步提高精度,可以在软件程序中进行温度校准,根据实际的环境条件和电气特性对测量结果进行修正。 总结来说,使用STM32F103C8T6和MAX31865可以实现对PT100温度传感器进行精确的温度测量。通过适当的硬件连接和软件编程,可以获取PT100传感器的温度数据,并进行后续的温度处理和校准。这种方案广泛应用于工业自动化、仪器仪表和温度控制等领域。 ### 回答2: STM32F103C8T6是一款32位ARM Cortex-M3内核的微控制器,适合于各种应用领域。MAX31865是一款专门用于温度测量的精密温度传感器接芯片,可用于PT100类型的温度传感器。 要实现STM32F103C8T6与MAX31865和PT100的温度测量,需要进行以下步骤: 1. 首先,将MAX31865与STM32F103C8T6进行硬件连接。连接将MAX31865的SDO引脚连接到STM32F103C8T6的SPI通信总线的MISO引脚,SDI引脚连接到MOSI引脚,SCK引脚连接到SPI的SCK引脚,并使用适当的GPIO引脚连接芯片的CS引脚。此外,还要确保连接适当的电源和地线。 2. 然后,需要在STM32F103C8T6上配置SPI总线和GPIO引脚。这可以通过编程来完成,使用STM32的开发工具,如Keil或STM32CubeIDE。 3. 在代码中,可以使用相应的SPI库函数来与MAX31865进行通信,例如发送读取和写入命令以及接收温度数据。还可以使用GPIO库函数来控制CS引脚和其他必要的引脚。 4. 在与MAX31865进行通信后,可以将接收到的温度数据转换为实际温度值。根据PT100传感器的特性,可以使用公式或查找表来进行转换。这涉及到将传感器电阻值转换为温度值,具体转换方法可以参考MAX31865和PT100的数据手册。 5. 最后,可以将测量到的温度值显示在适当的显示设备上,如LCD显示器或终端窗。也可以将数据通过无线通信模块发送给其他设备进行处理或监控。 总结而言,为了实现STM32F103C8T6与MAX31865和PT100的温度测量,需要进行硬件连接、配置SPI和GPIO引脚、与MAX31865进行通信、转换数据以及显示结果。这需要编程和电路设计技能,同时需要参考相关的数据手册和文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值