STM32 GPIO LED 불켜기 간단한 이론 및 방법
STM32 GPIO
STM32 F103 칩을 이용한 OpenCM 보드
이 보드를 사용하여 LED On, Off 해보려고한다.
STM32를 하면서 가장 중요한 것은
개발환경이다.
이 개발환경은 어떻게 구축하여도 상관없으나
나는 오로카 카페 http://cafe.naver.com/openrt 에서 바람(필명)님이 구축한 개발환경을 기본으로 작업을 진행하도록 하겠다.
굳이 개발환경 따라서안해도 상관없다. 본인이 구축한 아름다운 개발환경이 있다면 그것을 사용하면된다.
일단 부트로더에 관한 것은 다음번에 설명하도록 하고 GPIO 포트 사용 방법에 대해
정리하고자한다.
일단 소스 부터 봐야 한다.
위와같이 GPIO 코드를 정의하였다.
GPIO관련 registers 에는 아래와 같이 존재한다.
0x40010800 은 시작번지를 의미한다.
CRL - Port Control Register low
CRH - Port Control Register High
IDR - Input Data Register
ODR Output Data Register
BSRR Bit Set Reset Register
BRR Bit Reset Register
LCKR Lock Register
0x40010800은 GPIO 시작 번지인데
데이타시트를 통해 볼 수 있다.
http://www.st.com/web/en/resource/technical/document/datasheet/CD00161566.pdf
CRL, CRH 레지스터는
위와같이 설정해주면 된다.
포트의 각 핀 설정이 가능한데
CRL 은 0~7까지
CRH는 8~15까지 설정을 해줄 수 있다.
MODE와 CNF 설정이 가능한데
MODE는 speed를 설정해 줄 수있다.
00:Reserved
01:10MHz
10:2MHz
11:50Mhz
이 값을 3으로 설정하면 50Mhz로 동작
CNF 설정은 아래 8가지로 지정해줄 수 있다.
Analog Input
Input Floating(Reset State)
Input pull-Up
Input Pull-down
Output Push-Pull
Output Open-Drain
AF Push-Pull
AF open-Drain
각각에 설정 내용은 스스로 공부하시기 바랍니다.
GPIO LED 불켜기는 이게 전부이다.
GPIO 값을 선택해준후
GPIO MODE와 CNF 값을 설정해주면 끝
그리고 ODR(Output Data register) 을 설정
잠깐, 여기서
비슷한쓰임새의
ODR , BRR, BSRR 이 있는데 뭐가 다른 것일까?
이름을 보면 이해하기 쉽다.
ODR : Port output data register
BSRR : Port bit set/reset register
BRR : Port bit reset register
BSRR, BRR은 비트단위로 셋할 수 있다
BSRR이 셋되면 해당비트를 셋
BRR 은 해당 비트를 클리어
ODR은 16비트값을 동시에 제어
'임베디드 > STM32' 카테고리의 다른 글
make 시 warning: implicit declaration of function 문제 해결 (0) | 2016.03.28 |
---|---|
STM32 카테고리를 생성하며 (0) | 2016.03.28 |