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.

[参考译文] CCS/RF430FRL152HEVM:CCS:在 NFC 状态下的照明 LED。

Guru**** 2478765 points
Other Parts Discussed in Thread: RF430FRL152HEVM, RF430FRL152H, PCA9306

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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/789684/ccs-rf430frl152hevm-ccs-lighting-led-in-nfc-state

器件型号:RF430FRL152HEVM
主题中讨论的其他器件: RF430FRL152HPCA9306

工具/软件:Code Composer Studio

大家好、我是 CCS 初学者。 我目前使用的是 RF430FRL152HEVM、而我使用的是 MSP-EXPG2ET 和 TRF7970 BoosterPack 作为开发套件。 我想实现 NFC 以12Hz 的间隔闪烁两个 LED。 我不知道具体情况、但我认为我需要使用"中断"。 代码创建如下:我尝试将其放入示例代码中。 如何使其作为"中断"工作? 除了"中断"之外、还有其他方法吗?


P1DIR|=BIT0;//设置 p1.0输出

P1OUT&=~BIT0;//清除 p1.0


P1DIR|=BIT1;//设置 p1.1输出

P1OUT&=~BIT1;//清除 p1.1


while (1)

P1OUTL.|=BIT0&(~BIT1);//清除 p1.1,设置 p1.0

_DELAY_CYCLES (83);//频率设置为12Hz 占空比50:50

P1OUT|=BIT1 &(~BIT0);//清除 p1.0,设置 p1.1

