Embeded/ARM Cortex-M4

라이브러리(library)코딩과 레지스터(Register)코딩

gharlic 2015. 7. 8. 02:55

 MCU에서 펌웨어를 작성할 때 작성방법에 따라 라이브러리(Library)를 사용하는 방법과

레지스터(Register)를 사용하는 방법으로 나뉜다.

 

라이브러리(Library)

 먼저 라이브러리를 활용하는 방법은 우리가 흔히 사용하는 방법으로

#include하여 추가하는 헤더파일에 있는 명령어들을 사용하는 것으로

C언어로 예를 들면 printf같은 것들이 라이브러리에 속한다.

사용자가 직접 레지스터를 제어하지 않아도 되게끔 MCU제조사 혹은 일반 개발자들이

각 기능들의 레지스터 제어를 함수형식으로 가독성이 좋게 만들어 헤더파일화 시킨것이다.

라이브러리로 작성할 경우 가독성이 좋다는 장점이 있다.

 

레지스터(Register)

 기본적으로 MCU의 모든 기능들은 레지스터를 제어함으로써 구동되게 된다.

레지스터를 이용한 방법은 이 레지스터에 직접 값을 전달하여 제어하는 것으로

 

구글검색을 통해 자신이 사용하는 MCU의 데이터시트(Datasheet)를 얻을 수 있다.

위 사진은 우리가 사용하는 M4의 레지스터 중 하나로 0~31번이 있으므로 32bit 레지스터이다.

이 레지스터를 사용하는 방법을 예로 들면 위 데이터시트가 0~7까지만 있다고 가정할 때

0번과 2번 3번 기능을 사용하고 싶다고 할 때

00001101이라는 바이너리(Binary)코드가 나오게 된다.

앞에서부터 7번 6번 5번 ~ 0번 순으로  High신호를 인가할 부분에 1을 위치시킨다.

그 후 이 값을 16진수로 변환하여 레지스터에 전달하면 된다.

ex) NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0f;

 

장단점

 라이브러리를 이용할 경우의 장점은

간편하고, 가독성이 좋고, 처음 배우기 쉽다는 것이다.

 레지스터를 이용할 경우의 장점은

어느 MCU를 사용하던 데이터시트만 참고하면 바로 개발이 가능하다는 것이다.

이 점은 사용하던 MCU가 갑자기 바뀌게 됬을 때 빛을 발하게 된다.

반응형

'Embeded > ARM Cortex-M4' 카테고리의 다른 글

GPIO/Timer를 활용한 FND제어 소스  (0) 2015.07.08
Timer / Timer_Handler 소스  (0) 2015.07.08
펌웨어(Firmware)의 구조  (0) 2015.07.08
타이머(timer)와 인터럽트(interrupt)  (0) 2015.07.08
STM32F4 핀배열  (0) 2015.07.07