查看: 3051|回复: 1

[原创] LPC55S69外部中断

[复制链接]
  • TA的每日心情
    无聊
    2021-12-29 19:06
  • 签到天数: 47 天

    [LV.5]常住居民I

    49

    主题

    188

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    1371
    最后登录
    2024-3-21
    发表于 2020-1-8 17:12:53 | 显示全部楼层 |阅读模式
    本帖最后由 day_day 于 2020-1-8 17:16 编辑

    LPC55S69的外部中断部分功能延续了LPC系列一向的脾性,推出PINTGINT两种类似的功能,但其中又各有不同。其中GINT资源相对较少,只有两个,但可以直接映射到某一引脚。而PINT资源较多,共有8个,能够映射到任意引脚,但事先需要INPUTMUX功能进行映射,因此这里首先提一下LPC55映射的相关知识:

    (一)IOCONINPUTMUX


    1、IOCON

    INCON包含传统的映射功能,其能控制引脚输入输出方向、上下拉等一系列功能,并能配置其映射到相关外设,比如IIC逻辑引脚、ADC模拟引脚。

    引脚间又分为TYPE ATYPE ITYPE D三种,功能和复杂性各不相同,因此其IOCON寄存器也按此分为三类。其中低四位命名为FUNC,就是控制引脚功能复用的。

    2、INPUTMUX

    INPUTMUX实际上也是引脚复用的相关寄存器,但与IOCON负责复用的对象不同。在用户手册P297有这么一段话:

    Remark: Some functions, such as SCTimer/PWM inputs, frequency measure, JTAG
    functions, and ADC triggers are not selected through IOCON. The connections for these
    function are described in Chapter 19 “LPC55S6x Input Multiplexing (INPUTMUX)”or the
    chapter for the specific function. See the specific device data sheets for pinout details

    备注:一些函数,如SCTimer/PWM输入、频率测量、JTA G函数和ADC触发器不是通过IOCON选择的。第一章描述了这些函数的连接 9“LPC55S6x输入复用(INP UT MUX或具体功能的章节。有关详细信息,请参阅特定的设备数据表。

    这里没有提到PINT功能,但实际上在INPUTMUX这章,开头就描述了其功能:
    Configures the inputs to the pin interrupt block and pattern match engine.6
    因此像点LED那样配置引脚功能,即通过 结构体gpio_pin_config_t GPIO_PinInit
    函数
    配置引脚只能配置IOCON相关信息,无法配置PINT映射,需要用 INPUTMUX_Init INPUTMUX_AttachSignal函数

    (二)PINT


    实际上外部中断知识PINT的其中一个功能,其还有另一个功能Pattern match

    关于外部中断方面,我们需要阅读20.7.1章,篇幅不长,大概就描述了一下PINT可以配置高低电平、边沿等功能。
    具体代码:
    1. //1-Connect trigger sources to PINT
    2. INPUTMUX_Init(INPUTMUX);
    3. INPUTMUX_AttachSignal(INPUTMUX, kPINT_PinInt0, kINPUTMUX_GpioPort1Pin5ToPintsel);
    4. //2-Initialize PINT
    5. PINT_Init(PINT);
    6. //3-Setup Pin Interrupt 0 for rising edge
    7. PINT_PinInterruptConfig(PINT, kPINT_PinInt0, kPINT_PinIntEnableRiseEdge, pint_intr_callback);
    8. //4-Enable callbacks for PINT0 by Index
    9. PINT_EnableCallbackByIndex(PINT, kPINT_PinInt0);
    复制代码

    1、初始化inputmux并映射
    2、初始化PINTPINT_Init,主要是针对PINT外设的时钟进行初始化
    3、初始化PINT外设相关配置
    1.png
    如果阅读源码的话我们可以看到这个初始化函数是在初始化这些寄存器。
    4、使能中断,包括使能NVIC、清除标志位、使能回调函数

    (三)GINT


    GINT有如下特性:

    • The inputs from any number of digital pins can be enabled to contribute to a combined
    group interrupt.
    • The polarity of each input enabled for the group interrupt can be configured HIGH or
    LOW.
    • Enabled interrupts can be logically combined through an OR or AND operation.
    • Two group interrupts are supported to reflect two distinct interrupt patterns.
    • The grouped interrupts can wake up the part from sleep or deep-sleep modes.

    即其一个GINT中断可以同时感受多个引脚的状况,这么多引脚,最终引起中断的逻辑是可以编辑的,可以把他们的关系或起来,当他们某一个触发则会产生中断;或者与起来,全部触发了才会产生中断。此外还能配置上升下降沿以及低功耗唤醒。

    代码:
    1. GINT_Init(GINT0);
    2. GINT_SetCtrl(GINT0, kGINT_CombineOr, kGINT_TrigEdge, gint0_callback);
    3. GINT_ConfigPins(GINT0, kGINT_Port1, ~(1U << X_LIM_PIN), (1U << X_LIM_PIN));
    4. GINT_EnableCallback(GINT0);
    复制代码

    显然,这个就并不需要映射了。
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    4
    最后登录
    2024-4-25
    发表于 2024-4-25 08:59:49 | 显示全部楼层
    请问一下楼主,PINT和GINT分别是什么意思?
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-5-4 23:28 , Processed in 0.114881 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表