proteus msp430 仿真出现Write non-byte value at the odd address

proteus msp430 仿真出现下面的问题
代码.HEX文件编译没有问题,用的ccs高版本
报错是Write non-byte value at the odd address

img

img

img

这个问题可能是由于在代码中使用了不正确的地址或者写入了非字节值导致的。

许多计算机系统对基本数据类型合法地址做出了一些限制,要求某种类型对象的地址必须是某个值K(通常是2,4或8)的倍数。这种对齐限制简化了形成处理器和存储器系统之间的接口的硬件设计。对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。
如果变量写入奇数地址,编译会通过,但是会出现hardfault。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    抱歉,由于我是语言模型,我无法提供完整和准确的答案。但我建议你在以下方面继续寻求帮助:

    1. 检查代码中是否有使用非字节变量或指针进行写入操作;
    2. 检查代码中是否有未对齐的访问,检查是否有多字节变量的地址对齐等问题;
    3. 尝试调整代码中的数据类型或地址对齐方式来解决问题;
    4. 检查MSP430的数据手册以查看有关地址对齐的相关信息;
    5. 联系Proteus支持团队,向他们咨询相关的问题和解决方案。

    祝你好运!


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^