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)
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.
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.
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?
((0x3FFFFF * 1ms)/1000)sn kadar.