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 으로 설정해주면 된다.
'프로그래밍' 카테고리의 다른 글
ARM데이터시트_RCC_APB2RSTR (0) | 2016.12.04 |
---|---|
ARM데이터시트_ODR레지스터 (0) | 2016.12.04 |
ARM실습_GPIOx_ODR레지스터를 이용한 LED출력 (0) | 2016.12.04 |
ARM데이터시트_핀 또는 칩의 최대로 흘려줄 수 있는 전류 (0) | 2016.12.03 |
ARM데이터시트_PIN I/O 설명 (0) | 2016.12.03 |
댓글