下面我就在做个抛砖引玉,根据ST手册上的内容,简单地综述一下GPIO的功能:
一、共有8种模式,可以通过编程选择:
1. 浮空输入
2. 带上拉输入
3. 带下拉输入
4. 模拟输入
5. 开漏输出——(此模式可实现hotpower说的真双向IO)
6. 推挽输出
7. 复用功能的推挽输出
8. 复用功能的开漏输出
模式7和模式8需根据具体的复用功能决定。
二、专门的寄存器(GPIOx_BSRR和GPIOx_BRR)实现对GPIO口的原子操作,即回避了设置或清除I/O端口时的“读-修改-写”操作,使得设置或清除I/O端口的操作不会被中断处理打断而造成误动作。
三、每个GPIO口都可以作为外部中断的输入,便于系统灵活设计。
四、I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这有利于噪声控制。
五、所有I/O口兼容CMOS和TTL,多数I/O口兼容5V电平。
六、大电流驱动能力:GPIO口在高低电平分别为0.4V和VDD-0.4V时,可以提供或吸收8mA电流;如果把输入输出电平分别放宽到1.3V和VDD-1.3V时,可以提供或吸收20mA电流。
七、具有独立的唤醒I/O口。
八、很多I/O口的复用功能可以重新映射,见:你知道吗?STM32上很多管脚功能可以重新映射。
九、GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。此功能非常有利于在程序跑飞的情况下保护系统中其他的设备,不会因为某些I/O口的配置被改变而损坏——如一个输入口变成输出口并输出电流。
十、输出模式下输入寄存器依然有效,在开漏配置模式下实现真正的双向I/O功能。
关键字:STM32 GPIO 优越功能
引用地址:
STM32 GPIO的十大优越功能综述
推荐阅读最新更新时间:2024-03-16 13:58
STM32 使用SWD方式下载不了程序
下载不了程序往往有很多原因,有可能是keil没有设置好,也有可能是板子问题,我会将两种情况进行总结。 下载不了程序的童鞋,请耐心地看到最下面哦。 一、keil的设置 打开魔法棒,进行如下操作: 1)Device 选择对应的型号,如果没有则去官方下载相应的pack。比如我的板子是F407VE,选择如下。 2)Debug 选择对应的下载器,如J-LINK或ST-LINK。 3)点击Debug 下载器旁边的Settings ,如果下载器驱动是已安装的,并且STM32是正在供电的状态,则会显示: 如果没有显示上述红框内容,则说明很可能你的下载器驱动没有装好,此时则需要查看电脑的设备管理器,看看驱动的安装情况。 4)点击De
[单片机]
11、STM32的ADC的原理与使用(内附代码)
一、ADC的原理及定义 Analog-to-Digital Converter的缩写。中文译名:模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。其实就是一个取样、量化、编码的一个过程。 典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。比如电量、光照传感器等常用。 二、模拟信号 模拟信号是指用连续变化的物理量表示的信息,其信号的幅度,或频率,或相位随时间作连续变化,如目前广播的声音信号,或图像信号等。 三、数字信号 数字信号指幅度的取值是离散的,幅值表示被限制在有限个数值之内。 二进制码就是一种数字信号。二进制码受噪声的影响小,易于有数字电路进行处理,所以得到了广泛
[单片机]
基于STM32的旋转编码器
..\..\SYSTEM\usart\usart.c(1): error: #5: cannot open source input file sys.h : No such file or directory #include ..\sys\sys.h 这样就可以找到路径了 再次编译出现了问题 ..\..\SYSTEM\usart\..\sys\sys.h(3): error: #5: cannot open source input file stm32f10x_lib.h : No such file or directory没有stm32f10x_lib.h这个库函数 怎么办??? 上网查了很多资料,都
[单片机]
Stm32平台UCOSII的简单使用及注意事项
1.与UCOSII有关的几个概念:任务优先级,任务堆栈,任务控制块,任务就绪表和任务调度器 任务优先级,这个概念比较好理解, ucos 中,每个任务都有唯一的一个优先级。优先级是 任务的唯一标识。在 UCOSII 中,使用 CPU 的时候,优先级高(数值小)的任务比优先级低的 任务具有优先使用权,即任务就绪表中总是优先级最高的任务获得 CPU 使用权,只有高优先级 的任务让出 CPU 使用权(比如延时)时,低优先级的任务才能获得 CPU 使用权。 UCOSII 不支 持多个任务优先级相同,也就是每个任务的优先级必须不一样。 任务堆栈,就是存储器中的连续存储空间。为了满足任务切换和响应中断时保存 CPU 寄存 器中
[单片机]
STM32控制舵机转动
舵机型号:SG5010舵机 因为舵机一般是5V工作电压或更高,之前担心STM32 输出管教是3.3V是否能否驱动起来,结果证明是可以的。 使用Time3 的channel 2作为PWM的定时器,输出50HZ方波,脉宽在0.5ms-2.5ms之间。 预分频prescaler设置成7200-1,period设置成200-1.pulse初始值是15,即处在中间位置。 200个period对应20ms,那么可以得到以下对应关系: 脉宽-------------角度----------pulse 0.5ms--------------0度---------5; 1.0ms------------45度---------10; 1.5ms--
[单片机]
STM32生态系统—SBSFU在STM32G0上的实现
安全启动,构建信任链 G0 如何实现安全启动的要求 通过:存储与执行保护,密码技术的集成,环境监测等其它安全措施 X-Cube-SBSFU 密码学技术的集成 生成用户代码签名 签名的基本原理:用户代码的摘要被签名后,作为元数据 // Meta data X-Cube-SBSFU 密码学技术的集成 生成用户代码签名 签名的基本原理:用户代码的摘要被签名后,作为元数据 // Meta data 替换成:用户代码摘要 + 用户代码属性信息,直接作为元数据 // Meta data X-Cube-SBSFU 密码学技术的集成 生成用户代码签名 签名的基本原理:用户代码的摘要被签名后,作为元数据 // Met
[单片机]
初学STM32遇到的一些问题
1.设置工程时,如果忘记了在C/C++选项卡上设置STM32F10X_HD,USE_STDPEFIPH_DRIVER编译时会报如下的错误 Build target 'USART' compiling stm32f10x_it.c... ..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h(96): error: #35: #error directive: Please select first the target STM32F10x device used in your application (in stm32f10x.h file
[单片机]
怎么使用C语言控制硬件
C语言的应用编程在单片机的领域占了很大一部分,使用的比较多的51单片机和STM32单片机都可以使用MDK软件编写固件。 单片机烧写了固件后可以点亮LED灯,可以驱动ADC检测电压,也可以驱动蜂鸣器发声,这就是简单地控制硬件。稍微复杂一点的,可以驱动NRF2401进行无线的连接,也可以使用ESP8266这类wifi芯片连接网络。 接下来,简单地讲讲如何使用C语言控制硬件。 1、电路连接 简单的模块可以直接使用高低电平来控制,比如红外线发射模块,当你在驱动引脚上的电压达到3.3v,就能发出红外线;然后将电平设置为0v,红外线发射就停止了。 一般而言,单片机的引脚输出电压能够达到3.3v,也是可以点亮红外线LED,但是可能会导致
[单片机]