본문 바로가기
프로그래밍

ARM실습_KEIL 설정

by BlueOcean&Shark 2016. 11. 30.

칩은 STM사의 STM32F103C8 를 사용하고
컴파일러는 KEIL컴파일러를 이용하려고 합니다. 

1.  폴더구조 생성
   - 먼저 폴더구조를 생성합니다. GPIO라는 폴더안에 LIB/USER/MDK_STD 폴더를 
     생성합니다.
     LIB폴더는 라이브러리, USER폴더는 직접코딩한 파일, MDK_STD폴더는 프로젝트
     파일을 넣을 예정입니다. 

2.  SPL 다운로드
  - SPL를 다운로드해야합니다.
    구글검색창에 stm32f10x standard peripheral library를 입력한 후
    가장 위에 링크로 접속합니다.
    자주들러야하는곳이므로 회원가입을 하고 맨아래에 있는 SPL을 다운로드 합니다.

3. 필요한 파일 가져오기  
 - 다운로드받은 파일을 압축해제한 후 
   en.stsw-stm32054\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries 경로에 있는
   CMSIS와 STM32F10X_STDPERIPH_DRIVER 폴더를 1번에서 생성한 LIB폴더로 
   복사 붙여넣기 합니다.



4. KEIL 실행
 - KEIL 실행 후 project -> new mvsion project...  경로는 1번에서 만들었던 
   MDK_STD에 파일이름을 넣고 저장합니다.

5. 칩 선택
  - 아래와 같이 Legacy Device Database 로 놓고 search에서 내가 사용하고자하는
    칩의 이름을 입력하여 선택 후 OK 버튼을 누릅니다.
    예/아니오 메시지박스는 아니오를 선택합니다.

6. 폴더구조 및 파일 생성1
 - 우측 Target1 을 우클릭한 후 Manage Project Items.. 을 선택합니다.

7. 폴더구조 및 파일 생성2
  - 아래와 같이 폴더 생성후 이름을 변경해 주고
    우측 하단의 Add Files...버튼을 눌러 아래 경로에서 3개지 파일을 add해줍니다.


- GPIO_161130\LIB\CMSIS\CM3\CoreSupport\core_cm3.c

- GPIO_161130\LIB\CMSIS\CM3   
  \DeviceSupport\ST\STM32F10x\system_stm32f10x.c

- GPIO_161130\LIB\CMSIS\CM3
  \DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_md.s

 


[참고] startup_stm3210x_??.s 파일 중 어떤 파일을 선택해야할까?
        아래링크를 참고해라!!        
        http://munshark.tistory.com/94


8. 메인파일 생성

  - main.c 파일 생성 후 USER폴더에 넣어줍니다.     
   순서는 아래와 같습니다.   
    1. File -> New
    2. File -> Save As...
    3. main.c 파일 추가


   
    4. USER -> 우클릭 -> Add Files to Group User.. -> main.c추가

9. define 설정에러
 - 아래와 같이 코딩해준 후 F7버튼을 눌러 빌드를 해줍니다.
   하지만 에러 발생!! 에러창을 더블클릭하면 에러발생지점으로 이동합니다.
   에러원인은 define를 안해줬기때문!!

10. define 설정에러 수정
  - 아래와 같이 프로젝트를 우클릭 후 Option for Target '...를 눌러 
    C/C++탭에서 STM32F10X_MD를 입력해주면 빌드가 됩니다.

 

 

11. 그외 기타 설정

 - Xtal -> 디버깅 속도 설정
 - Use MicroLIB -> http://www.keil.com/arm/microlib.asp  참고

- hex file 생성

- One ELF Section per Function -> 사용하지 않는 함수는 링크하지않음
  (빌드완료후 이미지사이즈를 최소화해줌) 
- C99 -> 변수선언을 맨위가 아닌 아무곳에서나 가능하도록 함
- 헤더파일 경로 설정

- ST Link 사용

 -  core clock -> 잘모르겠음....

12. 빌드 및 다운로딩
    - 일단 main.c 코딩은 다음과 같이 하고,
      다음 실습에서 datasheet를 확인해가며 
      한줄한줄 분석해보시다~

#include "stm32f10x.h"

int main(void)
{
   //pc13
  RCC->APB2ENR = 0x00000010;
   GPIOC->CRH      = 0x00200000;

  while(1)
  {
   GPIOC->ODR ^= 0x01<<13;
   for( uint32_t  i = 0 ; i < 72000000/16 ; i++)
   {
    __NOP();
   }
  }
 }

댓글