STM32F100RB Clock ile ilgili registerları değiştiremiyorum.

Başlatan Emre_Tuncay_, 03 Şubat 2018, 23:41:36

Emre_Tuncay_

Merhaba üzerinde çalıştığım projem için STM32F100RB mikrodenetleyicimin çalışma frekansı yetmeyince max 24Mhz olan hıza erişmek için gerekli ayarları yaptım.Bu ayarları Mikrodenetleyicinin clock Ağaç diyagramına bakarak yaptım.İlgili kodları yazdığımda PLLMUL registerinın değişmediğini yükleme yapınca 0 a eşitlendiğini gördüm debug'ta.Bunun nedenini bilen varsa yardımcı olabilirmi.Kodlarımı ve clock ağacını aşağıya'ya ekliyorum.
void System_Clock_Cmd()
{
	ErrorStatus Error;
	RCC_DeInit();
	RCC_HSEConfig(RCC_HSE_ON);
	Error = RCC_WaitForHSEStartUp();
	if(Error==SUCCESS)
  {
		//PLL Config
		RCC_PLLConfig(RCC_PLLSource_PREDIV1,3);
		RCC_PLLCmd(ENABLE);
		RCC_GetFlagStatus(RCC_FLAG_HSERDY==RESET);
		//AHB Config
		RCC_HCLKConfig(RCC_SYSCLK_Div1);
		RCC_PCLK1Config(RCC_HCLK_Div1);
		RCC_PCLK2Config(RCC_HCLK_Div1);
		RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
	}
	else if(Error==ERROR)
  {
		//HSE OSC not yet ready
		while(1){}
	}
}




Emre_Tuncay_

#1
Yaptığım hatayı buldum.Kod karmaşası olmasın diye RCC ayarlarını bir header dosyası içinden yapıp mainde çağırıyordum.Keil'de yeni fark ettiğim birşey header dosyası içinde syntax hatası olunca hata olduğunu söylemiyormuş.Oradan kaynaklı bir hata ve birde eksik kod yazmışım.Belki işine yarayan olur diye kodları buraya ekliyorum.
void System_Clock_Cmd()
{
	ErrorStatus Error;
	RCC_DeInit();
	RCC_HSEConfig(RCC_HSE_ON);
	Error = RCC_WaitForHSEStartUp();
	if(Error==SUCCESS)
  {
		//PLL Config
		RCC_PREDIV1Config(RCC_PREDIV1_Source_HSE,1);
		RCC_PLLConfig(RCC_PLLSource_PREDIV1,RCC_PLLMul_5);
		RCC_PLLCmd(ENABLE);
		while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);
		//AHB Config
		RCC_HCLKConfig(RCC_SYSCLK_Div1);
		RCC_PCLK1Config(RCC_HCLK_Div1);
		RCC_PCLK2Config(RCC_HCLK_Div1);
		RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
	}
	else
  {
		//HSE OSC not yet ready
		while(1){}
	}
}

Hatalı yazdığım yer ise if in içindeki while satırıydı.