0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

GPIO做输出还能作外部中断输入吗?

茶话MCU 来源:ST MCU 信息交流 2020-07-05 10:42 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

偶尔会有人问起STM32芯片的GPIO做输出时还是否可能作为外部中断触发输入,这里一起聊聊该话题。

作为STM32芯片,其外部中断触发源可以是硬件模式或软件模式。所谓软件模式就是通过操作相关寄存器产生内部中断触发信号并向内核NVIC控制器申请中断。硬件模式自然是指来自GPIO引脚的电平跳变信号经边沿检测器形成中断触发信号向内核申请中断。【注:还有个别外设事件也可以作为外部中断触发源映射到外部中断控制器。】

我们这里要谈的是基于硬件模式的外部中断话题。当STM32的GPIO作为输出时,可能是通用GPIO输出也可能是基于其它外设复用情况下的输出,即复用输出。

下图是GPIO作为基本输入输出时的功能框图。

下面是GPIO作为其它外设的复用输出脚时的功能框图。

不难看出,所谓GPIO复用输出,就是将自身输出数据寄存器与输出控制电路及外部管脚断开来,并将输出控制电路及外部管脚借让给其它外设使用。通俗点说,所谓GPIO复用输出就是其它外设找GPIO借道而已。

从上面两幅图来看,不论GPIO通用输出还是复用输出,外部管脚的电平都可以连接到内部输入单元,管脚上的电平也应该可以被内部边沿检测器检测到。也就是说,即使GPIO作为输出,只要管脚上的电平跳变能被边沿检测器识别,按理可以作为外部中断触发源。

下面不妨用个简单的实例验证下。

这里使用一块STM32F4系列的开放板,通过定时器1的通道1输出8个PWM信号,同时将该定时器输出通道所用管脚PA8配置为上升沿触发的外部中断输入。PC13接一个按键,每按键一次启动定时器输出8个脉冲。

我使用STM32CubeMx图形化工具进行配置。因为要把PWM输出脚同时配置为外部中断输入这里不好操作。我先借用旁边的PA9进行配置,等生成初始化代码后我再将PA9改成PA8以及对应的中断矢量。TIM1配置在单脉冲模式,我在PC3按键中断里启动TIM1的计数器。

TIM1的基本配置如下:

再就是两个GPIO端口PC13/PA9的EXTI配置,分别对应按键脚和PWM输出脚。

时钟、调试口等配置完毕后生成初始化代码,然后在代码里将之前基于PA9生成的代码改为基于TIM1-CH1的输出脚PA8的。

主程序功能代码很简单,就是配置TIM1-CH1的pwm输出。

在用户按键中断程序里启动TIM1的计数器。

在基于PWM输出脚PA8对应的外部中断程序里对中断次数进行统计。因它被配置为上沿触发,每次连续输出8个脉冲的话,统计值应该为8。

下面看看代码运行结果:

每按键一次输出8个脉冲,没有问题。

再看看基于这个8个输出脉冲统计到中断次数,也确实为8次。【如下图所示]

显然,当GPIO做为输出时还是可以感受到外部管脚电平的变化情况,并可以做为外部中断触发源申请中断。结合上面GPIO输出模式下的功能框图来看,当它被配置为输出时是具备双向特性的。当然,一般来讲,如果希望GPIO做为双向驱动口使用时,建议将其配置为OD开漏结合上拉模式。比方在做I2C应用时,将通信GPIO端口配置为开漏模式结合上拉电阻即可进行双向数据通信,无须对通信口的GPIO模式来回切换。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5623

    浏览量

    130627
  • GPIO
    +关注

    关注

    16

    文章

    1337

    浏览量

    56587

原文标题:GPIO做输出还能作外部中断输入吗?

