PIN设备

2023-12-16

引脚简介

芯片上的引脚一般分为4类: 电源、时钟、控制与I/O。
I/O在使用模式上又分为General Purpose Input Output(通用输入/输出),简称GPIO。与功能复用I/O(如SPI/I2C/UART)。

大多数MCU的引脚都不止一个功能。
不同引脚内部结构不一样,拥有的功能也不一样。可以通过不同的配置,切换引脚的实际功能。通用I/O口主要特性如下:

  • 可编程控制中断:中断触发模式可配置,一般有下图所示5种中断触发模式:
    在这里插入图片描述
  • 输入输出模式可控制。
    输出模式一般包括:推挽、开漏、上拉、下拉。引脚为输出模式时,可以通过配置引脚输出的电平状态控制连接的外围设备。
    输入模式一般包括:浮空、上拉、下拉、模式。引脚为输入模式时,可以读取引脚的电平状态,即高电平或低电平。

访问PIN设备

应用程序可以通过提供的PIN设备管理接口来访问GPIO。

struct rt_device_pin
{
	struct rt_device parent;
	const struct rt_pin_ops *ops;
};
struct rt_pin_ops
{
    void (*pin_mode)(struct rt_device *device, rt_base_t pin, rt_base_t mode);
    void (*pin_write)(struct rt_device *device, rt_base_t pin, rt_base_t value);
    int (*pin_read)(struct rt_device *device, rt_base_t pin);
    rt_err_t (*pin_attach_irq)(struct rt_device *device, rt_int32_t pin,
                      rt_uint32_t mode, void (*hdr)(void *args), void *args);
    rt_err_t (*pin_detach_irq)(struct rt_device *device, rt_int32_t pin);
    rt_err_t (*pin_irq_enable)(struct rt_device *device, rt_base_t pin, rt_uint32_t enabled);
    rt_base_t (*pin_get)(const char *name);
};
rt_base_t rt_pin_get(const char *name)
{
	RT_ASSERT(_hw_pin.ops != RT_NULL);
	RT_ASSDER(name[0] == 'P');

	if(_hw_pin.ops->pin_get == RT_NULL)
		return -RT_ENOSYS;
	return _hw_pin.ops->pin_get(name);
}

RT-Thread提供的引脚编号和芯片的引脚号区分开来,它们并不是同一个概念,引脚编号由PIN设备驱动程序定义,和具体芯片相关。
有三种方式获取引脚编号:API接口获取、使用宏定义或者查看PIN驱动文件。

pin_number = rt_pin_get("PF.9");
#define LED0_PIN GET_PIN(F, 9)

设置引脚模式

引脚在使用前需要先设置好输入或者输出模式,通过如下函数完成:

void rt_pin_mode(rt_base_t pin, rt_base_t mode)
{
	RT_ASSERT(_hw_pin.ops != RT_NULL);
	_hw_pin.ops->pin_mode(&_hw_pin.parent, pin, mode);
}
#define PIN_MODE_OUTPUT 0x00            /* 输出 */
#define PIN_MODE_INPUT 0x01             /* 输入 */
#define PIN_MODE_INPUT_PULLUP 0x02      /* 上拉输入 */
#define PIN_MODE_INPUT_PULLDOWN 0x03    /* 下拉输入 */
#define PIN_MODE_OUTPUT_OD 0x04         /* 开漏输出 */
#define BEEP_PIN_NUM 35
int status;
rt_pin_mode(BEEP_PIN_NUM, PIN_MODE_OUTPUT);
rt_pin_werite(BEEP_PIN_NUM, PIN_LOW);

status = rt_pin_read(BEEP_PIN_NUM);

绑定引脚中断回调函数

若要使用引脚的中断功能,可以使用如下函数将某个引脚配置为某种中断触发模式并绑定一个中断回调函数到对应引脚,当引脚中断发生时,就会执行回调函数:

rt_err_t rt_pin_attach_orq(rt_int32_t pin, rt_uint32_t mode, void (*hdr)(void *args), void *args)
{
	RT_ASSERT(_hw_pin.ops != RT_NULL);
	if(_hw_pin.ops->pin_attach_irq)
    {
        return _hw_pin.ops->pin_attach_irq(&_hw_pin.parent, pin, mode, hdr, args);
    }
    return -RT_ENOSYS;
}
#define KEY0_PIN_NUM 55
void beep_on(void *args)
{
	rt_kprint("turn on beep");
	rt_pin_write(BEEP_PIN_NUM, PIN_HIGH);
}

