본문 바로가기
프로그래밍

ARM데이터시트_GPIOx_IDR 입력(input)제어

by BlueOcean&Shark 2016. 12. 11.

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인지를 판단 할 수있게됩니다. 


댓글