대상 : SetSysClockTo72


참조 : RCC_CR


시스템 클럭을 사용하는 방법

1.HSI를 그대로 사용

2.HSE를 그대로 사용

3.PLL을 거쳐서 생성된 클럭을 사용


PLL의 사용에 HSI 또는 HSE를 사용할 수 있으나 정확도의 문제로 향후 USB를 사용하기 위해 외부 클럭 사용을 추천

현재 나의 모듈의 외부클럭은 8MHz 이기 때문에 72MHz를 구하기 위하여 9를 곱해야 한다.


1. Enable HSE(High Speed External)


RCC_CR_HSEON

:HSEON을 1로 만들어 HSE를 Enable로 만든다.(HSE Oscillator ON)


RCC_CR_HSERDY

:HSE oscillator가 사용 가능해졌는지 확인(하드웨어에 의해서 1로 Set)


HSEStartUp_TimeOut

:HSERDY에 대한 time out




2.Flash access Latency


FLASH_ACR_LATENCY_2


3.RCC_CFGR(clock ConFiGuration Register) 

HCLK

PCLK1

PCLK2

ADCCLK 의 4개 클럭이 있다.

주의할 점은 PCLK1의 Max Clock은 36MHz라는것. 따라서 HCLK를 72MHz로 설정한다면 PCLK1은 HCLK/2로 하여 36MHz나 그 이하로 만들어야 한다.


.PLL설정

PLL 소스로 HSE를 사용하면서 곱할 값 설정하자.

PLLMUL, PLLSRC를 설정한다.


PLLSRC : RCC_CFGR_PLLSRC_HSE

PLLMUL : RCC_CFGR_PLLMULL9



PLL ON

PLLON    : PLL enable

PLLRDY  : PLL clock ready flag


SW : System clock switch    (HSI,HSE,PLL중 무엇을 System Clock으로 사용할 것인가 설정)

SWS : System clock switch status    (Switch Status... 플래그같은거?)


위의 설정을 다루어 모듈의 동작은 72MHz로 맞춰진다

이후 USART_Init의 apbclock를 72000000 으로 교체하여 클럭에 맞춘 통신도 가능할 것이다.

'중도연재종료 > CORTEX M3' 카테고리의 다른 글

정확한 1초 Delay 구현  (0) 2013.06.23
RCC_GetClockFreq  (0) 2013.06.23
Get Character  (0) 2013.06.14
당분간 정지  (0) 2013.06.14
UART_ Hello_Wolrd 찍기_2  (0) 2013.06.08
Posted by 십자성군