STM32f103c8t6 32位Cortex-M3内核 RISC处理器,最高主频72MHZ,Flash:64KB,SRAM:20KB

片上外设:

I/O端口:

  • 多达37个GPIO引脚(支持复用功能)。
  • GPIO 端口支持输入、输出、上拉/下拉功能。

定时器:

  • 3 个 16 位通用定时器(支持 PWM 输出)。********
  • 1 个高级定时器(支持多通道 PWM)。

通信接口:

  • 2 个 I2C 接口(支持主从模式)。
  • 2 个 SPI 接口(最大速率 18 MHz)。
  • 3 个 USART 接口(支持串口通信)。
  • 1 个 CAN 总线接口(支持高速通信)。

ADC:

  • 10 路 12 位 ADC 输入通道,支持单次、连续、扫描和不连续转换模式。
  • 最大采样速率 1 MHz,适合实时信号采集。

GPIO:

电气特性:

1、GPIO引脚支持5V容忍(即使供电3.3v,也可以承受5v信号输入)

2、I/O引脚电流驱动能力为20mA(可驱动LED、继电器等小负载)

3、可配置引脚速度:2MHz、10MHZ、50MHZ。适应不同疏导需求的信号。

8种工作模式:

1、浮空输入(Floating input):默认无上拉/下拉电阻,适用于信号可能长时间保持高阻态的应用(高阻态相当于开路,无电流驱动;高阻抗;不会干扰总线或电路)

适用于读取外部设备的信号或用于ADC模拟输入

2

例如:红外避障传感器;ADC输入;IIC总线也可以浮空输入SDA/SCL。

2、输入上拉/下拉(Pull-up/Pull-down input)

上拉:内部连接一个上拉电阻(连接到VCC),使引脚在未受外部信号作用时默认保持高电平。

下拉:内部连接一个下拉电阻(连接到GND),使引脚在未受外部信号作用时默认保存低电平。



3、推挽输出(Push-pull Output)

两种状态:

  • 高电平:当需要输出高电平时,P 型晶体管导通,N 型晶体管关闭,GPIO 引脚输出电压接近 VCC(通常为 3.3V 或 5V)。
  • 低电平:当需要输出低电平时,N 型晶体管导通,P 型晶体管关闭,GPIO 引脚与地(GND)连接,输出 0V。

    互补开关:P 型晶体管和 N 型晶体管交替导通/关断,确保输出电压稳定,不会出现高阻态(除非主动设置为输入模式)。



    推挽输出的特点:
1、高驱动能力:
推挽输出可以提供较大的电流驱动能力,通常可以达到 20mA 甚至更高,这使得推挽输出可以直接驱动 LED、蜂鸣器、继电器 等负载。
2、电平输出明确:
输出的电平要么是接近 VCC 的高电平,要么是接地的低电平,电平状态明确,不存在高阻态,确保信号稳定。
3、功耗相对较低:
在低电平或高电平输出时,推挽输出功耗较低,因为只有一个晶体管导通。/4、不适合总线型通信:
因为推挽输出会主动驱动高或低电平,不适用于 I2C 总线 这类需要多个设备共享同一引脚的场景。推挽输出的强制驱动会导致总线争用(Bus Contention)问题。

4、开漏输出

开漏输出是一种 GPIO 引脚的输出模式,通常用于 多设备共享总线或需要外部电路驱动的场合。在开漏输出模式下,GPIO 引脚只有低电平输出(导通时连接 GND),而没有直接的高电平输出。如果需要高电平,必须外接一个上拉电阻,使引脚在未被拉低时默认保持高电平。

开漏输出的特点
1、支持多设备总线:开漏输出允许多个设备共享同一根数据线,不同设备可以通过拉低总线电平发送信号,而不会造成冲突。这种机制非常适合像 I2C 这样多主从设备共享数据总线的通信协议。
例如:I2C 设备的 SDA 和 SCL 引脚都处于开漏模式,通过外接上拉电阻将总线保持在高电平。任何设备要发送信号时,只需拉低线上的电平,而不是主动输出高电平。这避免了多个设备同时输出高电平和低电平时的冲突(总线争用)。
2、需要外部上拉电阻:开漏输出模式下,GPIO 引脚本身不能输出高电平。因此,需要通过外部上拉电阻确保引脚默认是高电平。
3、可控驱动低电平:开漏输出模式可以拉低电平(接地),这使得它适合控制外部供电设备、LED 和继电器等需要低电平控制的场景。
4、保护设备免受冲突:在某些应用中,开漏输出可以防止多个设备同时驱动总线到不同的电平,避免损坏。

