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.

[参考译文] MSP430FR5972:调试模式期间出错

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/590152/msp430fr5972-error-during-debug-mode

器件型号:MSP430FR5972

大家好、

当我运行我的项目时、它被卡住、并出现一条消息、例如没有可用于"0x605DE"的源代码  

没有"0x605DE"源可用  

建议我如何解决这个问题。  

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

    请您分享您的代码并准确解释代码在何处以及何时到达0x605DE。 如果您不知道这些问题的答案、请分享您的代码、我将尝试复制此代码并返回给您。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Nima、

    实际上、当代码行进入 UART ISR 时、此按摩就会开始


    我的 UART ISR 如下所示:


    #if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
    #pragma vector=USCI_A0_Vector
    _interrupt void USCI_A0_ISR (void)
    #Elif defined (_GNU_)
    void __attribute__((中断(USCI_A0_Vector)) USCI_A0_ISR (void)
    其他
    错误编译器不受支持!
    #endif

    switch (__evo_in_range (UCA0IV、USCI_UART_UCTXCPTIFG))

    USCI_NONE 案例:中断;
    USCI_UART_UCRXIFG 案例:

    bufLen=strlen (u8serialcommand);
    if (arr_size <= 49 || UCA0RXBUF == 0x0D)

    arr_size++;
    u8serialcommand[bufLen]=UCA0RXBUF;

    _BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);//在 TI 上退出 LPM0
    案例 USCI_UART_UCTXIFG:中断;
    案例 USCI_UART_UCSTTIFG:中断;
    案例 USCI_UART_UCTXCPTIFG:中断;





    注意:还有一件事,我使用的是 API idle_state();问题仅在执行此 API 后才出现。 如果我对该 API 进行评论、则不会出现问题。 下面我还将发送此 API:



    int idle_mode (void)

    uint32_t VOLT_batt = 0;
    uint32_t 7e_days_count=0;
    // ASIC_disableStim (0);
    // ASIC_disableStim (1);
    LED_STimOff ();
    UART_putstring ("\r\n");

    操作

    VOLT_batt = read_bat_volt ();//读取电池电压
    if (FourgetHrTimerCount ()==1)//它应该是4_Hour_Count+14400而不是4小时的16

    uint32_t intRTCval;
    intRTCval = atoi (DATE_TIME);
    UART_putstring ("\r\nIdle 中的4小时循环\r\n);
    FRAM_WRITE (0x004400、intRTCval);
    //four_Hour_Count = 0;
    //u32FourHrTimerCnt = 0;
    7_DAY_COUNT++;


    if (7e_days_count = 4) //应该是42而不是4

    teEtsState = ETS_LPM_State;
    UART_putstring ("\r\n7天循环\r\n);
    中断;

    if ((!(buttonPressed()))|| VOLT_batt <= VIN (min))

    if (VOLT_batt < BAT_LOW)

    P1OUT ^= BIT3; //切换电池黄色 LED
    _delay_cycles (10000);

    否则、如果(VOLT_batt >= BAT_LOW)

    P1OUT = BIT2;
    _DELAY_CYCLES (50000);


    其他

    //uart_putstring ("\r\n 未按下按钮或 VBAT < BAT_LOW \r\n");
    P1OUT =~BIT2;


    }while (!(VOLT_batt < BAT_MIN));
    UART_putstring ("\r\nBreak 已执行\r\n");
    teEtsState = ETS_HIBERNATE_STATE;
    返回 tetEtsState;

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

    您好!

    当单步执行代码时、哪一行会导致 MCU 跳转到0x605DE?

    MSP 在转至0x605DE 后是否恢复、或者是否卡在该状态?

    我希望看到0x605de 处的确切位置。

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

    当 UART Rx 中断生成时、案例 USCI_UART_UCRXIFG

    在该行程序停止后、我暂停单个内联步骤、该错误随之出现

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否分享用于设置 UART 的代码行?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    以下是您的代码中必须解决的问题。 在 UART 中断中、switch 语句具有不同的中断源情况。 您必须在案例中"打破;"。 您的代码缺少"_BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);//在 RETI 上退出 LPM0。"行后面的"break"。 请尝试添加此行并重试吗?


    我尝试固定原因。

    我知道 eUSCI_A0寄存器位于基址:05C0h。
    UCA0IV 被0x1E 偏移。 它将 UCA0IV 定位在05DE (0x605DE 是您的代码被卡住的地方)。

    如果您可以向我发送您的代码、我将能够在我的一侧对其进行测试。

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

    请您回答我的上述问题吗?

    谢谢、
    NIMA Eskandari