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에서 안드로이드까지 총망라, 한빛미디어](https://static.coupangcdn.com/image/affiliate/banner/501055b1188b2129a6f7b9cbafc901a4@2x.jpg)
'개발 관련 학습정리 > ARM(cortex-m3) Register 분석' 카테고리의 다른 글
[Cortex-M3] 6. DMA와 ADC (0) | 2019.09.16 |
---|---|
[Cortex-M3] 5. Systick, TimerX 제어하기 (2) (0) | 2019.09.09 |
[Cortex-M3] 4. Systick, TimerX 제어하기 (1) (0) | 2019.09.08 |
[Cortex-M3] 3. EXTI(외부 인터럽트)와 AFIO, NVIC (1) | 2019.09.02 |
[Cortex-M3] 2. Cortex-M3의 GPIO 두번째 (0) | 2019.08.27 |