void init_led(void)
{
		RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
		GPIOC->CRL &= ~(GPIO_CRL_MODE0_0);
		GPIOC->CRL |= GPIO_CRL_MODE0_1;
		GPIOC->CRL &= ~GPIO_CRL_CNF2;
}

void init_pll(void)
{
		RCC_DeInit();
		RCC_HSICmd(ENABLE);
		while(!RCC_GetFlagStatus(RCC_FLAG_HSIRDY));
		RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_6);
		RCC_PLLCmd(ENABLE);
		while(!RCC_GetFlagStatus(RCC_FLAG_PLLRDY));
		FLASH_SetLatency(FLASH_Latency_1);
		FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
		RCC_HCLKConfig(RCC_SYSCLK_Div1);
		RCC_PCLK1Config(RCC_HCLK_Div1);
		RCC_PCLK2Config(RCC_HCLK_Div1);
		RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
		while(RCC_GetSYSCLKSource() != 0x08);
		SystemCoreClockUpdate();
}

void init_mcu(void)
{
		init_pll();
		init_led();
}

int main(void)
{
		uint32_t i;
	
		init_mcu();
		while(1)
		{
				GPIOC->ODR ^= GPIO_ODR_ODR0;
				for (i = 0; i < 1e5; i++)
						__asm("nop");
		}
}
