Merhaba arkadaşlar bu yazımızda STM32F4 serisinde Timer yapılarını öğreneceğiz.

Timer nedir ?
– Timer , diğer mikroişlemcilerde olduğu gibi ST serisinde de aynı anlamdadır. Basit olarak sayıcı olarak temsil edebiliriz. Belirli bir sayıdan aşağı birer birer düşer yada istediğimiz noktaya cıkartabiliriz. Buna ek olarak aralıklarıda seçebiliriz ve uygulayabiliriz. Bu sayma işlemini clock hızına göre yapabildikleri gibi dışarıdan verilen işaretlerlede yönetilebilmektedir.

Timer’lar yüklenen değerleri bittiği zaman bir kesme oluşturarak kesme kod bloğundaki kodu yürütürler. STM32Fx serisi mikrodenetleyicilerde 8 adet timer vardır. Bu timer’ların 7 tanesi 16 bitlik sadece bir tanesi 32 bitliktir. 8 adet timer’ın birbirinden farklı özellikleri vardır. Bu özellikleri Counter Type ‘tan en basit şekilde gözlemleyebiliriz. İstersek düşen kenar istersek yükselen kenar oluşturabilir istediğimiz hızda bir timer’da kullanabiliriz.

STM32F4 ‘de timer yapıları diğer mikroişlemci-denetleyicilerle çok fazla benzer olup cok hızlı bir şekilde uygulanabilmektedir.

Gözlemlerimiz doğrultusunda ben TIM3 ( Timer3 ) ‘ü seçiyorum.
Sıra geldi kod bölümümüze :

[codesyntax lang=”php”]

   TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
   TIM_OCInitTypeDef        TIM_OCInitStructure;

   /* TIM3 timer'ımızı aktif ediyoruz */
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

   /* TIM3te yapılmış önceki ayarlar varsa temizliyoruz */   
   TIM_DeInit(TIM3);

   /* TIM3 başlangıçayarını yapıyoruz.*/
   TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
   TIM_OCStructInit(&TIM_OCInitStructure);

   /* Timer özelliklerini ve yapmasını istediklerimizi giriyoruz */
   TIM_TimeBaseStructure.TIM_Period = 0xFF; // Periyod girişi
   TIM_TimeBaseStructure.TIM_Prescaler = 0x0; //Başlangıç değeri
   TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;//Timer hızının kaça bölüneceği (burada bölünmüyor.)
   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//Yapmak istediğim Counter Type'mız

  /* Yaptığımız ayarları TIM3'e aktarıyoruz. */
   TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
   TIM_SelectOutputTrigger(TIM3, TIM_TRGOSource_Update);

[/codesyntax]

Yardımcı olabildiysem ne mutlu bana arkadaşlar. Kendinize iyi bakınız.

______
Gökhan TARIM