c언어에서 포인터 사용 질문

reorigang의 이미지

#define UID_BASE 0x1FFFF7E8UL

uint32_t UID[3];

위에 define된거랑 uint32_t 변수 선언된 이후로

UID[0] = *(uint32_t*)UID_BASE;

이런 방식으로 사용히던데

이 부분이 어떻게 쓰이는건지 문법상 이해가 안가서요

라스코니의 이미지

mmio (Memory Mapped I/O)로 찾아 보세요.

UID[0] = *(uint32_t*)UID_BASE; 는
UID[0] = *(uint32_t*)0x1FFFF7E8UL; 와 똑같아서
이 주소에 있는 4 byte 값을 읽어오는 겁니다.