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.

[参考译文] MSPM0G3507:关于 SysTick 处理程序

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1397548/mspm0g3507-regarding-systick-handler

器件型号:MSPM0G3507

工具与软件:

尊敬的 TI:

我们将使用以下 MSPM0G3507 --> SDK 2.0.0.1和 CCS studio

我们已经  在上面的 MCU 上开发了我们的应用程序代码(同样,我们正在使用 ADC、CAN、PWM 计时器、IC 等),我们面临的问题是,当我们在没有硬件板的情况下运行我们的应用程序代码(在所有其他硬件逻辑实现像 PI 控制器到当前设置的其他东西),它工作正常。

但是、当我们为硬件板加电时、MCU 会在 MCU 停止(停止运行)后运行一段时间。 我们检查 HARD_FAULT 处理程序以重置 MCU ,但没有硬故障触发,甚至 SysTick 得到停止。

我们无法找到相同的可能原因、

您能告诉我们哪些事情使 MCU 停止了吗?我们检查了 MCU 电压3.3和 GND 也没有问题。  

此致

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

    有一个较新版本的 SDK。

    您是否曾尝试过用调试器暂停它、以查看您是否在默认的中断处理程序中? 如果是、您可以添加以下代码:

    /*
    * These are traps for debugging when you find that your code
    * ends up in the default handler for some unknown reason.
    * To keep the compiler from complaining, comment out the ones
    * below if you already have a working handler for that vector.
    *
    */
    void NMI_Handler(void){ __BKPT(0);}
    void HardFault_Handler(void){ __BKPT(0);}
    void SVC_Handler(void){ __BKPT(0);}
    void PendSV_Handler(void){ __BKPT(0);}
    void SysTick_Handler(void){ __BKPT(0);}
    void GROUP0_IRQHandler(void){ __BKPT(0);}
    void GROUP1_IRQHandler(void){ __BKPT(0);}
    void TIMG8_IRQHandler(void){ __BKPT(0);}
    void UART3_IRQHandler(void){ __BKPT(0);}
    //void ADC0_IRQHandler(void){ __BKPT(0);}
    //void ADC1_IRQHandler(void){ __BKPT(0);}
    void CANFD0_IRQHandler(void){ __BKPT(0);}
    void DAC0_IRQHandler(void){ __BKPT(0);}
    void SPI0_IRQHandler(void){ __BKPT(0);}
    void SPI1_IRQHandler(void){ /*__BKPT(0);*/ return;}
    void UART1_IRQHandler(void){ __BKPT(0);}
    void UART2_IRQHandler(void){ __BKPT(0);}
    void UART0_IRQHandler(void){ __BKPT(0);}
    void TIMG0_IRQHandler(void){ __BKPT(0);}
    void TIMG6_IRQHandler(void){ __BKPT(0);}
    void TIMA0_IRQHandler(void){ __BKPT(0);}
    void TIMA1_IRQHandler(void){ __BKPT(0);}
    void TIMG7_IRQHandler(void){ __BKPT(0);}
    void TIMG12_IRQHandler(void){ __BKPT(0);}
    void I2C0_IRQHandler(void){ __BKPT(0);}
    void I2C1_IRQHandler(void){ __BKPT(0);}
    void AES_IRQHandler(void){ __BKPT(0);}
    void RTC_IRQHandler(void){ __BKPT(0);}
    void DMA_IRQHandler(void){ __BKPT(0);}

    以查看您忘记了哪个中断处理程序。

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

    根据上述约定、如果可能、您可以使用调试器连接到器件、并告诉我们在器件暂停/停机时器件上正在运行哪些代码。 这将有助于确定问题是什么。

    此外、您会说这种情况仅在您首次为器件加电时发生、而随后在您调试它时发生? 我不清楚这是什么流程/什么是有效的、什么是无效的。

    您使用的是定制硬件还是 TI Launchpad?

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

    尊敬的 Dylan:

    是的,我们正在使用定制硬件(嵌入  MSPM0G3507 MCU ),在该板上有一些其他硬件逻辑实现,如使用 OPAMP 的 PI 控制器,+12和12电压到3.3V LDO 和 RC 滤波器等  

    基本上,简而言之,我们的应用程序代码改变了 PWM 的占空比,并根据 我们控制 PI 环路以增加其他硬件板的电流流量,但我们面对的是,我们能够长时间流高达2 -5安培,但随着我们增加占空比以增加电流(16安培) 1分钟,然后 MCU 停止。

    由于噪音大、我们无法对其进行调试、所以我们只是在刷写和运行应用程序代码。  

    此致、

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

    我不清楚噪声是如何阻止您调试器件的、您可以详细说明一下吗? 是否有办法从嘈杂的环境中移除器件进行调试? 我们需要某种器件内部状态指标来开始弄清器件停止运行的原因。

    我的另一个想法可能会有所帮助->您的定制硬件是否在启动/复位期间将 PA18保持在低电平? PA18是默认的 BSL 调用引脚、如果在启动时或复位期间未拉至低电平、器件将进入 BSL 模式。 这听起来是否可能是问题的罪魁祸首?

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

    如果有一些可用的备用 GPIO、可以在所有这些中断处理程序中将它们设置为用于标识它们的一部分。 但这将是乏味的到极致。

    您还可以使用、假设4个 GPIO、并根据每个中断的二进制代码设置它们:

    UART_0将为0001

    UART_1将是0010

    UART_2将是0011

    依此类推。