대상 : 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 |