STM32F4 Discovery yüklediğim programlar çalışmıyor

Başlatan Seferi, 27 Eylül 2012, 01:30:32

GreeN

@XX_CİHAN_XX  projemde çok fazla float değişkenlerle işlemler var.
Keilde proje ayarlarında Use FPU işaretli olması FPU'yu aktif etmeye yetermi ?
ayrıca kod eklemem gereklimi?
Merak ettiğim işlem yapılan değişkenin float olması bu işlemin FPU'da yapılacağı anlamına mı geliyor?
Terörü Lanetliyoruz.

Seferi

Alıntı yapılan: XX_CİHAN_XX - 27 Eylül 2012, 17:43:52
Keilin çalıştırdığın projelerinden birinin proje klasöründen system_stm32f4xx.c dosyası ile startup_stm32f4xx.lst dosyasını kendi proje klasöründekilerin yerine kopyala.

Hocam dediğin gibi yaptım atık debug yapabiliyor. Ama birkaç sorum daha var: "system_stm32f4xx.c" dosyasını çalışan bir projeden alıp kendi projeme ekledim ama bunu ana fonksiyonuma "include" ettiğim zaman hatalar çıkıyor, dahil etmesem normal çalışıyor, bu dosya dahil etemeden nasıl oluyorda çalışıyor? Acaba keil bu dosyanın içindeki SystemInit() fonksiyonunu olduğu için mi dahil ediyor?

system_stm32f4xx.c dosyasında saat ayarları gibi ayarlar var galiba, ve SystemInit() fonksiyonu var. Ben SystemInit() ayarlarımı değiştirmek istesem system_stm32f4xx.c yi mi değiştirmem uygun olur yoksa ana dosyamda ayarları değiştiren bir fonksiyon yazıp main() fonksiyonunda ilk onu çağırsam mı uygun olur?

Son olarak  startup_stm32f4xx.lst dosyası ne işe yarar? Projeye dahil etmesem ne olur?

(GreeN in sorusunun cevabını merak ediyorum)

Yardımlarınız için teşekkür ederim.

XX_CİHAN_XX

Alıntı yapılan: mmilamur - 28 Eylül 2012, 11:36:36
Hocam dediğin gibi yaptım atık debug yapabiliyor. Ama birkaç sorum daha var: "system_stm32f4xx.c" dosyasını çalışan bir projeden alıp kendi projeme ekledim ama bunu ana fonksiyonuma "include" ettiğim zaman hatalar çıkıyor, dahil etmesem normal çalışıyor, bu dosya dahil etemeden nasıl oluyorda çalışıyor? Acaba keil bu dosyanın içindeki SystemInit() fonksiyonunu olduğu için mi dahil ediyor?

system_stm32f4xx.c dosyasında saat ayarları gibi ayarlar var galiba, ve SystemInit() fonksiyonu var. Ben SystemInit() ayarlarımı değiştirmek istesem system_stm32f4xx.c yi mi değiştirmem uygun olur yoksa ana dosyamda ayarları değiştiren bir fonksiyon yazıp main() fonksiyonunda ilk onu çağırsam mı uygun olur?

Son olarak  startup_stm32f4xx.lst dosyası ne işe yarar? Projeye dahil etmesem ne olur?

(GreeN in sorusunun cevabını merak ediyorum)

Yardımlarınız için teşekkür ederim.

FPU ile ilgili kısma gerbay hocam gayet güzel açıklık getirmiş. Diğer soruna gelince,

startup dosyası adı üstünde ilk enerji verildiğinde yada mcu resetlendiğinde ilk çalışan kodları barındıran bir dosyadır.
Asm tabanlı bir dosyadır. MCU yu kodları koşmaya hazırlar ve yönlendirir. Önce system_stm32f4xx de bulunan systeminit fonksiyonunu çalıştırır. Ardından Ana (Main) programını çalıştırır. SystemInit in içinde osilatörün clock frekansların felan ayarlanmaktadır. Sen ana programının olduğu dosyaya SystemIniti ekleyip
ardından system_stm32f4 ü de programına eklemeye kalkınca sorun burada doğuyor çünkü system dosyasında da zaten bir SystemInit subroutini mevcut!!!
Ana programındakini sil main içinde çağırmana da gerek yok (startup kodun o işi hallediyor.)
Bu şekilde sorun yaşamazsın.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

XX_CİHAN_XX

Bu faydalı bilgi için teşekkürler hocam.
TouchScreen\touch_7846.c(180): warning:  #1035-D: single-precision operand implicitly converted to double-precision

Uyarısı şimdi daha bi anlamlı oldu :)
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

GreeN

@gerbay hocam verdiğiniz bilgiler için teşekkürler. Birkaç sorum olacak musadenizle ,

float PI = 3.1415926;
float PI = 3.1415926F;

bu tip tanımlara yönelik "single precision data processing instruction" hakkında verdiğiniz bilgilerle karşılaşacağımız problemleri aşabileceğiz.
Ama öndeğer vermeden yaptığımız tanımları misal ;
float  A = 0.0000F ;
şeklindemi yapmamız gerekir?