_DELAY_CYCLES (83);



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

    使用__delay_cycles 不是实现延迟的最佳方法,因为在这种情况下,处理器处于完全活动状态并消耗功率。
    正如您所写的那样、使用中断是实现这一目的的更好方法。 当处理器等待中断时、它可以处于低功耗模式。
    最好的方法是为该延迟设置具有中断的计时器。

    您可以在此处找到计时器的代码示例:

    www.ti.com/.../slac457

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

    我使用计时器 A0中断编写代码。 可以看到、它在由 USB 供电时工作正常。 但是、使用 NFC 操作时、LED 不会发光。 请告诉我原因。 我记下了以下代码。 我使用 RF430FRL152HEVM 作为 NFC 从设备、而 NFC 主设备使用 MSP-EXPG2ET 和 TRF7970 BoosterPack。

    /*
    * main.c
    *
    * RF430FRL152H 仅 NFC 示例项目
    *
    *版权所有(C) 2014德州仪器(TI)公司- http://www.ti.com/
    *
    *
    *以源代码和二进制形式重新分发和使用、有无
    *如果满足以下条件、则允许进行修改
    符合*:
    *
    *源代码的重新分发必须保留上述版权
    *注意、此条件列表和以下免责声明。
    *
    *二进制形式的再发行必须复制上述版权
    *请注意、中的此条件列表和以下免责声明
    *随提供的文档和/或其他材料
    *分发。
    *
    *德州仪器公司的名称和名称均不相同
    *其贡献者可用于认可或推广衍生产品
    *未经特定的事先书面许可。
    *
    *本软件由版权所有者和贡献者提供
    *"按原样"以及任何明示或暗示的保证、包括但不包括
    *仅限于对适销性和适用性的暗示保证
    *一项特定目的不予承认。 在任何情况下、版权均不得
    *所有者或贡献者应对任何直接、间接、偶然或
    *特殊、惩戒性或后果性损害(包括但不包括)
    *仅限于采购替代货物或服务;丧失使用、
    *数据或利润;或业务中断)
    *责任理论、无论是合同责任、严格责任还是侵权行为
    *(包括疏忽或其他)因使用而以任何方式产生
    *、即使被告知可能会发生此类损坏。
    *
    *

    #include "NDEF.h"
    #include "types.h"
    #include "patch.h"
    #include

    //********* 函数原型******** /
    void DeviceInit(void);
    // /

    /******* 总结
    *此项目*仅*使用 RF430FRL15xH ROM 上的射频堆栈(ISO15693)。 此设置允许用户进行
    *从 FRAM 运行的自定义应用程序。 只有运行 RF 堆栈的 RF13M 矢量需要指向它
    * ROM 位置。
    *

    /
    *代码空间
    (三
    *
    *请检查 lnk_rf430frl152h_NFC_only.cmd 文件以自定义用于 NDEF 消息的代码空间("FRAM_NDEF")
    或用于代码("FRAM_CODE")。
    *
    (二 /

    /
    *主
    (三
    *
    *简介:项目条目。
    *
    * param[in]:无
    *
    *
    * param[out]:无
    *
    *返回:
    *
    (二 /

    void main()

    WDTCTL = WDTPW + WDTHOLD;//停止看门狗

    // ROM RF13M 模块设置**正确的 RF 堆栈操作需要以下三行
    DS = 1;//需要在此处初始化 ROM 变量
    ASM ("调用#0x5CDA ");//调用 ROM 函数(初始化函数指针)
    ASM ("调用#0x5CAC ");//调用 ROM 函数(检查器件配置)


    P1OUT&=~BIT0;
    P1OUT&=~BIT1;

    initISO15693 (clear_block_locks);
    DeviceInit();
    P1DIR|=BIT0;
    P1DIR|=BIT1;


    while (1)

    _bis_SR_register (LPM3_bits + GIE);


    /
    * DeviceInit
    (三
    *
    *简介:初始化时钟系统和其他设置
    *可修补函数
    *
    * param[in]:parameters:具有这些独立选项
    * initialize_device_clock_system -初始化时钟系统
    * populate_interrupt_vector_in_initialization -填充默认中断矢量并重新计算其 CRC
    *
    * param[out]:无
    *
    *无返回
    *
    *可修补:是的
    (二 /
    void DeviceInit (void)


    RFPMMCTL0 = PMMPW;//解锁 RFPMM
    RFPMMCTL0_L |= RFPMM_EN_BATSWITCH;//启用电池开关
    RFPMMCTL0_H |= 0xFF;//锁定寄存器

    P1SEL0 = 0xF0;//保留 JTAG
    P1SEL1 = 0xF0;//保留 JTAG

    P1DIR &=~0xEF;
    P1REN = 0;

    CCSCTL0 = CCSKEY;//解锁 CCS

    CCSCTL1 = 0;//时钟速度的一半

    CCSCTL4 = SELA_1+ SELM_0+ SELS_0;

    CCSCTL5 = DIV_2 +// ACLK 源分频器设置为32分频->8kHz
    DIVM_1 +// MCLK 源分频器设置为2分频
    DIVS_1;// SMCLK 源分频器设置为4分频

    CCSCTL6 = XTOFF;//关闭 XT 振荡器

    CCSCTL8 = ACLKREQEN +// ACLK 时钟请求使能
    MCLKREQEN +// MCLK 时钟请求使能
    SMCLKREQEN;// SMCLK 时钟请求使能

    TA0CCTL0 = CCIE;//定时器 A0捕捉/比较中断使能


    TA0CTL = TASSEL_ACLK +// Timer_A 时钟源选择-> ACLK
    MC_1+//模式控制、定时器向上计数到存储在 TA0CCR0中的值
    ID_3;//模式控制、定时器向上计数到存储在 TA0CCR0中的值

    TA0CCR0 = 39;

    CCSCTL0_H |= 0xFF;

    返回;


    #pragma vector = TIMER0_A0_vector
    _interrupt void TimerA0_ISR (void)

    P1OUT^= BIT0;
    P1OUT^= BIT1;

    / /

    //#pragma CODE_SECTION (RFPMM_ISR、".fram_driver_code")//注释此行以使用 ROM 的 RFPMM ISR、取消注释下一行
    #pragma CODE_SECTION (RFPMM_ISR、".rfpmm_ROM_ISR")//注释此行以创建将存在于 FRAM 中的定制 RFPMM ISR、绕过 ROM、取消注释之前的内容
    #pragma vector = RFPMM_vector
    _interrupt void RFPMM_ISR (void)

    //#pragma CODE_SECTION (Port1_ISR、".fram_driver_code")//注释此行以使用 ROM 的 Port1 ISR、取消注释下一行
    #pragma CODE_SECTION (PORT1_ISR、".port1_ROM_ISR")//注释此行以创建将存在于 FRAM 中的自定义 Port1 ISR、绕过 ROM、取消注释之前的内容
    #pragma vector = Port1_vector
    _interrupt void Port1_ISR (void)

    //#pragma CODE_SECTION (SD_ADC_ISR、".fram_driver_code")//注释此行以使用 ROM 的 SD14_ADC ISR、取消注释下一行
    #pragma CODE_SECTION (SD_ADC_ISR、".SD_14_ROM_ISR")//注释此行以创建将存在于 FRAM 中的定制 SD14_ADC ISR、绕过 ROM、取消注释之前的内容
    #pragma vector = SD_ADC_vector
    _interrupt void SD_ADC_ISR (void)

    //#pragma CODE_SECTION (USCI_B0_ISR、".fram_driver_code")//注释此行以使用 ROM 的 USCI_B0 ISR、取消注释下一行
    #pragma CODE_SECTION (USCI_B0_ISR、".USCI_B0_ROM_ISR")//注释此行以创建将存在于 FRAM 中的定制 USCI_B0 ISR、绕过 ROM、取消注释之前的注释
    #pragma vector = USCI_B0_vector
    _interrupt void USCI_B0_ISR (void)

    //#pragma CODE_SECTION (RF13M_ISR、".fram_driver_code")//注释此行以使用 ROM 的 RF13M ISR、取消注释下一行
    #pragma CODE_SECTION (RF13M_ISR、".rf13m_ROM_ISR")//注释此行以创建将存在于 FRAM 中的定制 RF13M ISR、绕过 ROM、取消注释之前的内容
    #pragma vector = RF13M_vector
    _interrupt void RF13M_ISR (void)

    //#pragma CODE_SECTION (WDT_ISR、".fram_driver_code")//注释此行以使用 ROM 的 WDT ISR、取消注释下一行
    #pragma CODE_SECTION (WDT_ISR、".WDT_ROM_ISR")//注释此行以创建将存在于 FRAM 中的自定义 WDT ISR、绕过 ROM、取消注释之前的内容
    #pragma vector = WDT_Vector
    _interrupt void WDT_ISR (void)

    //#pragma CODE_SECTION (TimerA1_ISR、".fram_driver_code")//注释此行以使用 ROM 的 Timer_A1 ISR、取消注释下一行
    #pragma CODE_SECTION (TimerA1_ISR、".timer_A1_ROM_ISR")//注释此行以创建将存在于 FRAM 中的自定义 WDT ISR TimerA1、绕过 ROM、取消注释之前的内容
    #pragma vector = TIMER0_A1_vector
    _interrupt void TimerA1_ISR (void)

    //#pragma CODE_SECTION (TimerA0_ISR、".fram_driver_code")//注释此行以使用 ROM 的 Timer_A0 ISR、取消注释下一行
    //#pragma CODE_SECTION (TimerA0_ISR、".timer_a0_ROM_ISR")//注释此行以创建 FRAM 中将存在的自定义 WDT ISR Timer_A0、绕过 ROM、取消注释之前的注释


    //#pragma CODE_SECTION (UNMI_ISR、".fram_driver_code")//注释此行以使用 ROM 的 UNMI ISR、取消注释下一行
    #pragma CODE_SECTION (UNMI_ISR、".unmi_ROM_ISR")//注释此行以创建将存在于 FRAM 中的自定义 WDT UNMI ISR、绕过 ROM、取消注释之前的内容
    #pragma vector = UNMI_Vector
    _interrupt void UNMI_ISR (void)

    //#pragma CODE_SECTION (SysNMI_ISR、".fram_driver_code")//注释此行以使用 ROM 的 SYSNMI ISR、取消注释下一行
    #pragma CODE_SECTION (SysNMI_ISR、".SYSNMI_ROM_ISR")//注释此行以创建将存在于 FRAM 中的自定义 WDT SYSNMI ISR、绕过 ROM、取消注释之前的内容
    #pragma vector = SYSNMI_Vector
    _interrupt void SysNMI_ISR (void)

    #pragma RETAIN (RESET_ISR);
    //#pragma CODE_SECTION (Reset_ISR、".fram_driver_code")//注释此行以使用 ROM 的复位 ISR、取消注释下一行
    #pragma CODE_SECTION (RESET_ISR、".RESET_ROM_ISR")//注释此行以创建将存在于 FRAM 中的自定义 WDT 复位 ISR、绕过 ROM、取消注释之前的内容
    #pragma vector = RESET_Vector
    extern __interrupt void Reset_ISR (void)

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

    器件型号:RF430FRL152HEVM

    工具/软件:Code Composer Studio

    我使用计时器 A0中断编写代码。 可以看到、它在由 USB 供电时工作正常。 但是、使用 NFC 操作时、LED 不会发光。 请告诉我原因。 我记下了以下代码。 我使用 RF430FRL152HEVM 作为 NFC 从设备、而 NFC 主设备使用 MSP-EXPG2ET 和 TRF7970 BoosterPack。

    /*
    * main.c
    *
    * RF430FRL152H 仅 NFC 示例项目
    *
    *版权所有(C) 2014德州仪器(TI)公司- http://www.ti.com/  
    *  
    *  
    *以源代码和二进制形式重新分发和使用、有无  
    *如果满足以下条件、则允许进行修改  
    符合*:
    *
    *源代码的重新分发必须保留上述版权  
    *注意、此条件列表和以下免责声明。
    *
    *二进制形式的再发行必须复制上述版权
    *请注意、中的此条件列表和以下免责声明  
    *随提供的文档和/或其他材料  
    *分发。
    *
    *德州仪器公司的名称和名称均不相同
    *其贡献者可用于认可或推广衍生产品
    *未经特定的事先书面许可。
    *
    *本软件由版权所有者和贡献者提供  
    *"按原样"以及任何明示或暗示的保证、包括但不包括  
    *仅限于对适销性和适用性的暗示保证
    *一项特定目的不予承认。 在任何情况下、版权均不得  
    *所有者或贡献者应对任何直接、间接、偶然或  
    *特殊、惩戒性或后果性损害(包括但不包括)  
    *仅限于采购替代货物或服务;丧失使用、
    *数据或利润;或业务中断)
    *责任理论、无论是合同责任、严格责任还是侵权行为  
    *(包括疏忽或其他)因使用而以任何方式产生  
    *、即使被告知可能会发生此类损坏。
    *
    *

    #include "NDEF.h"
    #include "types.h"
    #include "patch.h"
    #include

    //********* 函数原型******** /
    void DeviceInit(void);
    // /

    /******* 总结
    *此项目*仅*使用 RF430FRL15xH ROM 上的射频堆栈(ISO15693)。 此设置允许用户进行
    *从 FRAM 运行的自定义应用程序。 只有运行 RF 堆栈的 RF13M 矢量需要指向它
    * ROM 位置。
    *

    /
    *代码空间
    (三
    *
    *请检查 lnk_rf430frl152h_NFC_only.cmd 文件以自定义用于 NDEF 消息的代码空间("FRAM_NDEF")
    或用于代码("FRAM_CODE")。  
    *
    (二 /

    /
    *主
    (三
    *
    *简介:项目条目。
    *
    * param[in]:无
    *
    *
    * param[out]:无
    *
    *返回:
    *
    (二 /

    void main()

    WDTCTL = WDTPW + WDTHOLD;//停止看门狗

    // ROM RF13M 模块设置**正确的 RF 堆栈操作需要以下三行
    DS = 1;//需要在此处初始化 ROM 变量
    ASM ("调用#0x5CDA ");//调用 ROM 函数(初始化函数指针)
    ASM ("调用#0x5CAC ");//调用 ROM 函数(检查器件配置)


    P1OUT&=~BIT0;
    P1OUT&=~BIT1;

    initISO15693 (clear_block_locks);
    DeviceInit();
    P1DIR|=BIT0;
    P1DIR|=BIT1;


    while (1)

    _bis_SR_register (LPM3_bits + GIE);


    /
    * DeviceInit
    (三
    *
    *简介:初始化时钟系统和其他设置
    *可修补函数
    *
    * param[in]:parameters:具有这些独立选项
    * initialize_device_clock_system -初始化时钟系统
    * populate_interrupt_vector_in_initialization -填充默认中断矢量并重新计算其 CRC
    *
    * param[out]:无
    *
    *无返回
    *
    *可修补:是的
    (二 /
    void DeviceInit (void)


    RFPMMCTL0 = PMMPW;//解锁 RFPMM
    RFPMMCTL0_L |= RFPMM_EN_BATSWITCH;//启用电池开关
    RFPMMCTL0_H |= 0xFF;//锁定寄存器

    P1SEL0 = 0xF0;//保留 JTAG
    P1SEL1 = 0xF0;//保留 JTAG

    P1DIR &=~0xEF;
    P1REN = 0;

    CCSCTL0 = CCSKEY;//解锁 CCS

    CCSCTL1 = 0;//时钟速度的一半

    CCSCTL4 = SELA_1+ SELM_0+ SELS_0;

    CCSCTL5 = DIV_2 +// ACLK 源分频器设置为32分频->8kHz
    DIVM_1 +// MCLK 源分频器设置为2分频
    DIVS_1;// SMCLK 源分频器设置为4分频

    CCSCTL6 = XTOFF;//关闭 XT 振荡器

    CCSCTL8 = ACLKREQEN +// ACLK 时钟请求使能
    MCLKREQEN +// MCLK 时钟请求使能
    SMCLKREQEN;// SMCLK 时钟请求使能

    TA0CCTL0 = CCIE;//定时器 A0捕捉/比较中断使能


    TA0CTL = TASSEL_ACLK +// Timer_A 时钟源选择-> ACLK
    MC_1+//模式控制、定时器向上计数到存储在 TA0CCR0中的值
    ID_3;//模式控制、定时器向上计数到存储在 TA0CCR0中的值

    TA0CCR0 = 39;

    CCSCTL0_H |= 0xFF;

    返回;


    #pragma vector = TIMER0_A0_vector
    _interrupt void TimerA0_ISR (void)

    P1OUT^= BIT0;
    P1OUT^= BIT1;

    / /

    //#pragma CODE_SECTION (RFPMM_ISR、".fram_driver_code")//注释此行以使用 ROM 的 RFPMM ISR、取消注释下一行
    #pragma CODE_SECTION (RFPMM_ISR、".rfpmm_ROM_ISR")//注释此行以创建将存在于 FRAM 中的定制 RFPMM ISR、绕过 ROM、取消注释之前的内容
    #pragma vector = RFPMM_vector
    _interrupt void RFPMM_ISR (void)

    //#pragma CODE_SECTION (Port1_ISR、".fram_driver_code")//注释此行以使用 ROM 的 Port1 ISR、取消注释下一行
    #pragma CODE_SECTION (PORT1_ISR、".port1_ROM_ISR")//注释此行以创建将存在于 FRAM 中的自定义 Port1 ISR、绕过 ROM、取消注释之前的内容
    #pragma vector = Port1_vector
    _interrupt void Port1_ISR (void)

    //#pragma CODE_SECTION (SD_ADC_ISR、".fram_driver_code")//注释此行以使用 ROM 的 SD14_ADC ISR、取消注释下一行
    #pragma CODE_SECTION (SD_ADC_ISR、".SD_14_ROM_ISR")//注释此行以创建将存在于 FRAM 中的定制 SD14_ADC ISR、绕过 ROM、取消注释之前的内容
    #pragma vector = SD_ADC_vector
    _interrupt void SD_ADC_ISR (void)

    //#pragma CODE_SECTION (USCI_B0_ISR、".fram_driver_code")//注释此行以使用 ROM 的 USCI_B0 ISR、取消注释下一行
    #pragma CODE_SECTION (USCI_B0_ISR、".USCI_B0_ROM_ISR")//注释此行以创建将存在于 FRAM 中的定制 USCI_B0 ISR、绕过 ROM、取消注释之前的注释
    #pragma vector = USCI_B0_vector
    _interrupt void USCI_B0_ISR (void)

    //#pragma CODE_SECTION (RF13M_ISR、".fram_driver_code")//注释此行以使用 ROM 的 RF13M ISR、取消注释下一行
    #pragma CODE_SECTION (RF13M_ISR、".rf13m_ROM_ISR")//注释此行以创建将存在于 FRAM 中的定制 RF13M ISR、绕过 ROM、取消注释之前的内容
    #pragma vector = RF13M_vector
    _interrupt void RF13M_ISR (void)

    //#pragma CODE_SECTION (WDT_ISR、".fram_driver_code")//注释此行以使用 ROM 的 WDT ISR、取消注释下一行
    #pragma CODE_SECTION (WDT_ISR、".WDT_ROM_ISR")//注释此行以创建将存在于 FRAM 中的自定义 WDT ISR、绕过 ROM、取消注释之前的内容
    #pragma vector = WDT_Vector
    _interrupt void WDT_ISR (void)

    //#pragma CODE_SECTION (TimerA1_ISR、".fram_driver_code")//注释此行以使用 ROM 的 Timer_A1 ISR、取消注释下一行
    #pragma CODE_SECTION (TimerA1_ISR、".timer_A1_ROM_ISR")//注释此行以创建将存在于 FRAM 中的自定义 WDT ISR TimerA1、绕过 ROM、取消注释之前的内容
    #pragma vector = TIMER0_A1_vector
    _interrupt void TimerA1_ISR (void)

    //#pragma CODE_SECTION (TimerA0_ISR、".fram_driver_code")//注释此行以使用 ROM 的 Timer_A0 ISR、取消注释下一行
    //#pragma CODE_SECTION (TimerA0_ISR、".timer_a0_ROM_ISR")//注释此行以创建 FRAM 中将存在的自定义 WDT ISR Timer_A0、绕过 ROM、取消注释之前的注释


    //#pragma CODE_SECTION (UNMI_ISR、".fram_driver_code")//注释此行以使用 ROM 的 UNMI ISR、取消注释下一行
    #pragma CODE_SECTION (UNMI_ISR、".unmi_ROM_ISR")//注释此行以创建将存在于 FRAM 中的自定义 WDT UNMI ISR、绕过 ROM、取消注释之前的内容
    #pragma vector = UNMI_Vector
    _interrupt void UNMI_ISR (void)

    //#pragma CODE_SECTION (SysNMI_ISR、".fram_driver_code")//注释此行以使用 ROM 的 SYSNMI ISR、取消注释下一行
    #pragma CODE_SECTION (SysNMI_ISR、".SYSNMI_ROM_ISR")//注释此行以创建将存在于 FRAM 中的自定义 WDT SYSNMI ISR、绕过 ROM、取消注释之前的内容
    #pragma vector = SYSNMI_Vector
    _interrupt void SysNMI_ISR (void)

    #pragma RETAIN (RESET_ISR);
    //#pragma CODE_SECTION (Reset_ISR、".fram_driver_code")//注释此行以使用 ROM 的复位 ISR、取消注释下一行
    #pragma CODE_SECTION (RESET_ISR、".RESET_ROM_ISR")//注释此行以创建将存在于 FRAM 中的自定义 WDT 复位 ISR、绕过 ROM、取消注释之前的内容
    #pragma vector = RESET_Vector
    extern __interrupt void Reset_ISR (void)

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


    您在哪里连接了 LED?
    如果您使用了 SV10 (BPACK_SDA)的引脚6、则中间有一个电平转换器(PCA9306)、在不使用 USB 或电池时、该电平转换器不会通电。

    另一方面、如果您连接了一个 LED、则无法通过射频提供足够的功率来驱动您的 LED。

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

    感谢你的答复。
    如果用射频功率为 LED 供电还不够、我可以用计时器 A 中断激活 VDDB 或 CP1并使 LED 闪烁吗?

    还有一个问题。 通常情况下、定时器中断发生、当所有代码在中断中执行时、它退出中断。 但是、它不会立即退出"中断"、它会在内部重复多次代码、然后退出。

     我用"步越"确认了这一点。 造成这种情况的原因是什么?解决方案是什么?

    此致、

    敏衡康

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

    您的系统是射频供电还是使用电池?

    我认为 ISR 中的代码不会重复。 如果是这种情况、您将看到 LED 输出的时序要快。
    您能否使用示波器监控输出?

    假设 ISR 存在调试问题。 当您单步执行代码时、会同时发生下一个 IRQ。

    您可以在调试期间尝试禁用计时器时钟。
    使用 CCS 进行调试时、转至菜单"Tools -> Debugger Options"并禁用计时器时钟。

    此致、
    Helfried