Aşağıdaki kod nasıl çalışır?

Başlatan mir_as82, 24 Temmuz 2013, 16:49:35

mir_as82

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)

Burak B

#1
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.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

camby

#2
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.

mir_as82

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?

Burak B

"... a healthy dose of paranoia leads to better systems." Jack Ganssle