一、STM32F103C8T6--GPIO
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的更多相关文章
- stm32填坑之旅 - stm32f103c8t6点亮板载贴片蓝色LED
转载请注明:https://www.cnblogs.com/rockyf/p/11691622.html 开篇 开篇一定要精彩,不然路人不理睬!下述是笔者作为arm小白的填坑之旅 没错,这个之前一直从 ...
- STM32F103C8T6最小板搞定CMSIS-DAP和SWO功能
转载:http://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=616081&extra=page%3D&am ...
- stm32F103C8T6通过写寄存器点亮LED灯
因为我写寄存器的操作不太熟练,所以最近腾出时间学习了一下怎么写寄存器,现在把我的经验贴出来,如有不足请指正 我使用的板子是stm32F103C8T6(也就是最常用的板子),现在要通过写GPIO的寄存器 ...
- [转]: stm328种GPIO模式
[原创]:这段时间开始研究stm32,今天撸着一段代码一直追,追到了GPIO口模式的枚举类型这里,遂去网上查看这8种模式到底是什么,网上一查,看到了一个答案被很多博主转载或者原创,那我也就不重复废话了 ...
- 基於tiny4412的Linux內核移植--- 中斷和GPIO學習(3)
作者 彭東林 pengdonglin137@163.com 平臺 tiny4412 ADK Linux-4.4.4 u-boot使用的U-Boot 2010.12,是友善自帶的,爲支持設備樹和uIma ...
- 基於tiny4412的Linux內核移植--- 中斷和GPIO學習(2)
作者 彭東林 pengdonglin137@163.com 平臺 tiny4412 ADK Linux-4.4.4 u-boot使用的U-Boot 2010.12,是友善自帶的,爲支持設備樹和uIma ...
- 基於tiny4412的Linux內核移植--- 中斷和GPIO學習(1)
作者 彭東林 pengdonglin137@163.com 平臺 tiny4412 ADK Linux-4.4.4 u-boot使用的U-Boot 2010.12,是友善自帶的,爲支持設備樹和uIma ...
- STM32f10xxx 之 GPIO口配置
背景 配置stm32f103使其完成PWM输出的过程中,在配置GPIO口的时候,按照习惯配置GPIO口的speed为50MHZ,突然就意识到,为什么大部分例程习惯配置为50MHZ,而不是其它值,即有了 ...
- android gpio口控制
android gpio口控制 GPIO口控制方式是在jni层控制的方式实现高低电平输出,类似linux的控制句柄方式,在linux系统下将每个设备看作一个文件,android系统是基于linux内 ...
- STM32F412应用开发笔记之二:基本GPIO控制
NUCLEO-F412ZG板子上的元器件并没有完全焊接,除去ST-LINK部分和电源部分后,还有用一个USB主机接口,三个LED灯和两个按钮,不过很多功能引脚都已经引到了插针.查看原理图可发现,由原理 ...
随机推荐
- 各种好用的免费快递物流API 接口分享
全国快递物流查询:1.提供包括申通.顺丰.圆通.韵达.中通.汇通等 600+快递公司在内的快递物流单号查询.2.与官网实时同步更新.3.自动识别快递公司. 全国快递物流地图轨迹查询:[H5 物流轨迹. ...
- js通过文件路径下载文件而不跳转页面
js通过文件路径下载文件,而页面不发生跳转 一.js下载文件而页面不进行跳转 1)方法一: 通过a标签触发文件流形式,代码如下: let url = 'http://xxxxx.zip' fetch( ...
- 人脸识别 face detect & recognize
前言 最近有一个项目要升级. 它是一个在线教育的 web app. 由于学生年龄小, 不适合用 username/password 这种方式做登入. 所以项目开始之初是使用 RFID 来登入的. 但由 ...
- Hadoop完全分布式搭建,基于乌班图系统
因为现在集成的工具很多,建议在接触这一块的过程中还是自己找几个主机,亲手搭一遍集群,更好的熟悉底层!本文只是搭建的过程没有理论!手搭集群时先将各节点网络.ssh配置好!然后在一台机子上操作配置文件,直 ...
- placement new --特殊的内存分配
placement new 是 C++ 中的一种特殊的内存分配技术,用来在指定的内存地址上直接构造对象.与普通的 new 运算符不同,placement new 并不分配新的内存,而是在已经分配好的内 ...
- 从SQL Server过渡到PostgreSQL:理解模式的差异
从SQL Server过渡到PostgreSQL:理解模式的差异 前言 随着越来越多的企业转向开源技术,商业数据库管理员和开发者也逐渐面临向PostgreSQL迁移的需求. 虽然SQL Server和 ...
- [快速阅读八] HDR->LDR:Matlab中tonemapfarbman函数的解析和自我实现。
最近受朋友的委托,想自己实现Matlab里的一个HDR转LDR的函数,函数名是tonemapfarbman,乘着十一假期,稍微浏览下这个函数,并做了一点C++的实现和优化. 为了看到这个函数的效果,需 ...
- AMBA总线架构简介
于是乎,我们想到了总线,用一个统一的接口协议,设计出一个符合要求的总线,然后将ARM核和各种外设模块挂载在总线上,这样,命令和数据似乎便可以在CPU和外设之间自由穿梭. 1 AMBA总线 AMBA,英 ...
- Vue 如何实现组件切换的时候,让组件缓存,不会被销毁
使用场景:我们开发项目的时候,会遇到组件之间的切换,一般都是创建组件销毁组件来回切换 :但是现在需求是切换组件的时候,另一个组件不会销毁: 基于这个需求 ,我们使用 keep-live 组件包裹起来要 ...
- 【信创问题】解决东方通(TongWeb)报错 java.lang.NoClassDefFoundError: javax/persistence/spi/PersistenceProvider
写在前边 今天帮现场同事定位问题,情况是项目同事使用东方通(TongWeb7.0)部署公司项目时,出现以下报错导致服务启动失败. 简单排查了下发现:war包内WEB-INF/lib/javax.per ...