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으로설정하면 어떠한 반응도 없다
'프로그래밍' 카테고리의 다른 글
ARM데이터시트_GPIOx_IDR 입력(input)제어 (0) | 2016.12.11 |
---|---|
ARM실습_GPIOx_IDR 레지스터를 이용한 스위치 입력 (0) | 2016.12.11 |
ARM데이터시트_RCC_APB2RSTR (0) | 2016.12.04 |
ARM데이터시트_ODR레지스터 (0) | 2016.12.04 |
ARM데이터시트_GPIO레지스터 GPIOx_CRL/GPIOx_CRH (0) | 2016.12.04 |
댓글