Bunun haricinde bir array için nasıl bir tanımlama yapmalıyım ?

float input[1024];
float output[1024];

özellikle uzun dizilerde bahsettiğiniz zaman kaybı daha fazla olacak sanırım . Bunu nasıl aşarız?

             

   
Terörü Lanetliyoruz.

XX_CİHAN_XX

float tanımlarken ön değer vermek zorunda değilsiniz zaten. Sadece o float u işleme soktuğunuz sayısal değerlerin yanına f koymanız kafi.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

GreeN

Anladım , bir değişken değer alırken verilen değerde bunu belirtmeliyiz. Peki bir dizi aritmetik işlem ile float değişken bir değere sahip oluyorsa ,

float A[10];
int B[10];
.....
for(i=0;i<10;i++){
A =float(B*3.3F/0xFFF);
}

Yukarıda 3.3F kullanmak yada kullanmamak farkeder mi? Type Casting 'de zaten bu işimi yapıyor?
Terörü Lanetliyoruz.

cxbere

İyi günler, bende stm32 discovery kit aldım ve denemelere başladım ama örnek uygulamlalar hariç kendi yazdıklarım çalışmıyor, sitedekileri kopyalıyorum ama yine de çalışmıyor...
aynı sorun ortaya çıkmış rica etsem nasıl çözdüğünüzü anlatırmısınız.

Seferi

Alıntı yapılan: cxbere - 15 Ekim 2012, 17:49:53
İyi günler, bende stm32 discovery kit aldım ve denemelere başladım ama örnek uygulamlalar hariç kendi yazdıklarım çalışmıyor, sitedekileri kopyalıyorum ama yine de çalışmıyor...
aynı sorun ortaya çıkmış rica etsem nasıl çözdüğünüzü anlatırmısınız.

Hocam keilin kendi startup_stm32f4xx.s dosyasını değil de  konunun 1. sayfasında "GreeN"in verdiği dosyayı programa dahil edersen çalışıyor.
Biraz önce keil mdk4.60 ı indirip kurdum bu sürümde öyle bir sıkıntı yok. İstersen bu sürümü yükle, büyük ihtimal problem kalmayacaktır.

Ama mdk 4.60 ı sonsivriden indirdiğim keygen ile ilaçlamaya çalıştım, ilaç ters tepti 32k olan deneme sürümü 16k ya indi  :o :o Acaba bunu full kullanan var mı? (keygen mdk4.53 de kullandığım keygen)

cxbere

4.60 ' kullanıyorum keygen sorunsuz çalışıyor. İsterseniz gönderebilirim. (Kod yüklerken 32KB uyarısı vermiyor, LIC başarılı yüklendi diyor keyi girdiğimde)

Seferi

Alıntı yapılan: cxbere - 16 Ekim 2012, 09:00:10
4.60 ' kullanıyorum keygen sorunsuz çalışıyor. İsterseniz gönderebilirim. (Kod yüklerken 32KB uyarısı vermiyor, LIC başarılı yüklendi diyor keyi girdiğimde)

Hocam ne yaptın, sorun halloldu mu? Dosyayı gönderirsen sevinirim, teşekkürler.

cxbere

Kusura bakmayın arkadaşlar işten yeni geldim sayılır, aşağıdaki link keygen için ben denedim çalışıyor, v4.6 şu an upload ediyorum, onu da paylaşacağım.


https://rapidshare.com/files/462126276/Keygen3p20_Edge_.rar;


cxbere

Bu sitede anlatılan ilk örnek olan led yakma kodlarını aynen alıp main'in içine atıp çalıştırmaya çalıştım :

programı yüklediğimde hardfault hatası oluyordu, keilin örneklerindeki gibi startup ve main kısmını ayrı dosyalara aldım (bilmiyorum ne kadar doğru en azından daha az karışık oldu) , "startup_stm32f4xx.s" ile ilgili söylediklerinizi yaptım,  şu an bir sorun yok gibi... teşekkürler





mesaj birleştirme:: 17 Ekim 2012, 00:51:08

Mdk keil v4.60

https://rapidshare.com/files/273132399/mdk460.part1.rar;
https://rapidshare.com/files/52016494/mdk460.part2.rar;
https://rapidshare.com/files/1662302950/mdk460.part5.rar;
https://rapidshare.com/files/2841750323/mdk460.part3.rar;
https://rapidshare.com/files/3296109813/mdk460.part4.rar;

Seferi

Hocam rar şifresi nedir?
Bir de bende ki keygende  Prof. Developers/RealView MDK yi seçtiğim zaman keil standart sürümü lisansı açılıyor fakat içindeki örnek USB HID uygulamasını derlemeye çalıştığında linansı yetmiyor diyor. Ama kendi yazdıklarımızda sınır yok. USB HID uygulaması yapan var mı?

cxbere

Keygen için rar şifresi 123

Not:
Bende avira antivirüs var kegenin çalışmasını engelliyor