static void pin_beep_sample(void)
{
	/* 按键0引脚为输入模式 */
	rt_pin_mode(KEY0_PIN_NUM, PIN_MODE_INPUT_PULLUP);
	/* 绑定中断,下降沿模式 */
	rt_pin_attach_irq(KEY0_PIN_NUM, PIN_IRQ_MODE_FALLING, beep_on, RT_NULL);
	/* 使能中断 */
    rt_pin_irq_enable(KEY0_PIN_NUM, PIN_IRQ_ENABLE);
}

使能引脚中断

绑定好引脚中断回调函数后使用下面的函数使能引脚中断:

rt_err_t rt_pin_irq_enable(re_base_t pin, rt_uint32_t enbaled);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PIN设备 的相关文章

  • 手写识别汉字有难度?3个软件让文字会说话

    你知道吗 有一次我在家整理书桌的时候 突然发现了一本古老的手写笔记本 里面记满了我小时候的涂鸦和字迹 我突然有个奇怪的想法 能不能把这些手写的文字转化成电子文件呢 当然有 那就是使用手写识别图片的软件 首先 让我们一起来看看手写识别软件的妙
  • Linux安装系列:SonarQube

    下载sonarqube wget https binaries sonarsource com Distribution sonarqube sonarqube 8 9 7 52159 zip 安装配置jdk unzip sonarqube
  • 电脑自动识别字幕用哪个软件好?外语视频学习一点都不难

    伙计们 可别说我不照顾你们 今天我要给你们介绍一个超级厉害的软件 那就是自动识别字幕的软件 这个软件简直就是留学生学习的必备神器啊 想象一下 你在异国他乡 上课听不懂老师说的英文 或者看电影听不清台词 是不是很郁闷 别担心 有了这个软件 你
  • Top-Down性能分析方法

    Top Down性能分析方法是由Intel的工程师提出的一种性能分析方法 旨在帮助开发人员更好地理解和优化计算机系统的性能 该方法主要通过从高层次到底层次的分析 逐步识别和解决性能瓶颈 以提高系统的整体性能和效率 Top Down方法介绍
  • 【网络安全】HVV爆火的漏洞:最新 WPS RCE (远程命令执行) 复现

    0x00 影响版本 WPS Office 2023 个人版 lt 11 1 0 15120 WPS Office 2019 企业版 lt 11 8 2 12085 0x01 环境配置 wps版本 WPS V11 1 0 12300 靶机 w
  • 【网络安全】SQL注入绕过技巧

    1 绕过空格 注释符 a0 两个空格代替一个空格 用Tab代替空格 a0 空格 20 09 0a 0b 0c 0d a0 00 最基本的绕过方法 用注释替换空格 注释 使用浮点数 select from users where id 8E0
  • WindowsServer服务器系列:定时备份 MySQL

    一 编写脚本 echo 取日期 时间变量值 set yy date 0 4 set mm date 5 2 set dd date 8 2 if i time 0 2 lss 10 set hh 0 time 1 1 if i time 0
  • SpringBoot基础系列:工具类使用

    断言 Assert 要求参数 object 必须为非空 Not Null 否则抛出异常 不予放行 参数 message 参数用于定制异常信息 void notNull Object object String message 要求参数必须空
  • CS5565设计资料|CS5565规格书|typec转HDMI 8k60Hz方案

    CS556x是一款高性能的Type C DisplayPort1 4到HDMI2 1协议转换器 可通过Type C DisplayPort链路接收视频和音频流 并转换为支持TMDS或FRL输出信令的HDMI DP接收器在4个通道上支持高达8
  • 【小程序】-【

    swiper swiper item轮播图 swiper 是滑块视图容器 其中只可放置 swiper item 组件 部分常用属性如下 其余属性详见 官方文档
  • EasyRecovery2024专业版下载安装步骤图文详细教程

    EasyRecovery是一款操作安全 价格便宜 用户自主操作的非破坏性的只读应用程序 它不会往源驱上写任何东西 也不会对源驱做任何改变 它支持从各种各样的存储介质恢复删除或者丢失的文件 其支持的媒体介质包括 硬盘驱动器 光驱 闪存 以及其
  • FL Studio21.3中文至尊完整版含2024Crack文件

    FL studio21中文直装版 中文名为水果软件 是一款非常专业的音频制作软件 该软件推出了全新的21 0版本 在功能和体验上更加的强大 它不仅适用于音乐制作 还可以用于电子声音 电视 广播等多种领域 它在所有音频制作软件中最适合初学者
  • 使用Vue实现一个当鼠标悬浮时出现,鼠标离开时消失的双层菜单

    前言 分享一个基于Vue实现一个当鼠标悬浮时出现 鼠标离开时消失的双层菜单 同时也是为了以后需要类似的需求时 可以提供一个实现思路 以及可以快速ctrl c和ctrl v操作 提高工作效率 一 示例代码 1 src views Exampl
  • 【无标题】

    一 软件简介 PyCharm是一款Python IDE 其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具 比如 调试 语法高亮 Project管理 代码跳转 智能提示 自动完成 单元测试 版本控制等等 此外 该IDE提供
  • WPF中DataGrid设置默认选中行

    1 DataGrid命名为planDataGrid
  • 如何FL Studio显示中文?切换语言教程

    你是不是也在为fl studio的英文界面而苦恼 你是不是也想让你的fl studio 说中文 方便你制作音乐 你是不是也在网上找了很多教程 却发现都是复杂的 或者已经过时的 如果你的答案是肯定的 那么你来对地方了 今天 我要教你一个一步到
  • CleanMyMac X这一款mac电脑清理垃圾文件软件好用吗?

    CleanMyMac X您的 Mac 极速如新 点按一下 即可优化调整整个 Mac畅享智能扫描 这款超级简单的工具用于优化您的 Mac 只需点按一下 即可运行所有任务 让您的 Mac 保持干净 快速并得到最佳防护 CleanMyMac 是一

