Embedded/STM32

[STM32] RCC 설정용 구조체 및 구동 함수

유제필 2022. 11. 12. 19:13

RCC 설정용 구조체

함수 명
설명
RCC_ClkInitTypeDef
클럭의 초기 설정용 구조체
[DataType]
uint32_t ClockType : 설정할 클럭, 이 파라미터는RCC_System_Clock_Type 중의 값 이어야 함
uint32_t SYSCLKSource : 시스템 클럭으로 사용하는 소스, RCC_System_Clock_Source 중의 값 이어야 함
uint32_t AHBCLKVivider : AHB 클럭의 디바이더. RCC_AHB_Clock_Source 중의 값이어야 하고 AHB클럭은 시스템 클럭에 의해 동작됨
uint32_t APB1CLKDivider : APB1 클럭의 디바이더. RCC_APB1_APB2_Clock_Source 중의 값이어야 하고 APB1 클럭은 AHB 클럭에 의해 동작됨
uint32_t APB2CLKDivider : APB2 클럭의 디바이더. RCC_APB1_APB2_Clock_Source 중의 값이어야 하고 AHB 클럭에 의해 동작됨
RCC_PLLInitTypeDef
PLL의 초기 설정용 구조체
[DataType]
uint32_t PLLState : The new state of the PLL의 새로운 state. RCC_PLL_Config 중의 값이어야 함
uint32_t PLLSource : PLL 진입 클럭 소스. RCC_PLL_Clock_Source 중의 값이어야 함
uint32_t PLLMUL : PLL VCO input clock의 곱하기 값
RCCEx_ PLL_Multiplication_ Factor 중의 값이어야 함

 

RCC 초기화 및 초기화 해제 함수

함수 명
설명
HAL_RCC_ClockConfig
(RCC_ClkInitTypeDef * RCC_ClkInitStruct,
uint32_t Flatency)
CPU와 AHB, APB 버스의 클럭 동작조건을 설정해주는 함수
[Parameter]
RCC_ClkInitStruct : 동작조건 설정을 위한 RCC_ClkInitTypeDef 구조체형 변수
FLatency : FLASH 동작시간(Latency) 이 파라미터는 다음 중 1개 값 을 가짐
FLASH_LATENCY_0 : FLASH 0 Lateny cycle
FLASH_LATENCY_1 : FLASH 1 Lateny cycle
FLASH_LATENCY_2 : FLASH 2 Lateny cycle
HAL_RCC_OscConfig
(RCC_OscInitTypeDef * RCC_OscInitStruct)
RCC 동작조건 설정을 위한 RCC_OscInitTypeDef 구조체형 변수
HAL_RCC_DeInit()
RCC 클럭의 설정을 리셋 후의 디폴트 상태로 복귀시키는 함수

NVIC, SysTick 등의 동작조건을 설정하는 함수

