普适的GPIO引脚操作方法

2024-01-09 17:18

本文主要是介绍普适的GPIO引脚操作方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1 普适的GPIO引脚操作方法
      • 1.1 GPIO模块一般结构
      • 1.2 GPIO相关寄存器
      • 1.3 GPIO寄存器的2种操作方法
      • 1.4 GPIO的其他功能:防抖动、中断、唤醒

1 普适的GPIO引脚操作方法

GPIO:General-purpose input/output,通用的输入输出口。

1.1 GPIO模块一般结构

有多组 GPIO,每组有多个 GPIO。

使能: 电源/时钟。

模式(Mode): 引脚可用于 GPIO 或其他功能。

方向: 引脚 Mode 设置为 GPIO 时,可以继续设置它是输出引脚,还是输入引脚。

数值: 对于输出引脚,可以设置寄存器让它输出高、低电平;对于输入引脚,可以读取寄存器得到引脚的当前电平。

1.2 GPIO相关寄存器

使能:

  • 芯片手册一般有相关章节,用来介绍:power/clock。
  • 可以设置对应寄存器使能某个 GPIO 模块(Module)。
  • 有些芯片的 GPIO 是没有使能开关的,即它总是使能的。

模式(Mode):

  • 一个引脚可以用于 GPIO、串口、USB 或其他功能。
  • 有对应的寄存器来选择引脚的功能。

方向:

  • 对于已经设置为 GPIO 功能的引脚,有方向寄存器用来设置它的方向:输出、输入。

数值:

  • 对于已经设置为 GPIO 功能的引脚,有数据寄存器用来写、读引脚电平状态。

1.3 GPIO寄存器的2种操作方法

原则:不能影响到其他位。

1. 直接读写:读出、修改对应位、写入。

//要设置 bit n:
val = data_reg;
val = val | (1<<n);
data_reg = val;//要清除 bit n:
val = data_reg;
val = val & ~(1<<n);
data_reg = val;

2. set-and-clear protocol:
set_reg, clr_reg, data_reg 三个寄存器对应的是同一个物理寄存器,要设置 bit n:set_reg = (1<<n);要清除 bit n:clr_reg = (1<<n)。

1.4 GPIO的其他功能:防抖动、中断、唤醒

后续介绍。


参考资料:

  1. 韦东山全系列视频第1季快速入门

这篇关于普适的GPIO引脚操作方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/587847

相关文章

SpringBoot操作spark处理hdfs文件的操作方法

《SpringBoot操作spark处理hdfs文件的操作方法》本文介绍了如何使用SpringBoot操作Spark处理HDFS文件,包括导入依赖、配置Spark信息、编写Controller和Ser... 目录SpringBoot操作spark处理hdfs文件1、导入依赖2、配置spark信息3、cont

A20 操作GPIO口

例如:先在 Sys_config.fex文件中 [1302_para] 1302_used      = 1 1302_clk             = port:PD05<1><default><default><0> 1302_dat             = port:PD06<1><default><default><0> 1302_rs

单片机XTAL引脚引出的晶振分析

51单片机的18,19脚XTAL1,XTAL2用来提供外部振荡源给片内的时钟电路。 XTAL1和XTAL2引脚,该单片机可以使用外部时钟也可以使用内部时钟。 当使用内部时钟时,此二引线端用于外接石英晶体和微调电容; 当使用外部时钟时,用于接外部时钟信号,NMOS接XTAL2,CMOS接XTAL1。 原理: XTAL1和XTAL2分别是一个反相器的输入和输出。NMOS的反相器是

python 字符串的定义和操作方法

str='  why is money  ' # 获取字符串对应索引的值 print(f"{str[0]}") print(f"{str[-1]}") #获取对应字符元素的数量 num=str.count('y') print(f"字符y的数量:{num}") #对应元素所在的索引 index=str.index("is") print(f"{index}")

orcad画封装,如何隐藏引脚编号,线宽

1 电阻,有引脚号,如何隐藏,精度,功率如何添加   1 隐藏脚号效果图   2 精度添加,功率添加   2 更改精度效果图  2 更改线

胖哥的经验 | 一款普适的实时数仓架构设计

什么?胖哥的经验,没错这是来自我们大数据成神之路小伙伴的经验。有什么问题,欢迎大家加群讨论,公众号回复【加群】。 一、实时数仓的架构背景 首先我们来聊一聊实时数仓是怎么诞生的,在离线数仓的时候数据是T+1的也就是隔一天才能看到昨天的数据,这种形式持续了很久的时间,但是有些场景真的只有实时的数据才有用武之地。例如推荐、风控、考核等。那么这个时候实时指标也就应运而生,在最开始的时候,采用flink\

python 列表定义与常用操作方法

list_a=['a','b','c'] print(type(list_a)) list_b=["a",1,0.3] list_c=[['a','b','c'],[1,2,3]] # 列表的下标索引 list=["a",'b','c'] print(list[0]) print(list[1]) print(list[2]) print(list[-1]) pri

在VBA中,对Excel单元格的操作方法

在VBA(Visual Basic for Applications)中,对Excel单元格的操作方法非常丰富,包括但不限于赋值、数字格式设置、复制粘贴、自动填充、公式填充、选中单元格、合并和解除合并单元格、排序等。以下是一些具体的操作方法: ‌赋值‌:可以使用Range对象的Value属性给单元格赋值,例如Range("A1").Value = 3.1415。 ‌数字格式‌:通过Numb

FPGA 编程基础, 赋值操作符, 运算符使用, 条件表达式, 信号操作方法

1. **赋值符号**:    - **"="**:阻塞赋值,即在`always`模块中该语句会被立即执行。    - **"<="**:非阻塞赋值,用于`always`模块中,使所有语句在模块结束时一起更新。此符号也用于表示小于等于,具体含义由上下文决定。 2. **算术运算符**:    - **"+","-","*","/","%"**:分别代表加法、减法、乘法、除法和取

一文读懂期权交易规则和操作方法分享

今天带你了解一文读懂期权交易规则和操作方法分享。期权交易是一种金融衍生品交易,它允许投资者在未来某个时间点或在特定时间段内购买或卖出标的资产的权利。 期权交易 判断大涨买认购 ,判断大跌买认沽,震荡下跌卖认购(小幅下跌),震荡上涨卖认沽(小幅上涨),判断横盘同时卖出认购、认沽,判断暴跌买虚值,狂涨狂跌买深度虚值,突破整理买期权。 纯方向策略(方向感比较强的) 上证50ETF上涨:买平值认购