저번 소스에서 SystemInit 에서 system 클럭을 죽였다 다시 살렸다.

이번에 그 이후를 보면 ..

----------------------------------------------------------------------------

void RCC_Configuration(void)
{
SystemInit();

/* Enable GPIOA clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

/* Enable GPIOB clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

/* Enable GPIOC clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

/* Enable GPIOD clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);

/* Enable USART1 clocks */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

/* Enable AFIO clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

/* Enable DMA1 clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
}

------------------------------------------------------------------------------

SYSTEM 클럭은 용도에 따라 분주를 해서 HCLK,FCLK,APB1,APB2 등에 사용된다.

72M 를 IO등에 바로 넣으면 좋겠지만 그럼 용도에 안맞을수도 있고 가격도 올라갈 것이다.

CPU는 가장 빠르게 동작해야 하니까 72M를 쓰고 램하고 연결되는 쪽은 가장 빨라야하니 72M

IO는 적당해도 되니 24M ... 이런식이다. (이건파워제어 레지스터하고 묶여있다.)

또다른 용도는 클럭이 안들어가면 그에 연결된 장치가 안돌것이고 안돌면 전류를 가장 작게

먹을것이니 저전력이 될것이다. 이런 내용이다.

이것은 저번 소스에서 보였던 RCC_CFGR 레지스터를 맞추어 설정하면 된다.

또다른 것은 APB1은 PCLK1을 설정하고 이것은 타이머2,3,4,5,6,7 이나 APB1에 붇어있는 디바이스를

제어하게 된다는것 이다.

어떤놈에 어떤것이 있는지 defile 문을 보자 stm32f10x_rcc.h에 들어 있다.

------------------------------------------------------------------------------

#define RCC_AHBPeriph_DMA1 ((uint32_t)0x00000001)
#define RCC_AHBPeriph_DMA2 ((uint32_t)0x00000002)
#define RCC_AHBPeriph_SRAM ((uint32_t)0x00000004)
#define RCC_AHBPeriph_FLITF ((uint32_t)0x00000010)
#define RCC_AHBPeriph_CRC ((uint32_t)0x00000040)

#define RCC_AHBPeriph_FSMC ((uint32_t)0x00000100)
#define RCC_AHBPeriph_SDIO ((uint32_t)0x00000400)
#define IS_RCC_AHB_PERIPH(PERIPH) ((((PERIPH) & 0xFFFFFAA8) == 0x00) && ((PERIPH) != 0x00))

------------------------------------------------------------------------------

AHB에는 DMA1,DMA2.,SRAM,FLITF,CRC,FSMC,SDIO 가 붇어 있다.

정확하게 보려면 블럭도를 보고 이해 해야한다. 레지스터를 일일이 보면 컥 넘 많다.

다른거 할때마다 좀씩 봐야지

위에 소스를 보면 GPIOA , GPIOB , GPIOC ,GPIOD, USART1, AFIO, DMA1 를 살린다.

참고로 AFIO는 IO 기능을 변경해주는 놈이다. PORTB.6번이었던놈이 설정을 하면 PORTD.12번이

된다. 카멜레온 같은놈 .. ㅋㅋ

'공부 > STM32' 카테고리의 다른 글

[STM32] Source 보기 5  (0) 2012.11.09
[STM32] Source 보기 4  (0) 2012.11.09
[STM32] SOURCE 보기 2  (0) 2012.11.09
[STM32] Source 보기 1  (0) 2012.11.09
[STM32] 프로젝트 구성 내용  (0) 2012.11.09

+ Recent posts