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 |