본문 바로가기
프로그래밍

ARM데이터시트_GPIO레지스터 GPIOx_CRL/GPIOx_CRH

by BlueOcean&Shark 2016. 12. 4.

 

   GPIO 레지스터 설정을 위해서 reference manual을 보면
   다음과 같은 곳을 찾을 수 있다.
   GPIOx_CRL레지스터는 0번핀~7번핀까지 
   GPIOx_CRH레지스터는 8번핀~15번핀까지 설정하는 레지스터이다.
   
   GPIOx_CRL/GPIOx_CRH레지스터는 크게 3가지설정을 할 수 있다.
   1. 각핀을 INPUT으로 사용할지 OUTPUT으로 사용할지 설정
   2. INPUT/OUTPUT이 결정되었다면 각각의 모드 설정
   3. 또한 I/O응답 속도를 설정

 

예를 들어 PC13번 핀을 설정하려면
GPIOx_CRH레지스터를 이용해야한다.

아래 데이터시트를 보면
MODE가 00으로 설정하면 INPUT
MODE가 00보다 크도록 설정하면 OUTPUT 인걸 알 수 있다.
핀을 OUT으로 설정하기 위해 01,10,11중 한가지를 선택해야하는데
PC13핀은 최대속도가 2MHz까지만 지원하므로
MODE는 10으로 설정해준다.
그리고 CNF는 General purpose output push-pull 인 00으로 설정해준다.

나머지
General purpose output open-drain
Alternate function output push-pull
Alternate function output open-drain
관련해서는 다음에 기회가 되면 알아보자

즉 CNF = 00 , MODE  = 10 으로설정하여
16비트로 나타내면 0x00200000 이다.
즉 GPIOx_CRH 레지스터를 0x00200000 으로 설정해주면 된다. 


 

댓글