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.

[参考译文] 24.3 Driverlib 程序示例中的 loader_exit 错误

Guru**** 2544130 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/589308/loader_exit-error-with-24-3-driverlib-program-example

器件型号:MSP432P401R
// DriverLib 包括
#include 

//标准包括
#include 

#include 
// Timer_A PWM 配置参数
Timer_A_PWMConfig pwmConfig =
{
Timer_A_CLOCKSOURCE_SMCLK、
Timer_A_CLOCKSOURCE_divider _1、
32000、
Timer_A_CAPTURECOMPARE 寄存器_1、
Timer_A_OUTPUTMODE_RESET_SET、
3200
};

int main (void)
{
//停止看门狗
MAP_WDT_A_HOLDTimer();
//对于 LF 模式、将 MCLK 设置为 REFO 128Khz
//将 SMCLK 设置为64Khz
MAP_CS_setReferenceOscillatorFrequency (CS_REFO_128KHZ);
MAP_CS_initClockSignal (CS_MCLK、CS_REFOCLK_SELECT、CS_CLOCK_DELUGER_1);
MAP_CS_initClockSignal (CS_SMCLK、CS_REFOCLK_SELECT、CS_CLOCK_DEVIDER_2);
MAP_PCM_setPowerState (PCM_AM_LF_VCORE0);

//将 GPIO6.4配置为 PWM 的外设输出、将 P6.7配置为按钮中断
MAP_GPIO_setAsOutputPin (GPIO_PORT_P6、GPIO_PIN4);
MAP_GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P6、GPIO_PIN4、GPIO_PRIMARY_MODULE_Function);
MAP_GPIO_setAsInputPinWithPullUpResistor (GPIO_PORT_P1、GPIO_PIN1);
MAP_GPIO_clearInterruptFlag (GPIO_PORT_P1、GPIO_PIN1);
MAP_GPIO_enableInterrupt (GPIO_PORT_P1、GPIO_PIN1);
// printf ("标志1");

//将 Timer_A 配置为具有一个大约500ms 的周期和
//初始占空比为其10%(3200个周期)
MAP_Timer_A_generatePWM (TIMER_A0_BASE、&pwmConfig);
printf ("null");
}

工具/软件:Code Composer Studio

大家好、这是我的第一篇帖子、所以请告诉我是否有更好的格式/提问方式:

我正在尝试使用 Code Composer 中的 Driverlib 命令连接和驱动无刷直流电机。
我参考了 Driverlib 用户指南中给出的示例24.3、以首先初始化与电机的连接、但在我调试程序后、它会在 loader_exit 错误下卡在 exit.c 中。

我不知道导致问题的原因、但想知道问题是如何发生的、这样我就可以防止问题的发生。

此外、如何附加上述错误位置的屏幕截图?

谢谢您、

Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    / //*
    */
    /* loader_exit -*/
    *//
    //*设置 C$EXIT 标签,以便调试器知道何时有 C++程序*/
    *已完成。 如果未使用调试器、则可以删除此选项。*/
    * */
    ********* /
    静态 void loader_exit (void)
    {
    #if defined (embed_CIO_BP)
    __asm (" 全局 C$EXIT");
    #if defined (__32bis__)
    __asm (“C$EXITE:.word 0xDEFED0FE”);
    #else
    __asm (“.align 4”);
    #if defined (__big_endian__)
    __asm (“C$EXITE:.half”_
    
    0xFFE*
    
    ;#defendi_Dif_enf___bis* //
    
    #else //*!embed_CIO_BP */
    __asm (" 全局 C$$$exit");
    __asm ("C$exit: NOP");
    #endif
    }
    

    这是 exit.c 程序将我带到的位置。

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

    [引用 user="Robert ***">我参考了 Driverlib 用户指南中给出的示例24.3、以首先初始化与电机的连接、但在我调试程序后、它会在 loader_exit 错误下卡在 exit.c 中。loader_exit 因从 main 返回而被调用()、 默认情况 下、CCS 调试器会在 loader_exit 上设置断点、以便您知道何时调用了断点。

    在嵌入式程序中、通常需要在外设初始化后使执行继续在 main 中执行。 例如 、使用无限循环或将处理器置于低功耗模式、直到被中断唤醒。

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

    您好、Robert、

      我建议从一个全新的代码示例开始、该示例可从 Resource Explorer 导入到 CCS 中。  该项目可在此处在线找到:

    您也可以在 CCS->View->Resource Explorer 中找到它

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢您的澄清。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢您的建议、这些无疑帮助我了解了比简短示例代码段更好的情况。