我正在为 16 位微控制器编写一些 C 代码。当我在目标上调试应用程序时,我最终遇到了 AddressError ISR。我阅读了数据表,它说如果您尝试读取或写入与奇数内存地址对齐的 16 位值,就会发生这种情况。我想我明白这意味着什么,但它似乎并不正确。并不意味着如果我要制作这样的结构:
struct foo{
uint8_t thing1;
uint16_t thing2;
};
我永远无法在没有错误的情况下读取或写入thing2?如果不是,这是否意味着编译器将自动在事物 1 和事物 2 之间填充 8 位,以便事物 2 在偶数地址上正确对齐?如果是这种情况,那么地址错误将如何发生?