함수 명
설명
HAL_NVIC_SetPriority
(IRQn_Type IRQn, uint32_t PreemptPriority,
uint32_t SubPriority)
인터럽트의 우선순위 설정
[Parameter]
IRQn : 외부 인터럽트의 번호
PreemptPriority : FLASH 동작시간(Latency) 이 파라미터는 다음 중 1개 값 을 가짐
FLASH_LATENCY_0 : FLASH 0 Lateny cycle
FLASH_LATENCY_1 : FLASH 1 Lateny cycle
FLASH_LATENCY_2 : FLASH 2 Lateny cycle
HAL_NVIC_SerPriority
Grouping
(uint32_t PriorityGroup)
인터럽트의 우선 순위 그룹(pre-emption priority, subpriority) 설정
[Parameter]
PriorityGroup : The Priority grouping 비트의 길이. 다음 중 1개의 값을 가짐
NVIC_PRIORITYGROUP_0 : pre-emption priority에 0비트, subpriority에 4비트 사용
NVIC_PRIORITYGROUP_1 : pre-emption priority에 1비트, subpriority에 3비트 사용
NVIC_PRIORITYGROUP_2 : pre-emption priority에 2비트, subpriority에 2비트 사용
NVIC_PRIORITYGROUP_3 : pre-emption priority에 3비트, subpriority에 1비트 사용
NVIC_PRIORITYGROUP_4 : pre-emption priority에 4비트, subpriority에 0비트 사용
[Return] : 없음
* NVIC_PriorityGroup_0을 선택하면 IRQ pre-emption의 사용이 불가능하며, 펜딩된 IRQ의 수선순위는 subpriority로만 결정
HAL_NVIC_EnableIRQ
(IRQn_Type IRQn)
IRQ 인터럽트를 활성화(Enable) 시킴
[Parameter]
IRQn : 외부 인터럽트(EXTI)의 번호
[Return] : 없음
HAL_NVIC_DisableIRQ
(IRQn_Type IRQn)
IRQ 인터럽트를 비활성화(Disable) 시킴
[Parameter]
IRQn : 외부 인터럽트(EXTI)의 번호
[Return] : 없음
HAL_SYSTICK_Config
(uint32_t TicksNumb)
시스템 타이머와 관련 인터럽트를 초기화하고 Sysmtem Tick 타이머의 동작을 시작
[Parameter]
TicksNumb : 두 개의 인터럽트 간의 tick의 ticks Number 설정
[Return] :
0 : Function succeeded
1 : Function failed
HAL_NVIC_
SetPendingIRQ
(IRQn_Type IRQn)
외부 인터럽트의 펜딩 비트를 1로 설정
[Parameter]
IRQn : 외부 인터럽트(EXTI)의 번호
[Return] : 없음
* NVIC_PriorityGroup_0을 선택하면 IRQ pre-emption의 사용이 불가능하며, 펜딩된 IRQ의 수선순위는 subpriority로만 결정
HAL_NVIC_
GetPendingIRQ
(IRQn_Type IRQn)
펜딩 인터럽트를 읽어옴
[Parameter]
IRQn : 외부 인터럽트(EXTI)의 번호
[Return] :
0 : 인터럽트가 펜딩되어 있지 않음
1: 인터럽트가 펜딩됨
HAL_NVIC_
ClearPendingIRQ
(IRQn_Type IRQn)
외부 인터럽트의 펜딩 비트를 클리어
[Parameter]
IRQn : 외부 인터럽트(EXTI)의 번호
[Return] : 없음
HAL_NVIC_GetActive
(IRQn_Type IRQn)
액티브 인터럽트를 읽어옴
[Parameter]
IRQn : 외부 인터럽트(EXTI)의 번호
[Return] :
0 : 인터럽트가 펜딩되어 있지 않음
1: 인터럽트가 펜딩됨
HAL_SYSTICK_
CLKSourceConfig
(uint32_t CLKSource)
SysTick 클럭 소스를 설정
[Parameter]
CLKSource : SysTick 클럭 소르를 지정 이 파라미터는 다음 중 하나의 값을 가짐
SYSTICK_CLKSOURCE_HCLK_DIV8 : AHB Clock을 8로 나눈 값을 클럭 소스로 사용
SYSTICK_CLKSOURCE_HCLK : AHB Clock을 클럭 소스로 사용
[Return] : 없음
HAL_SYSTICK_Callback
(void)
SYSTICK 콜백 함수
[Return] : 없음
HAL_SYSTICK_
IRQHandler
SYS(void)
SYSTICK 인터럽트를 처리하는 IRQ 함수
[Return] : 없음

 

'Embedded > STM32' 카테고리의 다른 글

[STM32] Timer  (0) 2022.11.12
[STM32] ADC(Analog Digital Converter)  (0) 2022.11.12
[STM32] DAC(Digital Analog Convertor)  (2) 2022.11.12
[STM32] UART, USART  (4) 2022.11.12