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. 页面多次跳转加载时,window.onscroll方法失效问题解决

    1. vue mounted 方法中,写有滚动监听方法,为A页面 window.scroll = function () { .... } 从A页面跳转到B页面,再从B页面跳转回A页面, window ...

  2. 肉夹馍(Rougamo)4.0.1 异步方法变量调试修复与IoC系列扩展

    肉夹馍(https://github.com/inversionhourglass/Rougamo),一款编译时AOP组件,无需在应用启动时进行初始化,也无需繁琐的配置:支持所有种类方法(同步和异步. ...

  3. AI图像放大工具,图片放大无所不能

    AI图像放大工具,如ESRGAN,对于提高由Stable Diffusion生成的AI图像质量至关重要.它们被广泛使用,以至于许多Stable Diffusion的图形用户界面(GUI)都内置了支持. ...

  4. 2023.7.2-3-4Mssql xp_cmdshell提权

    1.概念 Mssql和SQL sever的一个产品的不同名称.都属于微软公司旗下.而上述Mssql xp_cmdshell提权也属于数据库提权的一种. 主要依赖于sql server自带的存储过程. ...

  5. C++: 虚函数,一些可能被忽视的细节

    C++: 虚函数,一些可能被忽视的细节 引言:关于C++虚函数,对某些细节的理解不深入,可能导致我们的程序无法按预期结果运行,或是表明我们对其基本原理理解不够透彻.本文详细解答以下几个问题:实现多态, ...

  6. 使用js闭包实现可取消的axios请求

    在平常开发中,经常会遇到重复请求的情况,也许是因为网络问题,也许是因为接口问题等等,传统做法是客户端采用防抖来限制用户发送接口的频率,一般出个loading转圈圈的形式, 但是很少使用取消请求的做法, ...

  7. 深度学习环境安装-conda-torch-Jupyter Notebook

    conda的安装 为什么要安装这个,它是什么? 它是一个管理环境的,当我们跑项目的时候,往往这些项目所需要的pickets库和环境是不同的,这时候如果自己的电脑里面只有一个版本的库的话,就运行不了,比 ...

  8. 【笔记】Tapable源码解析图以及webpack怎样实现一个插件plugin

    Tapable源码解析图,如图所示: 一个webpack plugin由一下几个步骤组成: 一个JavaScript类函数. 在函数原型 (prototype)中定义一个注入compiler对象的ap ...

  9. InfoTS: 具有信息感知增强的时间序列对比学习《Time Series Contrastive Learning with Information-Aware Augmentations》(对比学习、信息感知增强、高保真、多样性、信息论-信息瓶颈、元学习器)(没看懂,还需要再回顾)

    现在是2024年5月23日,14:30,开始看论文. 论文:Time Series Contrastive Learning with Information-Aware Augmentations ...

  10. MDC – Get Started

    前言 Angular Material 为了更好的和 Material Design 保持一致, 放弃了自己开发, 改而使用 wrapping MDC 的方式来维护 Angular Material. ...