Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Cortex ARM => Konuyu başlatan: magnetron - 21 Nisan 2022, 17:02:55

Başlık: gcc sprintf fonksiyonu float sayıyı yazmıyor
Gönderen: magnetron - 21 Nisan 2022, 17:02:55
merhaba forum,

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
uint8_t strgoing[50]={}

    sprintf(strgoing,"%f",5.000);  bu sayıyı strgoing içine yazmıyor sadece f harfini basıyor

    sprintf(strgoing,"%d",5000);  bu sayıyı 5000 olarak yazıyor görüyorum


kaçırdığım bişey mi var bir türlü yazdıramadım

teşekkür
Başlık: Ynt: gcc sprintf fonksiyonu float sayıyı yazmıyor
Gönderen: serkan - 21 Nisan 2022, 17:09:51
"%.3f"
Başlık: Ynt: gcc sprintf fonksiyonu float sayıyı yazmıyor
Gönderen: magnetron - 21 Nisan 2022, 17:27:41
teşekkür onu da denedim @serkan hocam en basit halini göreyim diye %f yazdım

büyük F harfi de denedim %5.3f de denedim olmadı
Başlık: Ynt: gcc sprintf fonksiyonu float sayıyı yazmıyor
Gönderen: M_B - 21 Nisan 2022, 17:39:19
Hocam kullandığınız IDE ile ilgili olmasın.IDE nizin ayarlarını bi kontrol edin.
Başlık: Ynt: gcc sprintf fonksiyonu float sayıyı yazmıyor
Gönderen: mehmet - 21 Nisan 2022, 17:53:06
https://muhittinkaplan.com/2013/01/18/stm32-usart-ve-sprintf-printf/
Başlık: Ynt: gcc sprintf fonksiyonu float sayıyı yazmıyor
Gönderen: Tagli - 21 Nisan 2022, 18:07:44
Aklınızda olsun, sprintf()'i float sayılar ile multithread bir uygulamada kullanırsanız sıkıntı çıkabilir. Mesela FreeRTOS'ta iki thread aynı anda bu fonksiyona girerse.

Bunun sebebi bu fonksiyonun float ile işlem yaparken arka planda malloc() kullanıyor oluşu. Aslında bu tek başına bir sorun değil. Ancak malloc'a erişimin thread safe olması gerekiyor ve anladığım kadarıyla ST'nin hazır kütüphanelerinde ve örnek FreeRTOS kodlarında, gerekli bazı önlemler atlanmış.

Konu ile ilgili ST forumlarındaki bir tartışma (https://community.st.com/s/question/0D50X0000BB1eL7SQJ/bug-cubemx-freertos-projects-corrupt-memory) ve bu olayı çözmeyi kafaya koymuş bir adamın çalışmaları (https://nadler.com/embedded/newlibAndFreeRTOS.html).

Sorunun devam edip etmediğinden emin değilim.
Başlık: Ynt: gcc sprintf fonksiyonu float sayıyı yazmıyor
Gönderen: magnetron - 21 Nisan 2022, 20:36:52
Alıntı yapılan: M_B - 21 Nisan 2022, 17:39:19Hocam kullandığınız IDE ile ilgili olmasın.IDE nizin ayarlarını bi kontrol edin.
hocam hangi IDE ayarlarına bakmam gerekir
teşekkür
Başlık: Ynt: gcc sprintf fonksiyonu float sayıyı yazmıyor
Gönderen: M_B - 21 Nisan 2022, 21:03:28
Hocam https://community.st.com/s/question/0D50X00009XkYaySAF/how-to-print-float-value-with-printf-in-truestudio-

Linkteki ayarlardan bahsetmiştim.
Başlık: Ynt: gcc sprintf fonksiyonu float sayıyı yazmıyor
Gönderen: kantirici - 21 Nisan 2022, 21:42:24
Merhaba,
Standart giriş çıkış fonksiyonları oldukça maliyetli olabiliyorlar. Gömülü sistemlerde bunlar için oldukça hafif, dinamik bellek kullanmayan alterntifler var, onları kullanmak uygun. Örneğin

http://elm-chan.org/fsw/strf/xprintf.html
Başlık: Ynt: gcc sprintf fonksiyonu float sayıyı yazmıyor
Gönderen: Tagli - 21 Nisan 2022, 22:03:10
Bu arada forum linkini yanlış vermişim, şimdi düzelttim.
Başlık: Ynt: gcc sprintf fonksiyonu float sayıyı yazmıyor
Gönderen: magnetron - 22 Nisan 2022, 18:33:29
Alıntı yapılan: M_B - 21 Nisan 2022, 21:03:28Hocam https://community.st.com/s/question/0D50X00009XkYaySAF/how-to-print-float-value-with-printf-in-truestudio-

Linkteki ayarlardan bahsetmiştim.

herkese teşekkür @M_B hocamın dediği gibi small printf seçince düzeldi