GPIOx_IDR 레지스터를 이용해 INPUT 제어를 해보려고합니다.
이번에 waveshare사의
Open103Z Standard, STM32F1 Development Board를 사용해서
(stm32f103ZET6)
해보려고합니다.
회로도를 보면 PG6에 스위치가 연결된걸볼 수 있습니다.
따라서 PORTG의 6번핀을 입력으로 받아와야합니다.
INPUT 제어를 하기위해서는 먼저 핀을 INPUT으로 사용할건지 OUTPUT으로 사용할건지를 결정해야하는데
이는 GPIOx_CRL/GPIOx_CRH 레지스터를 이용해서 결정할 수 있습니다.
6번핀은 GPIOx_CRL을 설정해야하며
아래처럼 INPUT PULL-UP은
CFN1-1/ CNF-0/MODE1-0/MODE0-0
로 설정해야 합니다.
참고) http://munshark.tistory.com/98
그리고 빼먹기 쉬운것 중 하나인데
ODR레지스터를 1로 설정해야합니다.
GPIOx_CRL레지스터를 INPUT으로 설정했다면
GPIOx_IDR레지스터를 이용해 핀의 값을 읽어올 수 있습니다.
예를 들면
if( ( GPIOG->IDR &= 0x04 ) )
와같이 사용하면 해당 핀이 1인지 0인지를 판단 할 수있게됩니다.
'프로그래밍' 카테고리의 다른 글
ARM데이터시트_Systick 우선순위 및 발생 시점 (0) | 2016.12.18 |
---|---|
ARM실습_SPL를 이용하여 GPIO를 해보자 (0) | 2016.12.14 |
ARM실습_GPIOx_IDR 레지스터를 이용한 스위치 입력 (0) | 2016.12.11 |
ARM데이터시트_GPIOx_BSRR/GPIOx_BRR (0) | 2016.12.08 |
ARM데이터시트_RCC_APB2RSTR (0) | 2016.12.04 |
댓글