CooCox Örnek Proje Kurulumu

Başlatan memo333, 27 Ekim 2012, 00:55:37

Klein

adc yi okuduğuna emin misin?
float değeri int değişkene atıp en azından tam sayı kısmının doğru geldiğini test ettin mi?

sorunun display rutinlerinde veya adc okumada olmadığına eminsen, arkadaşların "%" konusundaki uyarılarını dikkate aldıysan
bir de "%3.1f" ile dene.

CooCox simülatör varsa, bulabilirsem ben de denerim.

muhittin_kaplan

hocam adc yi geçtim, normal atadığım FLOAT değerlerde olmuyor. ama integer değerleri ekranda görüyorum.

muhittin_kaplan

#47
        		char dizi[10];
        	    char dizi_2[10];
        		float Pi = 3.145F;
        		int a=27872787;
        	    sprintf(dizi_2,"%d", a);
        	    sprintf(dizi,"%3.1f", Pi);
        	    //GLCD_WriteString(dizi_2);
        	    GLCD_WriteString(dizi);


GLCD_WriteString(dizi_2); de problem yok ekrana yazıyor
GLCD_WriteString(dizi) da birşey göremiyorum.
dizi değişkenine watch window dan baktığımda "`\000\000\000\247\ny\000\024\f" görüyorum

mesaj birleştirme:: 10 Kasım 2012, 00:31:01

Alıntı yapılan: gerbay - 10 Kasım 2012, 00:26:40
hocam hard/soft fpu ile ilgili parametreler olması lazım onları bir kurcalayıp denermisiniz?
çalıştığım işlemci stm32f100rb ve FPU yok Hocam.

muhittin_kaplan


muhittin_kaplan

Hımm integer yap sonrasında böl mü yaptık.

muhittin_kaplan

  char dizi[10];  			/* stack de 10 karakterlik yer açar */
    int part1, part2;
    float Pi = 123.45678F;	
    part1 = (int)Pi;
    Pi -= part1;
    part2 = (int)(Pi * 1000);
    sprintf(dizi,"%d.%d", part1, part2);

bu kod işime yarar teşekkür ederim.
ama çokuykum geldi, karnım acıktı yarın tören var. herkese iyi geceler

Klein

@muhittin
Printf sorununa çözüm buldun mu?

forumda yazan stack düzeltmelerini yaptıktan sonra düzeldi.


muhittin_kaplan

Hayır Olmadı. Geçici Çözüm Kullandım.(Float Değişkeni int yapıp parçab parça yazdım-Gerbay'a Teşekkürler) Bende Yaptım Stack ve SysCall değişimi ama olmadı. Sen Muhtemelen f4 le yapmışsındır. bende her ikiside var 100rb ve 407vg ama ikisinde de olmadı.
Yada Eksik birşeyler yaptım. Yaptığını yazarmısın..

Klein

Hayır F1 ile yaptım.

Startup dosyasındaki
  (void *)&pulStack[STACK_SIZE-1],     /*!< The initial stack pointer         */

satırını aşağıdaki ile değiştirdim.
  (void (*)(void))((unsigned long)pulStack + sizeof(pulStack)),

stack büyüklüğünü biraz artırdım.
startup dosyasında aşağıdaki tanım.
#define STACK_SIZE       0x00000300

ana döngüye girmeden önce (başka bir yerde de çağırabilirsin, ilk sprintf() ifadesini kullanmadan önce)aşağıdaki fonksiyonu çağırdım.

setvbuf( stdout, 0, _IONBF, 0 );



muhittin_kaplan

#54
Ben Stack ı değiştirmiş ama setvbuf ı kullanmamıştım.

mesaj birleştirme:: 17 Kasım 2012, 19:52:08

#include "stm32f10x.h"
#include "stdio.h"

int main(void)
{
	setvbuf( stdout, 0, _IONBF, 0 );
    while(1)
    {
    	float sayi=1.4142135;
    	char deger[10];
    	sprintf(deger,"%f",sayi);
    }
}

denemek için yaptım ama
setvbuf( stdout, 0, _IONBF, 0 );
hata veriyor.

mesaj birleştirme:: 18 Kasım 2012, 18:02:43

Kodları Hide yada Collapse yapmak için
Ctrl+NumPad / yapılması gerekiyor.

Mucit23

Hocalarım,

Keil ST library sini tanıtamadım. Bu kısmı birazda ayrıntılı anlatabilirmisiniz?

muhittin_kaplan

keil IDE yemi hocam yoksa CooCox a ST nin standart kütüphanesini mi ?

Klein

#57
Alıntı Yapdenemek için yaptım ama
setvbuf( stdout, 0, _IONBF, 0 );
hata veriyor.

Link ayarlarına bir bak. 
Library seçimi "Use Base C Library" olmalı.

Printf kullanırken mi? hata veriyor yukarıdaki satıra mı hata veriyor.?

Hata mesajı nedir?

Mucit23

Yok Hocam Coocox a keilin standart kütüphanesini eklemeye çalışıyorum.
Coocox u ilk defa deneyeceğim

Klein

CooCox ile neden Keil kütüphanesi kullanmak istiyorsun?
CooCox'un kendi kütüphanesi ile ST'nin kütüphanesinin bir kısmını karşılaştırdım. Aynı.