본문 바로가기

공부/STM32F1

9.[stm32f103][hal] RCC_MCO 로 Clock 확인하기

728x90
반응형

1. RCC 설명

 

RCC 은 클럭을 컨트롤하는 레지스터입니다.

 

크게 HSI,HSE,PLL,SYSCLK 등이 있습니다.

HSI: 내부에서 제공하는 Clock

HSE: 외부에서 제공하는 Clock

PLL: Clock을 증폭

SYSCLK: 결과물

LSE : 외부 정교한 클락 (RTC)에 사용됨

이렇게 설명할수 있겠습니다.

 

2. MCO 설명

arm 에서는 클럭을 외부에서 측정할 수 있게 제공하는 기능이 있습니다.

그것이 MCO (Microcontroller Clock Output) PA8번입니다.

PA8번 핀을 통해서 HSI LSE HSE PLL SYSCLK 를 측정할 수 있습니다.

 

3. 핀설정

 

4. PLL 없이 HSE로 설정 후 측정하기

 

 

 

 

 

5. PLL 설정 후 SYSCLK 측정하기

 

6. 소스

 

설정대로만 하면 기본적으로 SYSCLK를 PA8에 출력이 될겁니다.

그런 소스가 main.c 에 보시면 SystemClock_Config(); 요기 안에

HAL_RCC_MCOConfig(RCC_MCO, RCC_MCO1SOURCE_SYSCLK, RCC_MCODIV_1);

이렇게 코딩 되어 있기 떄문입니다.

그러면 다른 클락을 보기 위해서 바꾸려면 이 부분을 바꾸시던지

아니면 main.c에 SystemClock_Config();  밑에 함수를 추가 하면 되겠죠~

 

int main(void)
{

  HAL_Init();

  SystemClock_Config();

  MX_GPIO_Init();

  /* USER CODE BEGIN 2 */
  //HAL_RCC_MCOConfig(RCC_MCO, RCC_MCO1SOURCE_HSI, RCC_MCODIV_1);
  //HAL_RCC_MCOConfig(RCC_MCO, RCC_MCO1SOURCE_LSE, RCC_MCODIV_1);
  //HAL_RCC_MCOConfig(RCC_MCO, RCC_MCO1SOURCE_HSE, RCC_MCODIV_1);
  //HAL_RCC_MCOConfig(RCC_MCO, RCC_MCO1SOURCE_PLLCLK, RCC_MCODIV_1);
  //HAL_RCC_MCOConfig(RCC_MCO, RCC_MCO2SOURCE_SYSCLK, RCC_MCODIV_1);
  /* USER CODE END 2 */

  while (1)
  {

  }

}

 

728x90
반응형