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.

[参考译文] TM4C123GH6PM:分配给指针的值不正确

Guru**** 2463330 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/657934/tm4c123gh6pm-pointer-is-assigned-an-incorrect-value

器件型号:TM4C123GH6PM

大家好、

我使用的是 Keil v5。  
我有这段代码、运行良好、但当将其放入循环时、我会遇到由存储器问题引起的硬故障。 增加堆栈和堆没有帮助。 在 while (1)内、我有这个函数、它调用几个其他函数、而最后一个函数的最后一条指令、由该函数调用、 具有* returnValue = sum (示例)。 问题是返回值= 0xA0007C70、这在我的32KB uC 上无效。 如果我删除它、函数后面会有 memcpy、 这将会失败(如果我删除该 memcpy、没有错误、但一切都是无用的)。   

while (1)中还有其他行、但当我只有函数时、增加堆栈和堆会有所帮助。

这种错误使我重做了一切、但上次我遇到 memcpy 复制错误值的问题。 我会得到非常大的值、在这里、我期望值介于0和1之间。

导致这些内存问题的原因是什么? 我以80MHz 的频率运行、这可能是问题吗? 还是在启动过程中出现什么情况?

编辑:嗯、将其更改为40MHz 没有帮助...

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

    是否可以询问"Why - a returned value (sum -在您的示例中)- is s嘈' restricted"- on (or by) your 32KB µC?

    我必须注意、Fire/I (经常)遇到"返回值"、远远超出我们的(甚至更小的存储容量) ARM MCU。 (其中一些为16KB)

    据我所知、MCU 存储器可能会受到限制、这一点对"返回值!"这一一般性没有什么限制。    

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

    您好、

    返回值是一个指针、指向不存在的地址。

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

    这将(那么)成为一个问题。    (我刚才注意到: "*返回值=总和")

    如果不了解您(早期)对错误处理功能的管理、我无法提供充分的帮助...

    因为您的代码被描述为"循环"-并且错误(始终)是否是非法指针值(过高) - 可能会导致 "清除关键变量"和 /或意外变量或函数"翻转?"

    如果您使用已知的非常小的值"播种您的错误功能"、会发生什么情况?    是否生成了非法指针地址(仍然)?  

    并且-您是否允许"memcpy"有足够的时间来"完成?"    对 职能的绩效进行"逐步"监控似乎很有用-非常仔细 (始终如此密切)观察"非法价值的开始"。

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

    谢谢、
    我只是想在 main()中公布,我的非初始化整数的值与0不同,我没有注意到这一点。 然后删除该帖子。 但在此之前、我想问、由于我有很多内存问题、您认为它们是否只是硬件/编译器故障?

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

    请返回到我的最后一个帖子- 我们的帖子刚刚交叉- 在此期间我稍微扩大了我的帖子-以及(现在可能)描述了导致您问题的条件-事实上也可能解决了-  

    我坚信、正确的"基于 kiss 的"方法 将指导您取得成功、您在其中输入"小的已知值"并仔细查看第一个"非法的加工值"。   

    这是一个标准的 kiss 流程、而且最常提供快速/安全的 "成功培训!"

    祝你一切顺利...

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

    Savo Pejovic 说:
    我刚刚在 main()中发布了我的未初始化整数的值不是0,我没有注意到这一点。

    您为什么期望它为零?

    [引用 user="Savo Pejovic"]但在此之前,我想问,由于我的内存有很多问题,您认为它们是否只是硬件/编译器故障?

    首先是用户和用户设计的硬件。 微控制器和编译器。

    Robert

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

    [引用 user="Robert Adsett"]用户和用户设计的硬件优先。

    确实-尤其是 当"用户设计" 为" 代码"时:"匆忙、手头部件、超出规格... "

    您使用的是、 "非常远的第二" 绝对 是"指甲!"