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 ννμ΄ λ³΄μΈλ€λ©΄ μ μμ λλ€.