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.

[参考译文] MSP432P401R:向现有工程添加驱动程序库(drivelib)时出现问题:卡在 Reset_Handler 上

Guru**** 2535750 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/567279/msp432p401r-problem-with-adding-driver-library-drivelib-to-the-existing-project-stuck-at-the-reset_handler

器件型号:MSP432P401R

我最近完成 了基于 MSP432 Red Launchpad 的 RTOS 课程。 我还遇到了 MSP432 Launchpad 的驱动程序库(drivelib)、我想在我的现有 项目中使用它。 但是、每当我将任何驱动程序库函数包含到我的现有工程中时、代码就不会运行。 当我尝试调试时、控制卡在 startup_msp432p401r_uVISION.sFile 的 Reset_Handler 上。 每当我注释掉诸如 MAP_WDT_A_HOLDTimer()等驱动程序库函数时,代码就会正常运行。 这是我的主要函数:

int main (void){
OS_Init ();
UART0_Init ();
OutValue ("\n\rPWM 占空比="、0);

//停止看门狗*//
map_WDT_A_holdTimer ();
/*将 GPIO2.4 | GPIO2.5配置为 PWM 的外设输出、将 P1.4 | P1.1配置为按钮输出
*中断*/
// MAP_GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P2、GPIO_PIN4、
// GPIO_PRIMARY_MODULE_FUNCTION);

//P2SEL0 |= 0x10;
//P1SEL1 &=~0x10; //将 P2.4配置为主模块功能

////////*将 Timer_A 配置为具有大约500ms 的周期和
// *初始占空比为其10%(3200个节拍)*/
// MAP_Timer_A_generatePWM (TIMER_A0_BASE、&pwmConfig1);

返回0;
} 






每当我取消注释作为驱动程序库函数的任何 map_函数时、代码 都会卡住:

如果有人想尝试 out.e2e.ti.com/.../6433.Timer_5F00_A_5F00_with_5F00_Lab6.zip、我还附加了我的项目文件夹

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

    您好!

    感谢您关注我们的产品!  我 正在为您研究此问题、 我希望明天我将为您提供答案。

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

    您好!

    我知道我今天答应了一个回复、所以我会给你一个更新。  我注意到您似乎正在使用 Keil IDE。 我使用 CCS。  我今天下午开始研究、遇到了很多包含/库类型的错误、我必须先解决这些错误、然后才能正确构建项目。  我确实构建了它、以便它可以运行、我可以开始研究您现在遇到的问题的调试、但我今天已经没有时间了。  明天、我将继续将您的代码加载到我的 LaunchPad 器件上、然后运行调试以复制并解决您的问题。

    感谢您的耐心等待。

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

    感谢 John 的更新。 展望未来。

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

    我还无法复制此问题,因为我遇到了 loader_exit()的另一个问题。

    我很好奇 RTOS 是什么、因为它看起来不像 TI_RTOS。  您使用的是 TI_RTOS 还是其他 RTOS?

    另外,我已经问了一点,我听说的一个常见问题是看门狗定时器在 OS_init()中是否被关闭,或者在命令关闭它之前,程序是否由于 WDT 而被暂停?  是否尝试将 MAP_WDT_A_HOLDTimer()函数移动到 OS_Init()之上?

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

    尊敬的 John:

    运行的 RTOS 不是 TI_RTOS。 我参加 了实时蓝牙网络课程 、该项目基于该课程。 它不是成熟的 RTOS、也不像 TI_RTOS 或 FreeRTOS 那样具有高级功能。  

    [引用 user="John P. Morrison "]是否尝试将 MAP_WDT_A_HOLDTimer()函数移动到 OS_Init()之上?

    是的。 我也尝试过这种方法。 但没有影响。 甚至尝试对  MAP_WDT_A_HOLDTimer ()进行注释 并仅添加 MAP_GPIO_setAssumuleFunctionOutputPin (GPIO_PORT_P2、GPIO_PIN4、GPIO_PRIMARY_MODULE_FUNCTION);  

    但结果相同。 停留在  Reset_Handler 上

     

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

    您好!

    我想知道您是否能够找到解决此问题的解决方案?  今天、我只需插入以下内容即可在 TI-RTOS 示例中运行 driverlib API:

    /* DriverLib 包括*/

    #include

    我开始使用  的 TI-RTOS 示例。  下面是我放入 empty.c 文件的内容:

    /*
    版权所有(c) 2015-2016、德州仪器(TI)公司
    *保留所有权利。
    *
    *
    只要
    符合以下条件*、允许以源代码和二进制形式重新分发和使用:
    *
    *源代码的重新分发必须保留上述版权
    声明*、此条件列表和以下免责声明。
    *
    ***二进制形式的再发行必须在
    
    *随发行提供的文档和/或其他材料中复制上述版权声明、本条件列表和以下免责声明。
    *
    ***未经
    
    事先书面许可、不得使用德州仪器公司的名称或*其贡献者的名称认可或推广从本软件衍生的产品*。
    *
    *本软件由版权所有者和贡献者"按原样"提供
    *、
    
    不承担任何明示或暗示的保证、包括但不限于*适销性和特定用途适用性的暗示保证*。 在任何情况下、版权所有者或
    *贡献者都不对任何直接、间接、偶然、特殊、
    *模范、 或相应的损害(包括但不限于
    *采购替代产品或服务;丧失使用、数据或利润;
    *或业务中断)、但出于任何责任理论
    、*无论是在合同中、严格责任还是由于
    使用本软件而以任何方式产生的侵权行为(包括疏忽或*其他)
    、*即使已获悉可能会发生此类损坏。
    //
    
    /*
    === empty.c ======
    /*
    
    DriverLib 包括*/
    #include 
    
    #include 
    
    /* for usleep()*/
    #include 
    #include 
    #include 
    
    /*驱动程序头文件*/
    #include 
    //#include 
    //#include 
    //#include 
    //#include 
    //#include 
    
    /*板头文件*/
    #include "Board.h"
    
    /*
    === mainThread ====
    //
    void * mainThread (void * arg0)
    {
    volatile uint32_t ii;
    
    /*将 P1.0配置为输出*/
    MAP_GPIO_setAsOutputPin (GPIO_PORT_P1、GPIO_PIN0);
    
    while (1)
    {
    /*延迟环路*/
    对于(ii = 0;ii < 500000;ii +)
    {
    }
    
    MAP_GPIO_toggleOutputOnPin (GPIO_PORT_P1、GPIO_PIN0);
    }
    }
    

    这成功地使用 driverlib API 使 LED 闪烁。

    我假设滞留在 Reset_Handler 可能与代码的其他部分有关、并且与添加 driverlib 函数无关。

     

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

    尊敬的 John:

    为了使用现有的 RTOS 代码完成我的最终任务、我使用了直接注册表访问而不是 drivelib、它运行良好。  

    很高兴知道 Drivelib 在 TI-RTOS 中运行正常。 尝试一下。 )