✅ 목표 (Goal)

공용체와 구조체 비트필드를 섞어 사용했을때의 유용함에 대해 알아보자.

✅ 이런 레지스터가 있다..

▼ Hardware Abstraction Layer

https://velog.io/@actor/임베디드-OS-개발-프로젝트-Hardware-Abstraction-Layer

Untitled

✅ 이렇게 만들면 피곤해진다.

의도는 알겠는데, 이렇게 만들면 겁나게 피곤해 진다.

typedef struct _uartdr_t {
	uint8_t reserved;
	bool oe;
	bool be;
	bool pe;
	bool fe;
	uint8_t data;
} uartdr_t;

✅ 이렇게 많이 쓴다. 구조체 비트 필드

typedef struct _uartdr_t {
	uint8_t reserved : 4; // (1) reserved, oe, be 적는 순서를 신경쓰는게 좋다.
	uint8_t oe : 1; // oeverrun error
	uint8_t be : 1; // break error
	uint8_t pe : 1; // parity error
	uint8_t fe : 1; // framing error
	uint8_t data : 8;
} uartdr_t;

✅ 위 구조체를 이용해서 코딩해보자.