[Cortex-M3] CMSIS 라이브러리 - 1 (RCC / NVIC / GPIO)

2019. 11. 19. 10:12개발 관련 학습정리/ARM(cortex-m3) Register 분석

반응형

 

STM32사에서 만든 ARM을 위한 라이브러리 CMSIS라이브러리를 알아보자.

 

 

 

 

 

 

1. 먼저 clock을 제공하는 RCC 라이브러리 구조이다.

 

 

 

이와 같이 RCC_ABP(1/2)Periph_(name)이 주소로 define 되어있고,

 

 

 

RCC_APB1PeriphClockCmd()함수에 아까의 주소, ENABLE/DISABLE이 인자로 들어간다.

 

 

 

 

이 함수를 설정하면 RCC->APB(1/2)ENR 레지스터를 설정할 수 있다.

이를 통해 원하는 Peripheral에 clock을 손쉽게 제공할 수 있다.

 

 

 

 

 

2. NVIC 라이브러리

 

 

NVIC를 설정하는 NVIC_init의 구조는 다음과 같이 생겼다.

 

 

IRQChannel은 IRQ채널을 결정하고,

NVIC_IRQChannelPreemptionPriority 는 첫번째 우선순위, NVIC_IRQChannelSubPriority는 두번째 우선순위를 결정한다.

IRQChannelCmd는 ENABLE/DISABLE 여부를 결정한다.

 

 

이 구조체를 이제

NVIC_init함수에 인자로 집어넣는다.

NVIC_init함수의 구조는 레지스터의 구조와 함께 알아보아야 하므로 다음에 알아보도록 하자.

 

 

 

 

 

 

3. GPIO 라이브러리

 

 

gpio도 마찬가지로 init구조체를 사용하여 gpio_init함수로 보낸다.

_Pin은 핀 번호를 결정하고,

_Mode는 i/o 모드를 설정하고,

_Speed는 2mhz, 10mhz, 50mhz 등 속도를 조절합니다.

 

 

GPIO_Init()함수에 GPIOX의 주소를 인자값으로 전달하고, initstructure를 전달한다.

 

 

GPIO_Init에 대한 함수도 분석하려면 레지스터와 함께 알아보아야 하기 때문에 다음 차시에 알아보도록 하자.

 

 

 

 

지금까지 GPIO를 설정하기 위한 RCC / NVIC를 라이브러리로 설정해 보았고,

다음번엔 exti, timer, systick라이브러리를 살펴보자.

ARM으로 배우는 임베디드 리눅스 시스템:CPU에서 안드로이드까지 총망라, 한빛미디어
반응형