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

Başlatan mir_as82, 24 Temmuz 2013, 19: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

24 Temmuz 2013, 19:53:00 #1 Son düzenlenme: 24 Temmuz 2013, 19:54:09 ByteMaster
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

24 Temmuz 2013, 20:18:34 #2 Son düzenlenme: 24 Temmuz 2013, 20:20:01 camby
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

Yasal Uyarı: Picproje.org sitemizde 5651 sayılı kanunun 8. maddesine ve T.C.Knın 125. maddesine göre tüm üyelerimiz yaptıkları paylaşımlardan kendileri sorumludur. Picproje.org hakkında yapılacak tüm hukuksal şikayetleri İletişim sayfamızdan bize bildirdikten en geç 3 (üç) iş günü içerisinde ilgili kanunlar ve yönetmelikler çerçevesinde tarafımızca incelenerek gereken işlemler yapılacak ve site yöneticilerimiz tarafından bilgi verilecektir.