我正在尝试使用C将半字,即16位从我的微控制器的一个存储器地址移到另一个。请看下面的简单代码:
#include <stdint.h>
int main(void){
int16_t *src = (int16_t*)0x20000000; //source memory address
int16_t *dst = (int16_t*)0x20000016; //destination memory address
*dst = *src; //dereference both, set destination value to source value
return 0;
}
当我点击*dst = *src
行时,我遇到了一个Hardfault异常。我对指针和解引用/引用的理解不足可能是问题所在。我将不胜感激。
编辑: 有什么办法可以使用赋值运算符(=)?
在一行代码中编写它答案 0 :(得分:0)
你正在写0x20000016
,这不是4字节边界。如果您的处理器不支持未对齐的读写操作,则会导致错误。你在用什么处理器?