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.

[参考译文] 编译器/MSP430FR2633:MSP430Ware编译器问题

Guru**** 2540720 points
Other Parts Discussed in Thread: MSP430FR2633

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/584216/compiler-msp430fr2633-msp430ware-compiler-issue

部件号:MSP430FR2633
主题中讨论的其他部件: MSPWAREMSP430WARE

工具/软件:TI C/C++编译器

您好,

我们将编译器版本16.9 1与MSP430FR2633一起用于我们的应用程序,编译器和其他内容已于2017年3月24日更新为编译器版本16.12。0,因为那时使用library函数调用的一些寄存器设置不起作用。

我们的观察结果是WDT_A_HOLD (WDT_A_BASE);未将WDTCTL设置为HOLD状态,因此控制器正在重置。

我们不得不改变传统的方式:WDTCTL = WDTPW | WDTHOLD;                  //停止看门狗计时器

我们观察到使用库函数的PWM功能和P1SEL设置相同。以下函数应将功能设置为GPIO,但不是。 以前的编译器版本做得很好。

GPIO_setAsPeripheralModuleFunctionOutputPin (GPIO端口P1,GPIO PIN1,GPIO主要模块功能);

由于已完成多个更新,我们无法在安装详细信息中恢复到旧配置。

我们不确定是库还是编译器。 我们在项目设置中恢复到16.9 Tm1,但问题仍然存在。 因此,我们必须相应地修改代码,以使功能正常工作。

此致,

Muruga

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    听起来更像是driverlib问题。 您的#包含哪些内容?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请在下面查找包含文件的列表

    #include <MSP4S.h> //通用MSP430器件包括
    #include "driverlib.h" // MSPWare驱动程序库
    #include "captate.h" // Captivate Touch软件库
    #include "Capt_App.h" // Captivate应用程序代码
    #include "Capt_BSP.h" // Captivate EVM板支持包
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不熟悉MSP430ware。  编译器似乎不可能导致这些问题。  

    以下是进一步诊断问题的方法。  使用选项 --gen_preprocessor_listing.  这将创建一个与源文件同名的商品信息文件,但扩展名更改为.RL。  您可以在扩展前后看到WDT_A_HOLD等宏。  请阅读 MSP430编译器手册中的选项--gen_preprocessor_listing.

    谢谢,此致,

    -George

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

    请在下面找到反汇编程序,建议包括WDT_a_hold的.RL文件列表

    宏的扩展不是文件(.rL)的一部分。 装配体完全超出了我的排名,请添加您的评论。
    主.RL

    n WDT_A_HOLD (WDT_A_BASE);
    x WDT_A_HOLD (0x01CC);
    n WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
    X WDTCTL =(0x5A00)|(0x0080);

    代码:
    WDT_A_HOLD (WDT_A_BASE);
    WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
    BSP_configureMCU();

    反汇编程序视图
    403C 01CC MOV.W #0x01cc,R12
    00ef2e:12B0 F6E4 呼叫#WDT_A_Hold
    76. WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
    00ef32:40B2 5A80 01CC MOV.W #0x5a80,&Watchdog Timer_WDTCTL
    77 BSP_configureMCU();

    WDT_A_Hold():
    00f6e4:503C 000c 添加W #0x000c,R12
    00f6e8:4C2F MOV.W @R12,R15
    00f6ea:F07F 007F 和.B #0x007f,R15
    00f6ee:D07F 0080 BIS.B #0x0080,R15
    00f6f2:503F 5A00 加载#0x5a00,R15
    00f6f6:4F8C 0000 MOV.W R15,0x0000 (R12)
    00f6fa:4130 RET

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

    这些拆卸序列执行相同的操作。  因此,这里没有编译器问题。

    在这种情况下,此主题正在移动MSP论坛。  那里的专家可以为您提供进一步的帮助。

    谢谢,此致,

    -George