NVIC(2)
-
[Cortex-M3] CMSIS 라이브러리 - 1 (RCC / NVIC / GPIO)
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 는 첫번째 우선순위..
2019.11.19 -
[Cortex-M3] 3. EXTI(외부 인터럽트)와 AFIO, NVIC
EXTI(외부 인터럽트)가 일어나는 과정과 내부 아키텍처에 대해 알아보자. 외부에서 input이 들어오면 다음과 같은 처리를 하여 이루어진다. 1. falling trigger와 rising trigger를 거쳐 인터럽트를 검출한다 2. 마스크 레지스터와 and논리회로를 거쳐 enable 상태일때 통과시킨다. 3. pending 레지스터를 거쳐 nvic컨트롤러로 향한다. 인터럽트는 0~15번까지 존재하며 16~19번 인터럽트는 특수한 인터럽트이다. 간단한 구조를 알아보았으니 제어를 하기 위하여 레지스터를 알아보자. GPIO는 항상 쓰이기 때문에 확실히 외워두고 알아보는게 좋을 듯 하다. 1. EXTI_RTSR (Rising Trigger Selection Register) TRx : 해당 인터럽트를 ri..
2019.09.02