查看: 1509|回复: 1

[原创] NMI Interrupt 使能

[复制链接]

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
20158
最后登录
2024-5-7
发表于 2021-2-4 09:47:31 | 显示全部楼层 |阅读模式
客户想在MIMXRT1050-EVK开发板上实现NMI中断,但是,在参考手册中,关于NMI引脚的介绍很少,也没有给出配置NMI引脚的步骤,这样客户就比较犯难,所以小编就在Hello_World工程的基础上实现NMI中断函数,并与大伙儿分享一下使能过程。
配置NMI引脚
i.MX RT1050的GPIO5_IO00和GPIO_AD_B0_12脚都可以作为NMI引脚,在本次测试中,小编选择的是GPIO5_IO00。
在MCUXpresso IDE中,加载SDK软件库中的Hello_World工程,单击Open pins (如图1所示)打开集成的MCUXpresso config工具,检索NMI并使能对应的引脚(如图2所示),最后单击Update Code生成NMI引脚配置代码。
Openpins.jpg
Fig 1
2021-02-03_16-48-29.jpg
Fig 2
测试代码
  1. /*
  2. * Copyright (c) 2013 - 2015, Freescale Semiconductor, Inc.
  3. * Copyright 2016-2017 NXP
  4. * All rights reserved.
  5. *
  6. * SPDX-License-Identifier: BSD-3-Clause
  7. */

  8. #include "fsl_device_registers.h"
  9. #include "fsl_debug_console.h"
  10. #include "board.h"

  11. #include "pin_mux.h"
  12. #include "clock_config.h"
  13. #include "fsl_iomuxc.h"
  14. /*******************************************************************************
  15. * Definitions
  16. ******************************************************************************/
  17. void NMI_Handler(void)
  18. {
  19.   PRINTF("NMI_Handler happens\n");
  20. }

  21. /*******************************************************************************
  22. * Prototypes
  23. ******************************************************************************/

  24. /*******************************************************************************
  25. * Code
  26. ******************************************************************************/
  27. /*!
  28. * @brief Main function
  29. */
  30. int main(void)
  31. {
  32.     char ch;

  33.     /* Init board hardware. */
  34.     BOARD_ConfigMPU();
  35.     BOARD_InitPins();
  36.     BOARD_InitBootClocks();
  37.     BOARD_InitDebugConsole();

  38.     PRINTF("NMI interrupt test.\r\n");
  39.     //NMI引脚初始化
  40.     IOMUXC_SetPinMux(
  41.          IOMUXC_SNVS_WAKEUP_NMI_GLUE_NMI,        /* WAKEUP is configured as NMI_GLUE_NMI */
  42.           0U);                                    /* Software Input On Field: Input Path is determined by functionality */

  43.     while (1)
  44.     {
  45.         ch = GETCHAR();
  46.         PUTCHAR(ch);
  47.     }
  48. }
复制代码


注意点
对于i.MX RT1050, GPIO5_IO00为高电平时,才会触发NMI中断,因为默认的引脚配置是pull-up,所以在GPIO5_IO00引脚初始化完成后就会触发中断,在测试时,按下板子上的SW8按钮才会关闭NMI中断。
2021-02-03_17-22-39.jpg
Fig 3

回复

使用道具 举报

  • TA的每日心情
    奋斗
    2023-2-24 18:42
  • 签到天数: 206 天

    [LV.7]常住居民III

    18

    主题

    312

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2756
    最后登录
    2024-4-29
    发表于 2021-2-4 18:35:48 | 显示全部楼层
    NMI 主要用來做啥
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-5-7 21:03 , Processed in 0.126143 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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