细说IO口

stm32 IO口

每个GPIO引脚都可以由软件配置成输出(推挽或开漏)。输入(带或不带上拉或下拉)或复用的外设功能端。多数GPIO引脚都与数字或模拟的复用外设公用。除了具有模拟输入功能的端口,所有的GPIO引脚都有大电流通过能力。

typedef enum 
{
   GPIO_Mode_AIN = 0x0               // 模拟输入
   GPIO_Mode_IN_FLOATING=0x04        // 浮空输入
   GPIO_Mode_IPD = 0x28              // 下拉输入
   GPIO_Mode_IPU = 0x48              // 上拉输入
   GPIO_Mode_OUT_OD = 0x14           // 开漏输出
   GPIO_Mode_OUT_PP = 0x10           // 推挽输出
   GPIO_Mode_AF_OD = 0x1c            // 复用开漏输出
   GPIO_Mode_AF_PP = 0x18            // 复用推挽输出
   
}

在固件库中,GPIO共有8种细分的工作模式,归为三类;

输入模式;

== 模拟,浮空,上拉,下拉 ==
肖特基触发器(TTL)打开,输出被禁止,可通过输入数据寄存器 GPIOx_IDR读取IO状态。
输入模式可设置为上拉,下拉,浮空,模拟四种。
上拉和下拉–默认的电平尤上拉或者下拉决定。

浮空–电平是不确定的,完全由外部的输入决定(一般接按键时候用的是这个)。

模拟–用于ADC采集。

在这里插入图片描述

输出模式;

推挽,开漏
在这里插入图片描述

推挽模式时–双MOS(P-MOS管 和 N-MOS管)轮流工作,输出数据寄存器 GPIOx_ODR可控制IO输出高低电平。
开漏模式时–只有N-MOS管工作,输出数据寄存器可控制IO输出高阻态或低电平。

高阻态–数字电路中常见的术语,电路的一种输出状态,既不是高电平,也不是低电平,如果高阻态输入下一级电路的话,对下级电路无任何影响,和没接一样,如果用万用表测,可能是高电平,也可能是低电平,随他后面借的东西定。–来自百度百科

复用功能;

输出使能,输出速度可配置,可工作在开漏记推挽模式,但是输出信号源于其他外设,输出数据寄存器GPIOx_OD无效;
输入可用,通过输入数据寄存器可获取IO实际状态,但一般直接用外设的寄存器来获取该数据信号。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
05-31
在Oracle中,PL/SQL是一种编程语言,允许开发人员编写存储过程、函数和触发器等程序对象。这些程序对象可以使用变量存储数据,其中包括全局变量和局部变量。 全局变量是定义在包中的变量,可以在包中的任何过程或函数中使用。在包中定义变量的语法如下: ``` CREATE OR REPLACE PACKAGE package_name AS variable_name datatype; ... END package_name; ``` 在这个包中,变量名为`variable_name`,数据类型为`datatype`。这个变量可以在这个包中的任何过程或函数中使用。 局部变量是在过程或函数中定义的变量,它们的作用域只在这个过程或函数中。在过程或函数中定义变量的语法如下: ``` CREATE OR REPLACE PROCEDURE procedure_name AS variable_name datatype; ... BEGIN ... END procedure_name; ``` 在这个过程或函数中,变量名为`variable_name`,数据类型为`datatype`。这个变量只能在这个过程或函数中使用,不能在其他过程或函数中使用。 全局变量和局部变量都可以存储不同类型的数据,例如数字、字符、日期等。在使用变量之前,需要先声明变量的类型和名称。在程序执行过程中,可以对变量进行赋值、修改等操作。 需要注意的是,在使用全局变量时,需要注意多个程序对象可能会同时访问同一个全局变量,因此需要考虑并发访问的问题。在使用局部变量时,需要注意变量的作用域和生命周期,确保变量只在需要的时候才会分配内存空间,并在不需要时及时释放内存空间,以避免资源的浪费。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小王 -挺忙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值