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.

[参考译文] 编译器/MSP430FR2311:GPIO 驱动程序库问题? 无法重新编译 MSP-EXP430FR2311:开箱即用体验代码

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/937538/compiler-msp430fr2311-gpio-driver-library-issue-cannot-recompile-msp-exp430fr2311-out-of-box-experience-code

器件型号:MSP430FR2311

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

我已经下载、编译和调试了开箱即用体验代码。 运行正常、但 LED 输出不受环境光的影响。

问题似乎是编译器不再使用 GPIO 驱动程序库生成正确的代码:

main.c (第85行)调用  initGPIO();

initgpie (main.c 第263-268行)是:

GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P2、GPIO_PIN0、GPIO_PRIMARY_MODULE_Function);

GPIO_PORT_P2定义为2

"setPeripheralModuleFunctionOutputPin" 以表查找开始:

 uint16_t baseAddress = GPIO_PORT_TO_BASI[selectedPort];

但该表包含以下内容(来自调试器):

GPIO_PORT_TO_BASE
0000 0200 FFFF FFFF FFFF

因此、条目2返回 FFFF

问题可能是 GPIO.c 中该表的宏(第53...行):

静态常量 uint16_t GPIO_PORT_TO_BASI[]={
0x00、
#if defined (_MSP430_has _Port1_R_)
_MSP430_BASEADDRESS_Port1_R__、
#Elif defined (_MSP430_has _Port1_)
_MSP430_BASEADDRESS_Port1__、
其他
0xFFFF、
#endif
#if defined (_MSP430_has _port2_R_)
_MSP430_BASEADDRESS_PORT2_R__、
#Elif defined (_MSP430_has _port2_)
_MSP430_BASEADDRESS_PORT2__、
其他
0xFFFF、
#endif

文件"MSP430fr2311h"已定义端口1 (基址为0x200)、但未定义端口2。

为什么? 之前使用的版本(在升级到最新 CCS 之前)。

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

    Sven、您好!

    首先,我要感谢你提供了非常详细的文章,并提请我们注意这一点。 我能够在我这边重复这个问题。 我认为 DriverLib 文件和与端口 A (包括端口1和2)或端口2使用相关的头文件之间可能存在差异。

    作为一种权变措施、我在第1592行之后向"430fr2311.h"文件中添加了以下代码、重新编译了项目并验证了 LED2是否根据环境光强度改变其亮度。 我将在内部报告这一点、希望很快得到解决。

    #define __MSP430_has_port2_R__ /*用于显示端口可用的定义*/
    #define __MSP430_BASEADDRESS_PORT2_R__ 0x200
    #define P1_base _MSP430_BASEADDRESS_Port1_R__ 

    此致、

    James