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.

[参考译文] WEBENCH®︎Tools/MSP430F5438A:函数调用不能从项目中的所有文件正常工作

Guru**** 2538930 points
Other Parts Discussed in Thread: MSP430F5438A

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/582344/webench-tools-msp430f5438a-function-call-doesn-t-work-properly-from-all-files-in-project

部件号:MSP430F5438A

工具/软件:WEBENCHRegistered设计工具

背景:

我希望你们中的一些人能帮助我解决一个复杂的c/c++问题... 我的任务是更新一个传统项目,该项目最初是3到40年前为德州仪器(TI)芯片33yA编写的。 这些芯片不再可用。 我最近在3-4个项目上使用了(相对)新芯片,几乎没有遇到什么问题。 较新的芯片是MSP430F5438A。 大约10-15年前,这一遗留项目以新的形式引入,增加了HART通信功能。 我认为这些详细信息与我的问题无关,但请注意,该项目包含至少3次还原的文件和代码。 HART版本将参数存储在EEPROM中。 随着新芯片的出现,我们也改用了新的EEPROM,多年来我们已成功地与此芯片配合使用。 参数必须可通过HART通信查看和更改。 我已在新代码中实现了项目的所有功能,但参数的(HART)编辑除外。 大多数查看(HART)功能正常。 我正在使用HART小组开发的代码来处理HART通信。

问题:

我可以写入EEPROM并正确地从我的代码中读回参数。 我无法从旧代码执行此操作。 要在EEPROM中写入或读取,我使用读取和写入功能。 参数为:1. 开始字节的EEPROM中的地址。 2.(unsigned char*) ram中用于源站或目标站的参数的地址,以及3.读写的大小(以字节为单位)。 我正在使用TI内在I2Cmodule作为主模块–EEPROM是从属的。

如果我从我的代码调用这些函数,它们都可以工作。 如果我从旧代码调用它们,则读取不返回正确的值,通常返回NaN。 我使用IAR电子工作台(完整版)作为我的开发环境。 如果我右键单击这些函数以转到定义,将转到新代码中的正确函数。 我认为这意味着正在执行正确的代码。 我不理解使用相同参数调用的相同函数如何仅根据调用的来源产生不同的结果。 我已使用调试器验证HART代码是否使用了正确的参数值。

帮助!!!!

有人会建议我如何解决这个问题吗? 我将无法将这两个代码段“整合”在一起,直到我找出导致这种情况的原因。 有人,拜托???

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

    您好,Mike:

    首先,我建议为MSP430F5438A器件启动全新的IAR项目。 由于有这么多的修订版本,我怀疑旧项目中的所有旧文件都给您带来了问题。 然后,我建议您在重构旧代码时参考我们的代码示例。 我不会逐字复制旧代码,而是使用新代码执行旧代码的操作。 我从未看过33yA芯片,但如果它太旧了,我确信自那时以来I2C模块已经发生了许多变化。 有关I2C模块及其行为的详细说明,请参阅用户指南。 此外,使用逻辑分析器来确认您期望在I2C接口上看到的内容可能会有所帮助。

    最后,根据MSP430F5438A的修订版,此问题可能由勘误表引起。 请参阅 错误表中的USCI勘误表

    此致,

    詹姆斯

    MSP客户应用程序