BSRR과 ODR 차이점
BSRR (Bit Set Reset Register)과 ODR (Output Data Register)는 마이크로컨트롤러의 GPIO (General-Purpose Input/Output) 핀을 제어하는 데 사용되는 레지스터입니다. 이 레지스터들은 다음과 같은 차이점을 가집니다:
-
BSRR (Bit Set Reset Register):
- 비트 단위 설정 및 재설정: BSRR 레지스터는 GPIO 핀의 특정 비트를 설정(1로 만듦)하거나 재설정(0으로 만듦)하는 데 사용됩니다.
- 원자적 연산: BSRR은 원자적인 작업을 지원하므로 여러 동작이 동시에 발생할 때 유용합니다.
- 두 개의 16비트 레지스터: 일반적으로 32비트 레지스터로 구성되며, 상위 16비트와 하위 16비트가 각각 설정 및 재설정에 사용됩니다.
- 빠른 동작: BSRR은 일반적으로 더 빠른 동작을 제공합니다.
-
ODR (Output Data Register):
- 전체 데이터 레지스터: ODR은 GPIO 핀의 상태를 전체 데이터 레지스터 값으로 설정합니다.
- 원자적이지 않음: ODR은 원자적인 작업을 지원하지 않습니다. 여러 핀을 동시에 설정하거나 재설정하려면 별도의 동기화 메커니즘이 필요할 수 있습니다.
- 데이터 전체에 대한 제어: ODR은 각 비트를 개별적으로 설정하지 않고, 전체 레지스터 값을 통해 GPIO 핀의 상태를 제어합니다.
일반적으로, BSRR은 개별적인 핀의 상태를 빠르게 변경하거나 원자적으로 변경해야 하는 경우에 사용되며, ODR은 모든 핀에 동시에 동일한 값을 설정하거나 재설정하는 데 사용됩니다. BSRR은 비트 단위 작업에 적합하며, ODR은 전체 레지스터 값을 한 번에 설정하는 데 적합합니다.