본문 바로가기
프로그래밍

ARM데이터시트_GPIOx_BSRR/GPIOx_BRR

by BlueOcean&Shark 2016. 12. 8.

GPIO출력제어는
ODR레지스터와 BSRR레지스터 두가지가 있다.
ODR레지스터는 전체비트를 SET또는 RESET제어하는 반면
BSRR레지스터는 각각의 비트를 SET/RESET제어 한다.
(BRR레지스터는 각각의 비트를 RESET제어)

ODR레지스터는 이전 포스팅을 참고하고
http://munshark.tistory.com/99
이번에는
GPIOx_BSRR/GPIOx_BRR레지스터에대해 알아보자


1. GPIOx_BSRR

GPIOx_BSRR 레지스터의 0~15비트를 1로 설정하면 0~15핀을 SET해준다.
예를들어 아래와 같이 설정하면
GPIOx->BSRR = 0x00000002;
1번핀을 SET하겠다는 것이다.

GPIOx_BSRR 레지스터의 16~31비트를 1로 설정하면 0~15핀을 RESET해준다.
예를들어 아래와 같이 설정하면
GPIOx->BSRR = 0x20000000;
13번핀을 RESET하겠다는 것이다.

참고로 BSRR을 0으로 설정하면 아무반응이 없으며
SET과 RESET을 동시에 설정하면 SET에 우선순위가 있다.
예를들어 아래와 같이 설정하면(13번핀을 SET/RESET을 동시에 하면)
GPIOC->BSRR = 0x20002000; 
SET에 우선순위가 주어져 SET만 수행한다.


2. GPIOx_BRR

GPIOx_BRR 레지스터의 0~15비트를 1로 설정하면 0~15핀을 RESET해준다.
예를들어 아래와 같이 설정하면
GPIOx->BRR = 0x00000005;
0번핀과 2번핀을 RESET하겠다는 것이다.

BSRR과 같이 BRR레지스터도 0으로설정하면 어떠한 반응도 없다

댓글