文章出处:【微信号:stmcu832,微信公众号:茶话MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MAX7314:18 端口 GPIO 芯片的特性与应用解析

    MAX7314:18 端口 GPIO 芯片的特性与应用解析 在电子设计领域,通用输入输出GPIO)芯片是实现系统与外部设备交互的关键组件。MAX7314 作为一款具备 LED 强度控
    的头像 发表于 05-11 17:00 386次阅读

    MIMXRT1170中断问题,如何将gpio8_29定义为外部中断

    我想请教一些关于GPIO外设中断方面的问题。在MIMXRT1170_igpioinput_interrupt示例中,GPlO13_io0引l脚被定义为输入并启用了上升沿中断。我想要
    发表于 04-28 06:09

    深入解析RK平台GPIO驱动:从原理到调试,开发者必看指南

    GPIO(通用输入输出)作为嵌入式系统中最基础也最常用的硬件接口,是连接芯片与外部设备的 “桥梁”。从简单的 LED 控制、按键检测,到复杂的传感器通信,都离不开 GPIO 的支持。在
    的头像 发表于 02-03 15:53 1398次阅读
    深入解析RK平台<b class='flag-5'>GPIO</b>驱动:从原理到调试,开发者必看指南

    CW32F030CxTx外部中断

    这里使用的外部中断函数宏定义板子上的LED和按键的引脚 #define LED_GPIO_PORT CW_GPIOB #define LED_GPIO_PINS
    发表于 01-29 07:37

    在CW32F030 MCU上设置外部中断和RTC唤醒条件的示例

    \"// 假设这是MCU的头文件 // 外部中断处理函数 void EXTIx_IRQHandler(void) { if (__HAL_GPIO
    发表于 11-25 08:00

    GPIO输出/输入的故障排查

    1、确认时钟已使能。 2、检查 GPIO 模式设置是否正确(输出:推挽/开漏? 输入:浮空/上拉/下拉?)。 3、检查复用功能映射(如果该 IO 用于外设如 UART TX)。 4、检查外部
    发表于 11-18 07:37

    GPIO输入输出调用方法的理解与分享

    Nuclei Studio中为GPIO的调用定义了七个函数。 与GPIO输入输出的直接有关的是: GPIO_TypeDef *
    发表于 10-29 06:24

    AXI GPIO扩展e203 IO口简介

    比特位。可以通过数据寄存器2(Data Register 2)来读取GPIO引脚的输入状态,数据寄存器仅用于写入GPIO引脚的输出状态。 3.GPI
    发表于 10-22 08:14

    中断机制在计算机系统中的作用,如何在e203处理器中利用外部中断来处理用户输入输出

    )设计中,中断是一种机制,用于处理外部事件并暂停CPU的正常执行流程。当外部事件发生时,如输入/输出操作或定时器/计数器到达其计数限制等,硬
    发表于 10-21 12:47

    瑞萨RA系列MCU的外部引脚中断详解

    上一章节我们已经详细介绍了NVIC、ICU、ELC、NMI并对RA系列MCU的中断管理系统有个全局的了解,我们这一章节的内容是如何控制外部中断,也是内核里的NVIC的实例应用,这也是RA系列MCU非常重要的一个
    的头像 发表于 09-23 09:38 2367次阅读
    瑞萨RA系列MCU的<b class='flag-5'>外部</b>引脚<b class='flag-5'>中断</b>详解

    何时使用 GPIO 中断外部中断

    何时使用 GPIO 中断外部中断
    发表于 08-26 07:27

    中科昊芯Core_DSC280025C开发板的外部中断问题

    向量表/ Interrupt_initVectorTable(); /*配置GPIO30为IO输入,用于触发外部中断 * GPIO31为I
    发表于 08-08 22:06

    你真的懂树莓派5嘛?树莓派5引脚图全面指南:理解GPIO引脚及其功能!

    树莓派5上的GPIO通用输入/输出GPIO)引脚是树莓派上的物理连接器,允许树莓派与传感器、LED、电机等外部电子元件进行交互。这些引脚可
    的头像 发表于 07-04 15:27 4088次阅读
    你真的懂树莓派5嘛?树莓派5引脚图全面指南:理解<b class='flag-5'>GPIO</b>引脚及其功能!

    第六章 外部中断

    本章介绍W55MH32的IO口作为外部中断输入的使用。先阐述了NVIC(嵌套向量中断控制器) 的结构、寄存器、优先级及相关函数,再说明EXTI(
    的头像 发表于 05-26 16:27 1745次阅读
    第六章 <b class='flag-5'>外部</b><b class='flag-5'>中断</b>

    MAX7314 18端口GPIO,带有LED亮度控制和中断,提供热插入保护技术手册

    ),或具有跳变检测的逻辑输入。仅输出端口可被指定为过渡检测的中断输出端口。输出可驱动LED,或者通过外部
    的头像 发表于 05-26 10:20 1276次阅读
    MAX7314 18端口<b class='flag-5'>GPIO</b>,带有LED亮度控制和<b class='flag-5'>中断</b>,提供热插入保护技术手册