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.

[参考译文] TMS320F28377D:程序中阵列的溢出

Guru**** 2535750 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/607033/tms320f28377d-the-overflow-of-array-in-my-program

器件型号:TMS320F28377D

你好!

如下图所示、 在我的 sicarx 中断服务函数中、我使用 for 循环为 rdataA[]数组分配值。 因为我使用了嵌套函数、所以该函数将被其他中断服务函数中断。  在这种情况下、数组大小可能会溢出到254、但最大值为16。    rdataA[]数组被定义为全局变量。  

为什么该数组会溢出、如何避免这种情况?  

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我写信告诉您、C2000团队成员已被分配到此帖子、应该很快回答。

    此致
    Baskaran
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不确定您到底要问什么... 如果程序继续写入数组并增加索引、则可能会溢出缓冲区并损坏其他数据或代码。 您需要了解何时将索引重置到数组、或确保索引不超过您分配的索引。

    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sal
    感谢您的回答。
    是的、如果程序继续写入阵列并增加索引、则阵列将溢出。
    但索引仅在此函数中增加。因此我不知道为什么索引会增加以溢出数组。 事实上、索引的最大值为16。 但有时该指数将增至254。
    由于在 sci 中断服务功能中对阵列执行了操作,此服务功能将被其他中断服务功能中断。 我不知道这种情况是否有任何关系。 rdataA[]数组被定义为全局变量,在我写入该数组之前,我将阵列索引重置为0。
    此致
    摇晃
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为问题似乎是您的最大指数正在变化。 最大索引为 rdataA[11]、但在向数组写入时、在循环内写入 rdataA[11]。

    SAL