28 Ağustos 2016 Pazar

2 - STM32F4 delay Fonksiyonu

Merhaba arkadaşlar,

sıradaki konumuz gecikme fonksiyonu oluşturmak. Aşağıda kodların tamamı bulunmaktadır. açıklama kod kısmının altında bulabilirsiniz.

#include "stm32f4xx.h" //stm32f4 kütüphanesi
#include "stm32f4xx_gpio.h" //GPIO kütüphanesi
#include "stm32f4xx_rcc.h" // RCC clock kütüphanesi


void Delay(uint32_t time)  //gecikme fonksiyonu
{
while(time) // time 0(sifir) olana kadar kodu dondur
time--; // time degerini 1 azalt
}


//Ana fonksiyon
int main(void)
{
GPIO_InitTypeDef  GPIO_InitStructure; // Port yönlendirmesi

  /* GPIOD Periph clock hatti aktif edilir */
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);

  /* PD12, 13, 14 ve PD15 pinleri kullan1lacak */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
/* Eger sadece tek bir pin ornegin PD12 kullanilacak ise,
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; yazmaniz yeterli olacaktir*/

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //Pinler cikis olarak belirlendi
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //Pin PushPull olarak ayarlandi
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //GPIO Bus hizi 100 MHz ayarlandi
GPIO_Init(GPIOD, &GPIO_InitStructure); //Yukarida tanimlanan bilgileri GPIOD adresine ait oldugu belirtilir


GPIO_ResetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);

  while (1) //Sonsuz donguye girilir
{
GPIO_SetBits(GPIOD,GPIO_Pin_12); //PD portunun 12.pini Set yapilir. yani logic 1
Delay(20000000); //10000 saykil zamani gecikme
GPIO_SetBits(GPIOD,GPIO_Pin_13); //PD portunun 13.pini Set yapilir. yani logic 1
Delay(20000000);
GPIO_SetBits(GPIOD,GPIO_Pin_14); //PD portunun 14.pini Set yapilir. yani logic 1
Delay(20000000);
GPIO_SetBits(GPIOD,GPIO_Pin_15); //PD portunun 15.pini Set yapilir. yani logic 1
Delay(20000000);

}
}







void Delay(uint32_t time)  //gecikme fonksiyonu
{
while(time)  // time 0(sifir) olana kadar kodu dondur
time--;  // time degerini 1 azalt
}

burada time değişkeni ile fonksiyona gelen sayı while(time) döngüsü içerisinde sıfır olana kadar dönüyor ve fonksiyondan çıkıyor. gelen time değerine göre örneğin 1000 ise 1000 saykıl süresince dönüyor ve gecikme oluşuyor. işlemci 168Mhz hızında çalıştığı için 1 saykıl = 1/168000000 demektir. o halde 1000 saykıl 1000*(1/168000000) süresince bir gecikme fonksiyonu oluşuyor demektir.

İyi Çalışmalar.

                                                                                                                                       

Hiç yorum yok:

Yorum Gönder