【智能车】RT1064-GPIO输入输出

输入

上拉输入

  • GPIO 引脚配置为上拉输入模式,在默认状态下(GPIO 引脚无输入),读取得的 GPIO 引脚数据为 1,高电平;
  • 上拉输入默认是高电平,外接低电平有影响,故只能用来检测外接低电平。

下拉输入

  • 下拉输入模式与上拉输入模式相反,在默认状态下其引脚数据为 0,低电平,故只能用来检测外接高电平。

浮空输入

  • 浮空输入模式在芯片内部既没有接上拉电阻,也没有接下拉电阻,经由 TTL 触发器输入
  • 配置成这个模式直接用电压表测量其引脚电压为 1 点几伏,这是个不确定值(高、低电平都有可能);可以用来检测外接是高电平,还是低电平
  • 浮空输入模式其输入阻抗较大,一般把这种模式用于标准的通信协议如 I2C、USART 的接收端,作为复用功能输入传送到片上外设模块。

模拟输入

  • 模拟输入模式则关闭了 TTL 触发器,不接上、下拉电阻,经由另一线路把电压信号传送到采用模拟输入的片上外设模块(如传送至 ADC 模块,由 ADC 采集电压信号,所以使用 ADC 外设的时候,必须设置为模拟输入模式);
  • 不管外接是高电平还是低电平,始终是检测到低电平 0,本质上已经没意义了
    此外,当 GPIO 管脚与 DAC 等片上外设模块的模拟输出相连时,为了避免寄生的干扰和额外的功耗,也应该将管脚设置成模拟输入模式。

输出

开漏输出

  • 在开漏输出模式时,如果我们控制输出为 0,低电平,则使 N-MOS 管导通,使输出接地,若控制输出为 1 ,则既不输出高电平,也不输出低电平,为高阻态(高阻态就是电阻很大,或者说是趋向无穷大,用来隔开相当于断开但又不是真的断开);

推挽输出

  • 输出既可以向负载灌电流,也可以从负载抽取电流,推拉式输出既提高电路的负载能力,又提高开关速度
    推挽输出模式默认输出低电平,另外,必须配置引脚输出速率,否则会导致输出紊乱;
    与开漏输出模式类似,推挽输出模式中输入模式结构中的 TTL 触发器也处于开启状态,默认输出低电平,能够实现正常检测高电平,不过建议还是不要把输出模式用作输入检测。

复用开漏输出

  • 复用开漏输出模式与开漏输出模式的工作原理基本相同,它是和复用功能输出,即片上外设模块的输出端相连。

复用推挽输出

  • 复用推挽输出模式与普通推挽输出模式的区别与复用开漏输出模式相同;
    此外,将 GPIO 配置成复用输出功能后,假如相应的外设模块没有被激活,那么此时 IO 端口的输出将不确定!

使用

对输入输出几种模式的定义如下
image

先对GPIO初始化

// 初始化GPIO B9 为输出 默认输出低电平
gpio_init(B9, GPO, 0, GPO_PUSH_PULL);

设置高低电平

gpio_set_level(B9, 1);              // 设置引脚电平为高电平
gpio_set_level(B9, 0);              // 设置引脚电平为低电平

参考链接

https://durant35.github.io/2017/11/30/TACouses_ES2017_MCU_GPIO/
 
 
2023 / 2 / 2  17:29
GJY in Anshan

posted @ 2023-02-02 17:27  寥若辰星  阅读(352)  评论(0编辑  收藏  举报