내가 아래에있는 내 간단한 코드를 살펴 제발 다른 사용 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 예외가 발생합니다. 포인터에 대한 나의 낮은 이해와 역 참조/참조가 문제가 될 수 있습니다. 나는 약간의 도움에 감사 할 것입니다.
EDIT : 할당 연산자 (=)를 사용하여 한 줄로 작성할 수 있습니까?
'src'와'dst'를'volatile'으로 표시해 보셨습니까? 또한 두 개의 명명 된 변수를 사용하면 한 줄의 코드에서이 작업을 수행하는 것보다 훨씬 깔끔한 방법이라고 생각합니다. –
은'memcpy' 옵션입니까? –
액세스하려는 주소가 메모리 매핑되어 있습니까? 일부 마이크로는 IO 매핑 된 메커니즘을 사용하여 하드웨어에 액세스합니다. – Gerhardh