Picproje Elektronik Sitesi

DERLEYİCİLER => Diğer Derleyiciler => KEIL => Konuyu başlatan: mir_as82 - 24 Temmuz 2013, 16:49:35

Başlık: Aşağıdaki kod nasıl çalışır?
Gönderen: mir_as82 - 24 Temmuz 2013, 16:49:35
Aşağıdaki fonksiyon nasıl çalışır acaba?
stm32f4 discovery ile çalışıyorum. Buradan gecikme fonksiyonu olduğu belli ama parametrelerine bir mana veremedim.
void Delay(__IO uint32_t nCount)
Başlık: Ynt: Aşağıdaki kod nasıl çalışır?
Gönderen: Burak B - 24 Temmuz 2013, 16:53:00
Derleyiciye diyorki "Bu değişkeni optimize etmek gibi bir gaflette bulunma ağzını burnunu kırdırma bana." :) Yoksa istenen sürede gecikme olmayacaktır.
Zaten _IO' nun tanımına bakacak olursan volatile olduğunu görürsün.
Başlık: Ynt: Aşağıdaki kod nasıl çalışır?
Gönderen: camby - 24 Temmuz 2013, 17:18:34
güzel bir yorum gelmiş yukarıda : )

__IO dediği gibi volatile anlamına geliyor. Header'ların birinin içinde tanımlı.

Aslında fonksiyonun tek bir parametresi , diğer tanımlar parametrenin özellikleri.

void Delay(nCount)

eğer sorduğun bu ise , bu fonksiyon STM in hazırladığı bir fonksiyon ve tick timer ile birlikte çalışıyor. Tick timer örneğin 1ms'de bir kesme verecek şekilde set ediliyor. Kesmeye her girdiğinde ncount 1 azaltılıyor. Siz de bu fonksiyon ile istediğiniz nCount değerini girip delay elde edebiliyorsunuz. Çok detaylı hatırlamıyorum ancak bu şekilde. Değişkenleri ve tanımları takip ederek detayını anlayabilirsin.
Başlık: Ynt: Aşağıdaki kod nasıl çalışır?
Gönderen: mir_as82 - 25 Temmuz 2013, 10:47:19
Peki ne kadar gecikme olacağını nasıl hesaplıyoruz?

void Delay(__IO uint32_t nCount)
{
  while(nCount--)
  {
  }
}
Delay(0x3FFFFF);
Buradaki gecikme ne kadar olacaktır?
Başlık: Ynt: Aşağıdaki kod nasıl çalışır?
Gönderen: Burak B - 26 Temmuz 2013, 11:38:32
((0x3FFFFF * 1ms)/1000)sn kadar.