ex01_MCO - withrobot/myCortex-STM32F4 GitHub Wiki

κ°œμš”

MCO μ˜ˆμ œλŠ” STM32 MCU의 MCO 핀을 μ΄μš©ν•΄ 클럭 λ™μž‘ μ—¬λΆ€λ₯Ό 확인할 수 μžˆλŠ” μ˜ˆμ œμž…λ‹ˆλ‹€. STM32 MCUμ—μ„œλŠ” λ‚΄μž₯ RC μ˜€μ‹€λ ˆμ΄ν„°, μ™Έμž₯ ν¬λ¦¬μŠ€ν„Έ, μ™Έμž₯ μ˜€μ‹€λ ˆμ΄ν„° λ“± μ—¬λŸ¬κ°€μ§€ 클럭 μ˜΅μ…˜μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. MCOλŠ” μžμ‹ μ΄ μ›ν•˜λŠ” 클럭 μ˜΅μ…˜μ΄ μ œλŒ€λ‘œ μ„€μ •λ˜μ–΄ μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜λŠ”μ§€ ν™•μΈν•˜λŠ” κ°€μž₯ μ •ν™”ν•œ λ°©λ²•μž…λ‹ˆλ‹€. MCO κΈ°λŠ₯은 μ§€μ •ν•œ 클럭 νŒŒν˜•μ„ κ·ΈλŒ€λ‘œ MCO1(PA8) ν•€μœΌλ‘œ 좜λ ₯ν•˜λŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€. 이 μ˜ˆμ œμ—μ„œλŠ” PLL 좜λ ₯을 2λΆ„μ£Ό ν•΄μ„œ MCO1 ν•€μœΌλ‘œ 좜λ ₯ν•©λ‹ˆλ‹€. System Clock νŽ˜μ΄μ§€μ˜ 그림을 μžμ„Ένžˆ λ“€μ—¬λ‹€ 보면 MCO1κ³Ό PLL output이 μ—°κ²°λ˜μ–΄ μžˆλŠ” 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

κ΄€λ ¨ Peripheral

μ†ŒμŠ€ μ‚΄νŽ΄λ³΄κΈ°

main.c 파일 ν•˜λ‚˜λ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

32 line:

#include "stm32f4xx.h"

기본적인 헀더 νŒŒμΌμ„ includeν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. StdPeriph libraryλ₯Ό μ‚¬μš©ν•˜λŠ” κ²½μš°μ—λŠ” ν•„μˆ˜μ μœΌλ‘œ includeν•΄μ•Ό ν•˜λŠ” 헀더 νŒŒμΌμž…λ‹ˆλ‹€.

11 line:

GPIO_InitTypeDef GPIO_InitStructure;

main()μ—μ„œ ν•„μš”ν•œ λ³€μˆ˜λ₯Ό μ„ μ–Έν–ˆμŠ΅λ‹ˆλ‹€. 이 μ˜ˆμ œμ—μ„œλŠ” PA8 ν•€κ³Ό MCO κΈ°λŠ₯을 μ„€μ •ν•˜κΈ° μœ„ν•΄ GPIO_InitStructure ꡬ쑰체 λ³€μˆ˜κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

13 line: RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

// Configure MCO1 (PA8) as alternate function, push-pull
GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);

// Configure MCO1 output to System Clock output / 2
RCC_MCO1Config(RCC_MCO1Source_PLLCLK, RCC_MCO1Div_2);

PA8이 μ†ν•œ GPIOAλ₯Ό enable ν•˜κ³ , PA8을 MCO 좜λ ₯으둜 μ„€μ •ν•©λ‹ˆλ‹€. MCO 좜λ ₯을 μœ„ν•΄μ„œ GPIOA의 GPIO_Pin_8을 AF λͺ¨λ“œμ— push-pull 좜λ ₯, 속도 100MHz, pull-up/pull-down μ €ν•­ μ‚¬μš©μ•ˆν•¨μœΌλ‘œ μ„€μ •ν–ˆμŠ΅λ‹ˆλ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ RCC_MCO1Config()λ₯Ό μ‚¬μš©ν•΄ MCO1 핀에 PLL ν΄λŸ­μ„ 2λΆ„μ£Όν•œ νŒŒν˜•μ„ 좜λ ₯ν•˜λ„λ‘ μ„€μ •ν•©λ‹ˆλ‹€. myCortex-STM32F4 λ³΄λ“œμ—μ„œλŠ” PLL을 μ‚¬μš©ν•΄ 메인 클럭으둜 168MHzλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. 반면 GPIOμ—μ„œ 좜λ ₯ν•  수 μžˆλŠ” μ΅œλŒ€ μ†λ„μ˜ ν΄λŸ­μ€ 100MHz μž…λ‹ˆλ‹€. λ”°λΌμ„œ 168MHzλ₯Ό 2λΆ„μ£Ό ν•œ 84MHzλ₯Ό 좜λ ₯ν•˜λ„λ‘ μ„€μ •ν•œ κ²ƒμž…λ‹ˆλ‹€.

μ‹€ν–‰ 방법

ν”„λ‘œμ νŠΈλ₯Ό λΉŒλ“œν•΄μ„œ λ‹€μš΄λ‘œλ“œ ν•œ λ‹€μŒ μ˜€μ‹€λ¦¬μ½”μŠ€μ½”ν”„λ₯Ό μ΄μš©ν•΄ PA8 핀을 κ΄€μ°°ν•©λ‹ˆλ‹€. 84MHz νŒŒν˜•μ΄ 보인닀면 μ •μƒμž…λ‹ˆλ‹€.

MCO 84MHz 좜λ ₯