随机推荐

  • 【git教程】

    目录 git与SVN的区别 集中式与分布式的区别 Windows上安装Git 创建版本库 仓库 repository 将文件添加到repository 报错处理 查看仓库的状态 版本回退 工作区和暂存区 管理
  • EasyRecovery2024国内免费的电脑数据恢复软件(一键备份还原)

    EasyRecovery2024是coco玛奇朵Ontrack 的技术杰作 它是一个硬盘数据恢复工具 能够帮你恢复丢失的数据以及重建文件系统 其 Professioanl 专业 版更是囊括了磁盘诊断 数据恢复 文件修复 E mail 修复等
  • FL Studio2024年最新中文版本如何下载?

    FL Studio是款专业的音频录制编辑软件 受到了广大制作人的喜爱 但有很多人不知道FL Studio应该如何使用 和小编一起往下看吧 FL Studio是款专业的音频录制编辑软件 可以针对作曲者的要求编辑出不同音律的节奏 例如鼓 镲 锣
  • fl studio2024中文版下载安装教程 亲测有效

    fl studio是一款功能强大的编曲软件 今天小编就为大家带来了详细的安装教程 需要的朋友一起看看吧 fl studio2024是一款功能强大的编曲软件 也就是众所熟知的水果软件 它可以编曲 剪辑 录音 混音 让您的计算机成为全功能录音室
  • CleanMyMac X2024值不值得下载?

    macOS已经成为最受欢迎的桌面操作系统之一 它提供了直观 简洁的用户界面 使用户可以轻松使用和管理系统 macOS拥有丰富的应用程序生态系统 还可以与其他苹果产品和服务紧密协作 如iPhone iPad 用户可以通过iCloud同步和共享
  • FL Studio水果软件最新版本号V21.0.3.3517内置中文补丁,可以切换成中文界面。

    FL Studio 21 0 3 3517 Producer Edition 全称Fruity Loops Studio 21 Producer Edition 就是大家熟悉的水果编曲软件 一个全能的音乐制作软件 包括编曲 录音 剪辑和混音
  • CorelDRAW2024好不好用?比其他矢量图设计软件有哪些优势

    CorelDRAW作为一款专业的矢量设计图软件 备受招聘公司 业内人士青睐 CorelDRAW是一款广泛应用于图形设计 图像编辑和排版的软件 其强大的功能和灵活性使其在设计师和艺术家中备受欢迎 然而 在进行CorelDRAW账户注册时 一些
  • EasyRecovery(数据恢复软件) 2024中文绿色无需激活版下载

    EasyRecovery 是一款功能强大且专业的数据恢复软件 软件能够对电脑误删的文件进行恢复 包括格式化硬盘是数据恢复 手机U盘数据恢复等 小编今天给大家带来的是根据官软件解压后直接使用 感兴趣的朋友快来下载使用吧 EasyRecover
  • FL Studio20官方版怎么下载安装?2024最新版图文详细教程

    水果音乐制作软件FL Studio2024是一款功能强大的软件音乐制作环境或数字音频工作站 DAW 本文主要针对FL Studio 2024怎么安装 来为大家带来了水果软件FL Studio 2024安装图文详细教程 水果音乐制作软件FL
  • CorelDRAW2024中文版怎么免费下载?

    CorelDRAW是一款综合性强大的专业平面设计软件 其功能覆盖了矢量图形设计 高级文字编辑 精细绘图以及多页文档和页面设计 该软件不仅适用于广告设计 包装设计 还广泛应用于出版 网页设计和多媒体制作等多个领域 下面就给大家介绍一下Core
  • 操作系统内部机制学习

    切换线程时需要保存什么 函数需要保存吗 函数在Flash上 不会被破坏 无需保存 函数执行到了哪里 需要保存吗 需要保存 全局变量需要保存吗 全局变量在内存上 无需保存 局部变量需要保存吗 局部变量在栈里 也是在内存里 只要避免栈不会被破坏
  • 物联网网关

    物联网网关是 连接物联网设备和互联网的重要桥梁 它负责将物联网设备采集到的数据进行处理 存储和转发 使其能够与云端或其它设备进行通信 物联网网关的作用是实现物联网设备与云端的无缝连接和数据交互 物联网网关功能 数据采集 物联网网关可以从物联
  • CorelDRAW2024版本什么时候更新?有哪些新功能

    CorelDRAW2024 简称CDR 是一款专业的图形设计软件 该软件是加拿大Corel公司开发的一款功能强大的专业平面设计软件 矢量设计软件 矢量绘图软件 这款矢量图形制作工具软件广泛应用于商标设计 标志制作 封面设计 CIS设计 产品
  • BSP制作

    STM32系列驱动介绍 在RT Thread实时操作系统中 各种各样的设备驱动是通过一套I O设备管理框架来实现的 设备管理框架给上层应用提供了一套标准的设备操作API 开发者通过调用这些标准设备操作API 可以高效地完成和底层硬件外设的交
  • 正则表达式的资源

    https www regular expressions info index html https regex101 com
  • UART设备

    UART简介 UART Universal Asynchronous Receiver Transmitter 通用异步收发传输器 UART作为异步串口通信协议的一种 工作原理是将传输数据的每个字符一位接一位地传输 是在应用程序开发过程中使
  • 欧盟eDelivery的AS4解决方案

    为实现绿色和数字欧洲的愿景 欧盟启动了 数字欧洲计划 DEP 总预算为75 9亿欧元 重点是将数字技术带给企业 公民和公共行政部门 它将建立数字能力和基础设施 并以创建数字市场为目标 主要通过与成员国在先进计算和数据 人工智能和网络安全 私
  • HAL库学习

    CMSIS简介 CMSIS Cortex Microcontroller Software Interface Standard 微控制器软件接口标准 由ARM和其合作的芯片厂商 ST NXP 软件工具厂商 KEIL IAR 共同制定的标准
  • I/O设备模型

    I O设备模型 绝大部分的嵌入式系统都包括一些I O Input Outut 输入 输出 设备 例如仪器上的数据显示屏 工业设备上的串口通信 数据采集设备上用于保存数据的Flash或SD卡 以及网络设备的以太网接口等 I O设备模型框架 R
  • PIN设备

    引脚简介 芯片上的引脚一般分为4类 电源 时钟 控制与I O I O在使用模式上又分为General Purpose Input Output 通用输入 输出 简称GPIO 与功能复用I O 如SPI I2C UART 大多数MCU的引脚都