5、模拟输入

模拟输入是指 GPIO 引脚配置为接收模拟信号,并通过 ADC(模数转换器,Analog-to-Digital Converter) 将模拟信号转换为数字信号,供微控制器进行处理。

ADC 分辨率:12 位(输入范围 0V ~ Vref,可转换为 0 ~ 4095 的数字值)。(例如:将3.3V参考电压分成4095份,每一份就是电压的分辨率及 3.3/4095)

模拟输入的注意事项
1、信号处理:由于 ADC 转换可能受到噪声或其他干扰,通常需要对输入的模拟信号进行滤波(如使用硬件低通滤波器或软件平均滤波)。
2、参考电压的稳定性:ADC 转换的精度受参考电压的影响,参考电压(Vref)应尽量稳定,否则会导致 ADC 读数不准确。
3、采样时间的选择:采样时间与信号的响应时间有关,选择适当的采样时间可以提高精度,避免读取过多噪声。
4、电源电压和输入范围:输入电压应在 0 到 Vref 范围内。如果输入信号超过参考电压范围,需要使用分压器降低输入电压。

6、复用推挽输出

复用推挽输出是 GPIO 引脚的一种工作模式,在该模式下,GPIO 引脚不仅可以像普通推挽输出那样输出高电平和低电平,还可以复用为 外设功能引脚,如 USART、SPI、I2C、定时器输出等。通过复用功能,可以将 GPIO 引脚的输出与特定的外设模块关联,以执行特定的通信或控制任务。

7、复用开漏输出

复用开漏输出是 GPIO 的一种工作模式,GPIO 引脚被配置为 开漏输出 并且复用为特定外设功能。在这种模式下,GPIO 引脚可以与某些外设模块(如 I2C、SMBus 等总线型协议)相结合,作为外设功能引脚使用。

一、STM32F103C8T6--GPIO的更多相关文章

  1. stm32填坑之旅 - stm32f103c8t6点亮板载贴片蓝色LED

    转载请注明:https://www.cnblogs.com/rockyf/p/11691622.html 开篇 开篇一定要精彩,不然路人不理睬!下述是笔者作为arm小白的填坑之旅 没错,这个之前一直从 ...

  2. STM32F103C8T6最小板搞定CMSIS-DAP和SWO功能

    转载:http://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=616081&extra=page%3D&am ...

  3. stm32F103C8T6通过写寄存器点亮LED灯

    因为我写寄存器的操作不太熟练,所以最近腾出时间学习了一下怎么写寄存器,现在把我的经验贴出来,如有不足请指正 我使用的板子是stm32F103C8T6(也就是最常用的板子),现在要通过写GPIO的寄存器 ...

  4. [转]: stm328种GPIO模式

    [原创]:这段时间开始研究stm32,今天撸着一段代码一直追,追到了GPIO口模式的枚举类型这里,遂去网上查看这8种模式到底是什么,网上一查,看到了一个答案被很多博主转载或者原创,那我也就不重复废话了 ...

  5. 基於tiny4412的Linux內核移植--- 中斷和GPIO學習(3)

    作者 彭東林 pengdonglin137@163.com 平臺 tiny4412 ADK Linux-4.4.4 u-boot使用的U-Boot 2010.12,是友善自帶的,爲支持設備樹和uIma ...

  6. 基於tiny4412的Linux內核移植--- 中斷和GPIO學習(2)

    作者 彭東林 pengdonglin137@163.com 平臺 tiny4412 ADK Linux-4.4.4 u-boot使用的U-Boot 2010.12,是友善自帶的,爲支持設備樹和uIma ...

  7. 基於tiny4412的Linux內核移植--- 中斷和GPIO學習(1)

    作者 彭東林 pengdonglin137@163.com 平臺 tiny4412 ADK Linux-4.4.4 u-boot使用的U-Boot 2010.12,是友善自帶的,爲支持設備樹和uIma ...

  8. STM32f10xxx 之 GPIO口配置

    背景 配置stm32f103使其完成PWM输出的过程中,在配置GPIO口的时候,按照习惯配置GPIO口的speed为50MHZ,突然就意识到,为什么大部分例程习惯配置为50MHZ,而不是其它值,即有了 ...

  9. android gpio口控制

    android gpio口控制  GPIO口控制方式是在jni层控制的方式实现高低电平输出,类似linux的控制句柄方式,在linux系统下将每个设备看作一个文件,android系统是基于linux内 ...

  10. STM32F412应用开发笔记之二:基本GPIO控制

    NUCLEO-F412ZG板子上的元器件并没有完全焊接,除去ST-LINK部分和电源部分后,还有用一个USB主机接口,三个LED灯和两个按钮,不过很多功能引脚都已经引到了插针.查看原理图可发现,由原理 ...

