CMSIS(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] 5. Systick, TimerX 제어하기 (2)
이번에는 systick에 이어서 ARM의 타이머를 알아보도록 하자 먼저 sysclk이 AHB 프리스케일러로 들어온다. 여기서 분주비로 나눠서 시스템 클락, APB1, APB2로 제공된다. APB1에서는 분주비로 나눠서 APB1의 페리페럴에게 제공된다. 또한, 타이머 2/3/4에게 제공되며 아까 나뉜 클락을 2배로 증폭시킬수도 있다. APB2에서도 분주비로 나눠서 APB2의 페리페럴에게 제공한다. 이제 타이머들을 제어할 레지스터들을 다뤄보도록 하자. 1. TIMx_CR1 (TIMx Control Register1) Bit 7 ARPE(Auto-reload preload enable) : 자동 리로드 프리로드 활성화 비트 Bit 4 DIR(Direction) : 타이머 방향을 조정하는 비트 Bit 0 CEN..
2019.09.09