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

    文章

    5588

    浏览量

    129051
  • GPIO
    +关注

    关注

    16

    文章

    1313

    浏览量

    55719

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    GPIO输出/输入的故障排查

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

    何时使用 GPIO 中断外部中断

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

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

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

    第六章 外部中断

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

    基于小凌派RK2206开发板:OpenHarmony如何使用IoT接口控制GPIO中断

    1、实验简介本实验将演示如何在小凌派-RK2206开发板上使用IOT库的GPIO中断模式,进行GPIO编程开发。例程将创建一个任务,通过配置GPIO引脚为
    的头像 发表于 04-21 10:39 889次阅读
    基于小凌派RK2206开发板:OpenHarmony如何使用IoT接口控制<b class='flag-5'>GPIO</b><b class='flag-5'>中断</b>

    ADS2812UPS使用外部AD8364,PWM中断触发外部AD,但电流采样不到是为什么?

    2812UPS使用外部AD8364,PWM中断触发外部AD,但电流采样不到,请问为什么?电压能采样到,我的电流霍尔是放在输出滤波电感之前
    发表于 02-13 06:19

    GPIO使用教程 GPIO接口应用

    交互,实现外部设备的控制和数据传输。 一、GPIO的基本概念 GPIO的全称是General-Purpose Input/Output,即通用输入/
    的头像 发表于 01-31 10:10 5175次阅读

    串口中断是内部中断还是外部中断,串口中断是怎么触发的

    串口中断通常被视为外部中断。虽然串口控制器(如USART、UART等)可能集成在微控制器或处理器的内部,但从中断的角度来看,串口中断是由处理
    的头像 发表于 01-29 15:03 2620次阅读

    GPIO模块与其他外设的连接方法

    输入输出模式。在输入模式下,GPIO引脚可以读取外部信号的状态;在输出模式下,它们可以向
    的头像 发表于 01-09 09:48 1485次阅读

    GPIO错误排查与解决

    输入模式下,GPIO可以读取外部信号;输出模式下,GPIO可以控制外部设备。正确配置
    的头像 发表于 01-09 09:46 3709次阅读

    GPIO在嵌入式系统中的作用

    在现代电子系统中,嵌入式系统因其小型化、低成本和高效率而变得越来越流行。这些系统广泛应用于从简单的家用电器到复杂的工业自动化设备。在这些系统中,GPIO(通用输入/输出)接口是连接微控制器与
    的头像 发表于 01-09 09:45 1520次阅读

    GPIO在物联网中的应用

    个过程中,通用输入输出GPIO)接口扮演着重要的角色。 1. GPIO简介 通用输入输出GPIO)是一种数字接口,用于微控制器和其他集成
    的头像 发表于 01-09 09:43 998次阅读

    GPIO在树莓派中的应用

    直接控制和读取外部硬件设备的状态。 1. GPIO简介 GPIO是树莓派上用于与外部世界交互的一组引脚。这些引脚可以被配置为输入
    的头像 发表于 01-09 09:41 1245次阅读

    如何配置GPIO引脚

    在嵌入式系统设计中,GPIO(通用输入/输出)引脚是连接微控制器与外部世界的重要桥梁。它们可以被配置为输入
    的头像 发表于 01-09 09:39 1865次阅读

    TMS320C645x DSP通用输入/输出(GPIO)用户指南

    电子发烧友网站提供《TMS320C645x DSP通用输入/输出(GPIO)用户指南.pdf》资料免费下载
    发表于 12-17 15:56 0次下载
    TMS320C645x DSP通用<b class='flag-5'>输入</b>/<b class='flag-5'>输出</b>(<b class='flag-5'>GPIO</b>)用户指南