Bit banding
- 32비트 레지스터의 1개 비트를 32비트 메모리 주소에 연결, 코드 비전에서 사용하는 비트 명령이 가능하게 만든 것
- PORTA의 5번핀은 0x42210194 번지의 5번째 비트의 해당
- 해당 비트를 다른 메모리 공간에 할당, 주소의 값을 바꿔주면 해당 비트의 값이 바뀜
- 1MB의 Bit band region을 32MB의 Bit band alias 영역에 할당
- region 영역에 있는 한 개의 비트는 alias 영역에 있는 4바이트(32비트) 한 개의 워드(Word)와 연결


Bit band Mapping
- 0x20000000 번지의 4바이트 데이터는 0x22000000 - 0x2200001C까지 32바이트 공간에 매핑
- alias 영역에 있는 데이터에 0 또는 1을 써주면 region영역에 있는 해당 비트에 0 또는 1이 Write
- 0x22000000번지 = 1이라고 쓰면 0x20000000번지의 0번째 비트에 1이 써짐
- PORTA.5=1;로 비트명령 하는 것과 비슷

#define PINA5 (*(volatile unsigned int*)0x42210114)) // GPIOA_IDR
#define PORTA5 (*(volatile unsigned int*)0x42210194) // GPIOA_ODR
uint8_t flag = PINA5;
PORTA5 = 0;
PORTA5 = 1;
위 코드와 같이 사용
ADDR 계산 공식
