This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28075:丢失时钟检测无效

Guru**** 2782625 points

Other Parts Discussed in Thread: C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1166767/tms320f28075-missing-clock-detection-no-work

器件型号:TMS320F28075
主题中讨论的其他器件:C2000WARE

各位专家、您好

   我正在使用 C2000ware 示例项目来测试 MCD。但它不起作用。

   我的 MCU 是 TMS320F28075PZPS (100引脚)、示例项目来自 C2000ware、如下图所示、是项目的路径。

   我测试了闪存 ECC 逻辑,还可以。

   如果 MCD 测试通过、我使用设置为0的 GPIO 打开 LED、但到目前为止、MCD 功能仍然不起作用。

   请,帮助。

此致!

杨景平

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您似乎使用的是真正旧版本的 C2000Ware 代码。 此代码在 C2000Ware 的后续版本中似乎已被弃用、我无法访问此代码。

    此外、我们在 F2807x 器件中没有 MCD 示例。 但是、我们在 F2838x 中有类似的示例、可以根据 F2807x 进行调整。

    路径: \driverlib\f2838x\examples\C28x\sysctl\

    项目:sysctl_ex1_missing_clock_detection

    此致、

    曼诺伊

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以参考的另一个示例代码是 F28004x

    路径: \driverlib\f28004x\examples\sysctl

    项目:sysctl_ex1_missing_clock_detection

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、专家、

       根据您的建议、我已经测试了两个项目、但问题仍然存在、不会触发 CLKFAIL NMI。

       我监控了该寄存器,OSCOFF 为1,但程序在 "while (nmiISRFlag!= true"时暂停。  

       

       nmiISRFlag 在 NMI_ISR 中设置、因此似乎没有触发 NMI。

       

       

       

       我尝试强制使用 CLKFAIL、交叉输入代码正常。 请参见下图。

       

       现在的问题是,如何触发 CLKFAIL NMI。

    此致!

    杨景平

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    让我在芯片上测试一下这一点、并在接下来的几个工作日内与您联系。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我尝试了以下缺少时钟代码(从 F28004x 中稍微修改了)、并且能够获得缺少时钟检测触发 NMI。

    e2e.ti.com/.../sysctl_5F00_ex1_5F00_missing_5F00_clock_5F00_detection.c

    -检查 NMIFLG.CLOCKFAIL 是否设置为1?

    -检查 NMIFLG.NMIINT 是否设置为1?

    -检查 NMICFG.NMIE 是否设置为1?

    此致、

    曼诺伊

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、专家

       

       

       

    //#############################################################################
    //
    // FILE:  sta_main.c
    //
    // TITLE: Self Test Application Main source
    //
    //#############################################################################
    // $TI Release: F2807x Diagnostic Library v1.00.02.00 $
    // $Release Date: Mon Dec 18 17:00:32 CST 2017 $
    // $Copyright:
    // Copyright (C) 2016-2017 Texas Instruments Incorporated - http://www.ti.com/
    //
    // Redistribution and use in source and binary forms, with or without 
    // modification, are permitted provided that the following conditions 
    // are met:
    // 
    //   Redistributions of source code must retain the above copyright 
    //   notice, this list of conditions and the following disclaimer.
    // 
    //   Redistributions in binary form must reproduce the above copyright
    //   notice, this list of conditions and the following disclaimer in the 
    //   documentation and/or other materials provided with the   
    //   distribution.
    // 
    //   Neither the name of Texas Instruments Incorporated nor the names of
    //   its contributors may be used to endorse or promote products derived
    //   from this software without specific prior written permission.
    // 
    // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    // $
    //#############################################################################
    
    //
    // Included files for device configuration
    //
    #include <stdbool.h>
    #include <stdint.h>
    #include <string.h>
    #include "driverlib.h"
    #include "device.h"
    #include "F2807x_device.h"
    #include "F021_F2837xD_C28x.h"
    
    //
    // Included files for test-infrastructure.
    //
    #include "sta_timer.h"
    #include "sta_tests.h"
    #include "sta_comm.h"
    
    //
    // Globals
    //
    int16_t enableErrorInject;
    int16_t enableReset;
    volatile bool nmiISRFlag = false;
    uint16_t nmiStatus = 0U;
    bool mcdDetect = false;
    uint32_t result = 1;
    uint32_t fail = 0U;
    
    //
    // Prototypes
    //
    void STA_Main_configXCLKOut(void);
    Fapi_StatusType STA_Main_initFlashAPI(void);
    
    
    
    #ifdef _FLASH
    // These are defined by the linker (see device linker command file)
    extern uint16_t RamfuncsLoadStart;
    extern uint16_t RamfuncsLoadSize;
    extern uint16_t RamfuncsRunStart;
    
    extern uint16_t HwbistLoadStart;
    extern uint16_t HwbistLoadSize;
    extern uint16_t HwbistRunStart;
    #endif
    
    //
    // Function Prototypes
    //
    __interrupt void nmi_isr(void);
    
    //
    // Main
    //
    void main(void)
    {
    
    #ifdef _FLASH
        memcpy(&HwbistRunStart, &HwbistLoadStart, (size_t)&HwbistLoadSize);
    #endif
    
        unsigned char *msg;
        uint16_t testIndex = 0;
        Fapi_StatusType statusFlashAPI =  Fapi_Status_Success;
    
        enableErrorInject = 0;
        uint16_t nmiWatchdogPeriod = 0x1000;
        //
        // Configure PLL, disable WD, enable peripheral clocks.
        //
        Device_init();
    
        //
        // Disable pin locks and enable internal pull-ups.
        //
        Device_initGPIO();
    
        //***********************************
        //added by yang for debug
        GPIO_setPinConfig(GPIO_43_GPIO43);
        GPIO_setDirectionMode(43,GPIO_DIR_MODE_OUT);
        GPIO_setPadConfig(43,GPIO_PIN_TYPE_STD);
        GPIO_writePin(43,1);
        //************************************
        //
        // Put watchdog in interrupt mode.
        //
        SysCtl_setWatchdogMode(SYSCTL_WD_MODE_INTERRUPT);
    
     //   statusFlashAPI = STA_Main_initFlashAPI();
    
     //   if(statusFlashAPI != Fapi_Status_Success)
     //   {
     //       ESTOP0;
     //   }
    
        //
        // Disable global interrupts.
        //
      //  DINT;
    
        //
        // Initialize interrupt controller and vector table.
        //
        Interrupt_initModule();
        Interrupt_initVectorTable();
    
        SysCtl_clearAllNMIFlags();
        Interrupt_register(INT_NMI, &nmi_isr);
        SysCtl_setNMIWatchdogPeriod(nmiWatchdogPeriod);
        //
        // Enabling the NMI global interrupt (typically already enabled by boot ROM
        // or GEL file).
        //
        EALLOW;
        HWREGH(NMI_BASE + NMI_O_CFG) |= NMI_CFG_NMIE;
        EDIS;
        Interrupt_enable(INT_NMI);
        EINT;
        ERTM;
    
        if(SysCtl_getClock(DEVICE_OSCSRC_FREQ) != DEVICE_SYSCLK_FREQ)
        {
           fail++;
        }
        SysCtl_enableMCD();
        SysCtl_disconnectMCDClockSource();
    
        fail=3;
        while(nmiISRFlag != true)
        {
            fail++;
        }
        fail=5;
        // A missing clock was detected.
        //
        if(mcdDetect != true)
        {
            fail++;
        }
    
        // Check if the NMI triggered was due to a clock failure.
        //
        if((nmiStatus & SYSCTL_NMI_CLOCKFAIL) != SYSCTL_NMI_CLOCKFAIL)
        {
            fail++;
        }
    
        // Check the PLL System clock after the Missing clock detection
        // is simulated. It should be equal to INTOSC1(10Mhz).
        //
        if(SysCtl_getClock(DEVICE_OSCSRC_FREQ) != SYSCTL_DEFAULT_OSC_FREQ)
        {
            fail++;
        }
        // To lock the PLL after missing clock detection, we first explicitly
            // switch the clock source to INTOSC1, reset the missing clock detect
            // circuit, and then re-lock the PLL.
            //
            // Configure oscillator source to INTOSC1.
            //
        SysCtl_selectOscSource(SYSCTL_OSCSRC_OSC1);
        SysCtl_connectMCDClockSource();
        // Reset the missing clock detection logic after clock failure.
        //
        SysCtl_resetMCD();
        // Set up PLL control and clock dividers using the original clock source.
        //
        SysCtl_setClock(DEVICE_SETCLOCK_CFG);
        // Check the system clock after the missing clock detection is cleared
        // and handled using INTOSC1 as clock source.
        //
        if(SysCtl_getClock(DEVICE_OSCSRC_FREQ) != DEVICE_SYSCLK_FREQ)
        {
           fail++;
        }
        // Status of a successful handling of missing clock detection.
        //
        if(fail != 0U)
        {
           result = 1;    //fail
        //   GPIO_writePin(43,0);
        }
        else
        {
           result = 0;   //pass
        //   GPIO_writePin(43,0);
        }
        while(1);
        //
        // Debug
        //
       // STA_Main_configXCLKOut();
    
        //
        // Configure SCI A as the main communication port
        //
      //  STA_Comm_configSCIA();
    
        //
        // Configure Timer 0 as the main time-out timer
        //
      //  STA_Timer_config(4000U);
    
    //#if STA_UTIL_PROFILE
    //    STA_Util_configProfiler(CPUTIMER1_BASE);
    //#endif
    
        //
        // Enable Global Interrupt (INTM) and real time interrupt (DBGM)
        //
    //    EINT;
    //    ERTM;
    
        //
        // Send starting message.
        //
     //   msg = "\r\n\n\nBegin Test\0";
    //    STA_Comm_transmitData(msg);
    
     /*   for(;;)
        {
    
            if(STA_Timer_isTimedOut())
            {
    
                if(enableErrorInject)
                {
                    STA_Tests_injectErrorEnable();
                }
                else
                {
                    STA_Tests_injectErrorDisable();
                }
    
                if(enableReset)
                {
                    STA_Tests_enableReset();
                }
                else
                {
                    STA_Tests_disableReset();
                }
    
                STA_Comm_transmitData(
                         STA_Tests_testDevice(STA_Tests_testArray[testIndex++]));
    
                if(testIndex >= STA_TESTS_NUMBERS)
                {
                    testIndex = 0U;
                }
                STA_Timer_restart();
            }
        }  */
    }
    
    //
    // STA_Main_configXCLKOut(void)
    //
    void STA_Main_configXCLKOut(void)
    {
        // Configure GPIO 73 as SYSCLK out
        GPIO_setPadConfig(73,GPIO_PIN_TYPE_STD);
        GPIO_setPinConfig(GPIO_73_XCLKOUT);
        // Clock source is SYSCLK
        SysCtl_selectClockOutSource(SYSCTL_CLOCKOUT_SYSCLK);
        EALLOW;
        // XCLOCK out = clock source /8
        HWREG(CLKCFG_BASE + SYSCTL_O_XCLKOUTDIVSEL) = 3U;
        EDIS;
    }
    
    //
    // STA_Main_initFlashAPI(void)
    //
    #pragma CODE_SECTION(STA_Main_initFlashAPI, ".TI.ramfunc");
    Fapi_StatusType STA_Main_initFlashAPI(void)
    {
        Fapi_StatusType returnStatus;
        //
        // Disable ECC when initializing the Flash API
        //
        Flash_disableECC(FLASH0ECC_BASE);
    
        EALLOW;
    
        //
        // This function is required to initialize the Flash API based on System
        // frequency before any other Flash API operation can be performed
        //
        returnStatus = Fapi_initializeAPI(F021_CPU0_BASE_ADDRESS,
                                          DEVICE_SYSCLK_FREQ / 1000000U);
    
        EDIS;
    
        return(returnStatus);
    }
    
    //
    // nmiISR -  The interrupt service routine called when the NMI
    //           is generated on clock failure detection.
    //
    __interrupt void nmi_isr(void)
    {
        nmiISRFlag = true;
        mcdDetect = SysCtl_isMCDClockFailureDetected();
        nmiStatus = SysCtl_getNMIFlagStatus();
        SysCtl_clearAllNMIFlags();
        GPIO_writePin(43,0);
    }
    
    //
    // End of File
    //

      这是我的源代码。

      您能否通过邮件向我提供经过测试的项目。

    此致!

    杨景平

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您的输入时钟是什么? INTOSC1/INTOSC2、X1 (或) XTAL?

    我看不到创建了缺失的时钟条件。 MCDCR.MCLKSTS 未设置为1。

    您可以尝试另一台设备吗? 我想知道您的器件是否有缺陷。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它是 XTAL、20MHz。

    [引用 userid="16855" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1166767/tms320f28075-missing-clock-detection-no-work/4397757 #4397757">我甚至看不到创建的缺少时钟条件。 MCDCR.MCLKSTS 未设置为1。[/报价]

    是的、它看起来缺少时钟条件、但未创建。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如前所述、我能够生成缺少时钟条件、这是我之前的帖子中附加的代码、并且能够在 CLOCKFAIL 条件下生成 NMI 中断。

    我建议您在不同的器件上尝试该实验。 您可能正在处理有缺陷的器件(可能是 ESD 故障)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、专家、

      我有 NMI、请参阅下图、

      

     但您可以看到、它输入了默认的 NMI_ISR、而不是我定义的中断函数。           interrupt_register (INT_NMI、STL_MCD_MisingClockNMIISR);     

      

    //###########################################################################
    //
    // FILE:  stl_mcd.c
    //
    // TITLE: Diagnostic Library Missing Clock Detect software module source
    //
    //###########################################################################
    // $TI Release: F2807x Diagnostic Library v1.00.02.00 $
    // $Release Date: Mon Dec 18 17:00:32 CST 2017 $
    // $Copyright:
    // Copyright (C) 2016-2017 Texas Instruments Incorporated - http://www.ti.com/
    //
    // Redistribution and use in source and binary forms, with or without 
    // modification, are permitted provided that the following conditions 
    // are met:
    // 
    //   Redistributions of source code must retain the above copyright 
    //   notice, this list of conditions and the following disclaimer.
    // 
    //   Redistributions in binary form must reproduce the above copyright
    //   notice, this list of conditions and the following disclaimer in the 
    //   documentation and/or other materials provided with the   
    //   distribution.
    // 
    //   Neither the name of Texas Instruments Incorporated nor the names of
    //   its contributors may be used to endorse or promote products derived
    //   from this software without specific prior written permission.
    // 
    // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    // $
    //###########################################################################
    
    //
    // Includes
    //
    #include "stl_mcd.h"
    #include "stl_util.h"
    #include "sysctl.h"
    #include "interrupt.h"
    
    //
    // Defines
    //
    #define STL_MCD_PIE_NMI_OFFSET      0x0024U
    
    //
    // Globals
    //
    volatile static bool STL_MCD_missingClockDetectedFlag = false;
    
    //*****************************************************************************
    //
    // STL_MCD_missingClockNMIISR(void)
    // DID_07_16
    //*****************************************************************************
    __interrupt void STL_MCD_missingClockNMIISR(void)
    {
        uint16_t watchdogCount1;
        uint16_t watchdogCount2;
    
        //
        // Get the MCD status.
        // DID_07_17
        //
        STL_MCD_missingClockDetectedFlag = SysCtl_isMCDClockFailureDetected();
    
        //
        // DID_07_19
        //
    
        //
        // Read WDCNT.
        //
        watchdogCount1 = SysCtl_getNMIWatchdogCounter();
    
        NOP;
        NOP;
    
        //
        // Read WDCNT.
        //
        watchdogCount2 = SysCtl_getNMIWatchdogCounter();
    
        //
        // Ensure the WDCNT has decreased.
        // DID_07_20
        //
        if(watchdogCount1 >= watchdogCount2)
        {
            //
            // Set the global error flag.
            //
            STL_Util_setErrorFlag(STL_UTIL_NMIWD);
        }
    
        //
        // Clear the NMI CLOCKFAIL flag and NMIINT flag if it is
        // the only flag left.
        // DID_07_18
        //
        SysCtl_clearNMIStatus(SYSCTL_NMI_CLOCKFAIL);
    }
    
    //*****************************************************************************
    //
    // STL_MCD_detect(const uint16_t nmiWatchdogPeriod, const uint16_t delay)
    // DID_07_03, DID_07_04
    //*****************************************************************************
    uint16_t STL_MCD_detect(const uint16_t nmiWatchdogPeriod,
                            const uint16_t delay)
    {
        /*LDRA_INSPECTED 8 D MR:R.2.2 Comment_8D*/
        uint16_t testStatus;
        uint32_t previousNMIVector;
    
        //
        // Reset the global missing clock detected flag.
        //
        STL_MCD_missingClockDetectedFlag = false;
    
        //
        // Clear any pending NMI flags.
        // DID_07_05
        //
        SysCtl_clearAllNMIFlags();
    
        //
        // Set the input NMI watchdog period.
        // DID_07_07
        //
        SysCtl_setNMIWatchdogPeriod(nmiWatchdogPeriod);
    
        //
        // DID_07_06, DID_07_08
        //
    
        //
        // Save previous NMI.
        //
        previousNMIVector = HWREG(PIEVECTTABLE_BASE + STL_MCD_PIE_NMI_OFFSET);
    
        //
        // Register the test NMI ISR.
        //
        Interrupt_register(INT_NMI, STL_MCD_missingClockNMIISR);
    
        //
        // Enable missing clock detection logic.
        // DID_07_21
        //
        SysCtl_enableMCD();
    
        //
        // Connect OSCCLK to missing clock detection logic.
        //
        SysCtl_connectMCDClockSource();
    
        //
        // Disable PLL. Ensure the PLL is out of our clock tree.
        //
        EALLOW;
        HWREGH(CLKCFG_BASE + SYSCTL_O_SYSPLLCTL1) &= ~(SYSCTL_SYSPLLCTL1_PLLCLKEN |
                                                       SYSCTL_SYSPLLCTL1_PLLEN);
        EDIS;
    
        //
        // Force a missing clock.
        // DID_07_09, DID_07_10
        //
    //    EALLOW;
    //    HWREGH(CLKCFG_BASE + SYSCTL_O_CLKSRCCTL1) |= SYSCTL_CLKSRCCTL1_INTOSC2OFF |
    //                                                 SYSCTL_CLKSRCCTL1_XTALOFF;
    //    EDIS;
    
        SysCtl_disconnectMCDClockSource();   //yang
        //
        // Need a short delay here (depending on SYSCLK) if disconnecting the clock
        // source does not generate an immediate interrupt.
        // DID_07_11
        //
        SysCtl_delay(delay);
        //
        // DID_07_12
        //
        if(STL_MCD_missingClockDetectedFlag && !((bool)SysCtl_getNMIFlagStatus()))
        {
            //
            // DID_07_14
            //
            testStatus = STL_MCD_PASS;
        }
        else
        {
            //
            // DID_07_13
            //
    
            //
            // Set the global error flag.
            //
            STL_Util_setErrorFlag(STL_UTIL_MCD);
    
            testStatus = STL_MCD_FAIL;
        }
    
        //
        // Restore and reset the clock.
        // DID_07_15
        //
        EALLOW;
        HWREGH(CLKCFG_BASE + SYSCTL_O_CLKSRCCTL1) &=
                       ~(SYSCTL_CLKSRCCTL1_INTOSC2OFF | SYSCTL_CLKSRCCTL1_XTALOFF);
        EDIS;
    
        //
        // Reset missing clock detection mechanism.
        //
        SysCtl_resetMCD();
    
        //
        // Restore NMI.
        // DID_07_06
        //
        Interrupt_register(INT_NMI, (void (*)(void))previousNMIVector);
    
        return(testStatus);
    }
    
    //
    // End of File
    //

     从源代码中,我定义了 NMI 中断   __interrupt void STL_MCD_MisingClockNMIISR (void)

     并记录 了中断   中断_寄存器(INT_NMI、STL_MCD_MisingClockNMIISR);

      是否有配置 NMI 的地方?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您需要传递 NMI 子例程的地址、如下所示

     interrupt_register (INT_NMI、&STL_MCD_MisingClockNMIISR);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、专家、

       问题已解决。 感谢您的支持。

    此致、

    杨景平

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    关闭此主题