개요. | |
본 글은 이클립스 ARM 개발 환경에서 대상칩 STM32F시리즈 인 경우의 프로젝트 생성법, 코딩방법론 간단하게 정리한다.
샘플프로젝트명 : myproject 타겟칩 : STM32F407ZG (STM32F 시리즈면 동일함.)
사전 필수 준비사항. - 이클립스 ARM 개발환경 구축되어 있어야 함. | |
1. 이클립스에서 STM32 용 프로젝트 생성하기. | |
1. 프로젝트 타입 지정하기. 이클립스 실행하여 메뉴 -> File -> C Project 클릭 하면 아래와 같이 대화상자가뜬다. 아래 붉은 박스 영역처럼 동일하게 설정(프로젝트 이름, 타겟칩 선택)한다.
2. 타겟 MCU설정하기. 위 1에서 Next 버튼 클릭하면 아래그림 처럼 칩에 특화된 설정을 할 수 있는 창이 뜬다. 클럭이라 표시된 부분은 칩에 장착된 크리스탈 주파수를 기록하는 곳이다. STM32F407ZG는 8MHz외부크리스탈로 구동되므로 (내부적인 시스템 클럭은 최대 168MHz 이다.) Flash 크기는 STM32F407ZG가 1024kB이므로 1024를 기록했다.
3. 프로젝트 생성완료. 이후는 별거없다. Next 버튼 계속눌러 프로젝트 생성완료한다. 자동생성된 프로젝트가 아래그림이다. 자동으로 생성된 것이 많이 보인다. 스타트업코드와 링크 스크립트 파일 (아래그림의 붉은 박스 부분)도 자동 생성된다. 본 과정에서 만들어진 프로젝트는 기본적으로 GPIO 핀 1개에 출력하는 코드가 기본 자동 생성되어있다. 만들어진 프로젝트에서 사용자가 손대야 할 코드영역은 푸른색 박스인 main.c 이다. 간단한 코드인 경우 main.c에서 모든 코딩을 진행하면된다. 별도의 소스파일을 추가하는 경우에도 src 폴더속에 코드를 추가하면된다. main.c에는 main() 함수와 while함수 모두 구현되어있는 상태여서 기존에 있던 코드를 제거하고 원하는 코드를 기록하면 된다.
4. 빌드해보기. 이제, 이 상태에서 빌드해보자. 컴파일 진행되고 최종적으로 칩에 기록 가능한 myproject.hex 파일이 생성된다.
| |
끝 - 이클립스에서 STM32F 용 프로젝트 생성하기. |
2. 코딩 방법 기본 개념 이해. | |
자동 생성된 코드는 GPIO 핀에 출력하는 기능으로 구현되어 있다. 이 코드가 GPIO 핸들링하는 가장 기초에 해당하기 때문에 이해할 필요가 있다. 아래 자동생성된 main.c 의 코드내에 설명 기록해뒀다. 이 코드는 기본적으로 STM32 제조사에서 제공하는 stdperiph 라이브러리(소스형식으로 제공됨)를 기반으로 GPIO설정 및 출력하는 기능을 구현하고 있다. 우리의 프로젝트에는 이 라이브러리가 포함되어있는 상태이며(아래 그림에서 파란색부분) 본 기본 코드에서는 붉은 박스에 있는 함수들만 호출하고 있는 중이다. 코드 라이브러리는 기능별로 분리되어 있음을 알 수 있다.
GPIO정도는 라이브러리 함수를 이용하지 않고도 레지스터 접근하여 직접 코딩해도 되나, 기타 다른 ADC나 SPI, FSMC등을 사용하기 위하여 레지스터 직접 제어방식으로 하기에는 개발속도가 빠르지 않고 더 큰 문제는 레지스터 직접 제어방식으로 코딩하면 칩을 다른 칩으로 변경한 경우 코드도 모두 수정해야하는 단점이 있다. 특별한 필요성(예를 들어 고속화 한다든지..)이 없는 경우에는 레지스터 직접 제어방식 사용하지 말고 제조사에서 제공하는 라이브러리 기반으로 기능구현하도록 한다. 만일 우리가 SPI기능을 사용할려고 한다면 stm32f4xx_spi.c 에서 제공되는 함수를 이용하여 기능 구현하면 된다. 코드 라이브러리내에 주석으로 사용 설명문이 있다. 이 설명문을 코드 구현하는 시작점으로 삼고 관련 구현예제(직접 알아서 별도로 찾고 다운로드 받아야 함)를 참조하여 원하는 기능을 구현해 나간다.
| |
끝. 이클립스로 STM32 코딩 기본개념이해. |
본 글이 포함된 상위 정리장소 : http://igotit.tistory.com/244
|
///154.
'임베디드.일렉트로닉스 > STM32' 카테고리의 다른 글
STM32F429 디스커버리 보드. - STM32 개발보드. (0) | 2014.10.28 |
---|---|
STM32F401 디스커버리 보드. - STM32 개발보드. (0) | 2014.10.28 |
STM32F407 디스커버리 보드. - STM32 개발보드. (0) | 2014.10.28 |
KEIL uVision 5 에서 프로젝트 생성. 타겟칩의 예로 STM32를 사용함. (0) | 2014.10.27 |
STM32 개요 (0) | 2014.10.22 |
댓글