Set Interrupt Group 분석
HAL_Init에서 PriorityGrouping 설정하는 코드를 분석해 보았다.
HAL_Init에서 PriorityGrouping 설정하는 코드를 분석해 보았다.
Hal init 과정을 분석해 보았다. HAL init 시 아래와 같은 함수를 호출 한다.
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
STM32에서 Clock Configuration을 설정하는 과정을 확인해 보았다.
SystemClock Config => HAL_RCC_ClockConfig 함수가 호출되어 Clock Configuration이 설정이 된다. 호출 과정을 분석한 내용을 정리해 보았다.
Oscillator를 설정하기 위해 아래와 같이 설정 후 HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2)를 호출 한다.
Clock 설정은 아래와 같이 세팅했다.
~~~ void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
STM32에서 Oscillator를 설정하는 과정을 확인해 보았다.
SystemClock Config => HAL_RCC_OscConfig 함수가 호출되어 Oscillator가 설정이 된다. 호출 과정을 분석한 내용을 정리해 보았다.
Oscillator를 설정하기 위해 아래와 같이 설정 후 HAL_RCC_OscConfig(&RCC_OscInitStruct)를 호출 한다.
Clock 설정은 아래와 같이 세팅했다.
~~~ void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
Systick 설정 순서는 아래와 같다. Systick 이란 Cortex-M 시리즈 마이크로컨트롤러의 코어에 기본적으로 동일하게 내장된 24비트 타이머다.
전원을 인가하면 ARM core는 최초 Reset 신호(PORESETn)가 인가 되어 아래와 같이 Reset_Handler가 호출된다.
참고 링크: http://recipes.egloos.com/5044366
참고 링크: https://developer.arm.com/documentation/ddi0337/e/Clocking-and-Resets/Cortex-M3-reset-modes/Power-on-reset