随机推荐

  1. 【YashanDB知识库】yasql登录报错:YAS-00413

    [问题分类]错误码处理 [关键字]yasql,00413 [问题描述]使用工具设置不同并发迁移数据的过程中,导致yasql登录报错:YAS-00413 [问题原因分析]工具使用与数据库使用资源超过了操 ...

  2. 安装Kubernetes(k8s)保姆级教程---无坑版

    一.安装环境说明 硬件要求 内存:2GB或更多RAM CPU: 2核CPU或更多CPU 硬盘: 30GB或更多 本次环境说明: 操作系统:CentOS 7.9 内核版本:3.10.0-1160 mas ...

  3. STEP: 用于多变量时间序列预测的预训练增强时空图神经网络《Pre-training Enhanced Spatial-temporal Graph Neural Network for Multivariate Time Series Forecasting》(时间序列预测)

    2023年12月27日,看一篇老师给的论文. 论文:Pre-training Enhanced Spatial-temporal Graph Neural Network for Multivaria ...

  4. 常回家看看之house_of_emma

    house_of_emma 前言: 相比较于house_of_kiwi(house_of_kiwi),house_of_emma的手法更加***钻,而且威力更大,条件比较宽松,只需要lagebin_a ...

  5. DOM – Dimension & Coordinate (offset, client, computed, rect)

    前言 很多年前有记入过一篇 box-sizing 和 dom width. 想想也挺可悲的, 那年我是负责后端的, 却要帮着前端去学习这些知识来解决问题... 也好, 现在 full stack, 也 ...

  6. HTML – Native Dialog Modal

    前言 之前介绍 Native Form 的时候有提及过 method="dialog", 但由于它太新了, 所以没去研究. 这篇就介绍一下. Dialog 也好 Modal 也好, ...

  7. Asp.net core 学习笔记之 Microsoft Graph API

    早年如果我们要读写用户得 outlook 内容是比较麻烦的, 要用许多 smtp 之类的方式. 现在终于是有了 http 级的 API 可以 call 了. 不仅仅是 outlook, calenda ...

  8. Tabby,一款老外都在用的 SSH工具,竟然还支持网页操作

    会编程的蜗牛 主要分享java编程,也会涉及其他方向的技术分享. 1篇原创内容 公众号 序言各位好啊,我是会编程的蜗牛,作为java开发者,或者说编程人员,程序员的我们,Linux服务器总是我们一个绕 ...

  9. 第17天:信息打点-语言框架&开发组件&FastJson&Shiro&Log4j&SpringBoot等

    框架:简单代码的一个整合库,如果使用框架就只需要学习使用框架调用即可 如:文件上传功能是需要很多代码来实现的,框架把这个代码进行封封装,调用即可 影响:如果采用框架开发,代码的安全性是取决于框架的过滤 ...

  10. HOG算法的笔记与python实现

    这两篇[1][2]博客写的都非常详细.这里做个笔记记录一下. HOG称为方向梯度直方图(Histogram of Oriented Gradient),主要是为了对图像进行特征提取.所以在传统目标检测 ...