Yardım: STM32F4 Discovery Led uygulaması

Başlatan muhendisbey, 04 Ağustos 2012, 17:53:13

Klein

#15
mask tanımını global yap.  Programın başında tanımla.  C derleyicilerin çoğu rastgele yerde değişken veya sabit tanımlamaya izin vermez. Değişkeler veya sabitler blığun başında tanımlanmalıdır. 

Sabitler genellikle blok içerisinde tanımlanmaz. Bu bir zorunluluk değildir. Blok içerisinde de tanımlanabilir  ama genellikle kimse o şekilde kullanmaz.
 
örnek:
#include "STM32F4xx.h"
const uint32_t mask[]={0x00000000,0x00001000,0x00002000,0x00004000,0x00008000};
...

muhendisbey

Alıntı yapılan: Klein - 07 Ağustos 2012, 07:57:18
mask tanımını global yap.  Programın başında tanımla.  C derleyicilerin çoğu rastgele yerde değişken veya sabit tanımlamaya izin vermez. Değişkeler veya sabitler blığun başında tanımlanmalıdır. 

Sabitler genellikle blok içerisinde tanımlanmaz. Bu bir zorunluluk değildir. Blok içerisinde de tanımlanabilir  ama genellikle kimse o şekilde kullanmaz.
 
örnek:
#include "STM32F4xx.h"
const uint32_t mask[]={0x00000000,0x00001000,0x00002000,0x00004000,0x00008000};
...

Hocam süpersiniz. Dediğiniz gibi yaptım ve sorunsuz çalışıyor. Yalnız birşey dikkatimi çekti
değişkenleri başta tanımlayınca programın işleme hızında bir değişiklik meydana geliyor, daha da yavaş çalışıyor.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

Klein

Aksine çoğu zaman daha hızlı çalışır.
Yerel değişkenler  stack katmanında tutulur. işleri bitince stack boşaltılır. tekrar ihtiyaç olunca tekrar buraya atılır. bu yüzden biraz yavaşlama olabilir.

Bu veriler işleme sokulurken işlemcinin dahili registerlerine atılır. işlemler burada yapılır. Registerler bellek alanlarına göre daha hızlıdır.
Eğer değerler registere atılıyor ve  o register alanına tekrar ihtiyaç duyulmadığı için bu alan boşaltılmıyorsa , tespitiniz doğru olabilir. Ancak bu her zaman olabilecek bir durum değil. Döngüdeki işlemlerde işleme giren veri saysı çok az ise bazen olabilir.