페이지

글목록

2015년 11월 25일 수요일

NXP LPCXpresso 컴파일러 에서 라이브러리 함수 만들기(라이브러리 사용) 3/3

NXP LPCXpresso 컴파일러 에서 라이브러리 함수 만들기(라이브러리 사용) 3/3


이전에 라이브러리를 만드는 방법을 포스팅했고, 이번에는 라이브러리 안에 있는 함수를 사용하는 방법을 알아보자.

1. 이전에 예를 들어서 만들었던 함수(aplusb)가 포함된 liblib_test.a 파일과 헤더파일(lib_test.h)를 준비하자.

2. 프로젝트를 하나 만들어 보자. 라이브러리가 잘 동작하는지 테스트 하기 좋은 것이 UART로 내용을 출력하는 프로젝트다. LPCOPen 예제 프로젝트 중, peiph_uart 프로젝트를 import 해서 프로젝트를 하나 만든다. 프로젝트 만드는 방법은 생략... 나중에 한번 프로젝트를 import 해서 수정하는 방법을 따로 포스팅해 보겠다.

3. 준비한 라이브러리(liblib_test1.a) 를 periph_uart 프로젝트 내에 lib 라는 폴더를 만들어 폴더안에 복사(copy)해서 붙여(paste) 넣는다. 그리고 라이브러리 함수 원형이 선언되어 있는 헤더화일(func.h)을 src 폴더안에 복사(copy)해서 붙여(paste) 넣는다.


4. 라이브러리를 현재 프로젝트에 링크하기 위해 툴 좌측에서 현재 프로젝트폴더를 선택, 마우스 오른쪽 버튼을 눌러 Properties를 선택하자.


5. 다음의 1,2,3,4 의 순서에 따라서 라이브러리를 추가할 준비를 한다.


6. 위의 그림에서 4번을 클릭해서 라이브러리를 추가(Add) 하는데, 주의할 점은 이전에 라이브러리가 liblib_test1.a 로 만들어져서 liblib_test1 로 라이브러리를 추가하면 안되고 맨 앞의 lib를 뺀 이름(lib_test1)을 써 넣어야 한다.

7. Library Search path 를 정해주기 위해서 다음 그림의 5번, Add 를 마우스 왼클릭.


8. browse 버튼을 눌러 처음에 lib 폴더에 넣어둔 라이브러리 파일(liblib_test1.a)이 있는 폴더를 선택한 후 OK를 누름으로써, 만들어 둔 라이브러리가 프로젝트에서 사용할 수 있도록 준비가 된 것입니다.



9. periph_uart.c  소스코드를 수정을 해서 라이브러리 안에 있는 함수(aplusb)가 잘 동작하는지 보겠습니다.
먼저 periph_uart.c 에 aplusb()함수 원형이 들어있는 헤더파일을 Include 해 줍니다.

#include "board.h"
#include <stdio.h>
#include "func.h"


10. uart 로 aplusb 함수의 결과를 출력하도록 소스코드를 추가하고, 빌드하고 디버깅 버튼을 눌러 디버깅 모드에서 실행 시킵니다.

uint8_t a=0,b=1;
/* Loop forever */
while (1) {
__WFI();
if (sys_event & EV_TICK_CT_DISPLAY) {
sys_event &= ~EV_TICK_CT_DISPLAY;
Board_UARTPutSTR("system tick: ");
Board_itoa(tick_ct, out_str, 10);
Board_UARTPutSTR(out_str);

                        Board_UARTPutSTR("\tSwitch IN: ");
Board_itoa(aplusb(a,b), out_str, 10);
a++;
Board_UARTPutSTR(out_str);
Board_UARTPutChar('\r');
Board_UARTPutChar('\n');
}

위의 코드는 타이머 인터럽트에 따라 일정 주기 마다 틱카운트를 증가하면서 출력하는 예제에다,  aplusb() 함수의 입력으로 변수 a,b 를 넣고 함수의 출력을 uart로 출력하는 코드입니다.

또 일정한 타이머 주기마다 a가 1씩 증가하면서 aplusb() 함수의 입력으로 a,b를 적용시키면 출력이 계속해서 1씩 증가되면서 UART로 출력됨을 예상하면서 PC의 232 터미날 프로그램에서 확인을 해 봤습니다.

11. 다음은 라이브러리 함수의 출력을 PC 터미널 프로그램인 Tera Term VT로 수신한 결과입니다. 예상한 결과대로 잘 나오는 것을 보니 라이브러리 함수가 잘 동작하는것 같습니다. ^^ . 와우~~ 성공.


댓글 없음:

댓글 쓰기