Picproje Elektronik Sitesi

DERLEYİCİLER => Diğer Derleyiciler => KEIL => Konuyu başlatan: z - 13 Haziran 2014, 04:19:55

Başlık: Keil utanci - Coocox
Gönderen: z - 13 Haziran 2014, 04:19:55
10 kere istedim 10 kere verdiniz. Utaniyorum artik ama Keili bir daha kirmam lazim kurek varmi?

--------

@Muhittinkaplan' sen coocox kullaniyordun.

Keil son projede bana killik yapti yada ben bazi seyleri beceremedim.

Cocox kurarsam anladigim kadariyla Keil'deki 32K sinirim olmayacak.

Bazi sorularim var.

1) ST-Link, J-Link kullanabilecekmiyim?

2) Keil'deki gibi debug yapabilecekmiyim? Breakpoint koyup register iceriklerini vs izleyebilecekmiyim? Ram yada registerler icerikleriyle oynayabilecekmiyim?





Başlık: Ynt: Keil utanci - Coocox
Gönderen: yamak - 13 Haziran 2014, 07:52:29
Hocam neden IAR kullanmıyosunuz?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: AsHeS - 13 Haziran 2014, 08:08:51
Alıntı yapılan: z - 13 Haziran 2014, 04:19:55
Cocox kurarsam anladigim kadariyla Keil'deki 32K sinirim olmayacak.

Bazi sorularim var.

1) ST-Link, J-Link kullanabilecekmiyim?

2) Keil'deki gibi debug yapabilecekmiyim? Breakpoint koyup register iceriklerini vs izleyebilecekmiyim? Ram yada registerler icerikleriyle oynayabilecekmiyim?

Muhittin abiden önce ben cevap vereyim kendisi genişletir cevabı zaten.
Kod boyutu sınırı diye bir zorunluluğunuz olmayacak.
1-)Discovery kitinin üstünde ki ST-Link ise evet sıkıntısız kullanılıyor. J-Linki ise ben sıkıntısız kullanıyorum bu konuda sıkıntı çekmezsiniz.
2-)Debug konusu Keil'de ne ise CooCox'ta da aynı, RAM ve Registerları rahatça monitörleyebilirsiniz. Registerları debug da değiştirdim ama RAM değişkenlerini değiştirmeyi hiç denemedim.Breakpoint zaten debugın şanındandır onda da bir sıkıntı yok doldurun her yeri.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: learner - 13 Haziran 2014, 09:17:32
@AsHeS hocam ben j-link ile program yükleyip debug edemedim. Bir ayarı felan var mı?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: AsHeS - 13 Haziran 2014, 09:26:07
Alıntı yapılan: gerbay - 13 Haziran 2014, 09:16:02
ben şahsen em::blocks u da çok beğendim, bir kullanın isterseniz.. bence CooCoox dan çok çok daha iyi..
http://www.emblocks.org/web/ (http://www.emblocks.org/web/)


@gerbay hocam compiler aynı(STM32 için) ama ben Text Editor'ünü hiç sevemedim tercih meselesi tabii ki.

Alıntı yapılan: learner - 13 Haziran 2014, 09:17:32
@AsHeS hocam ben j-link ile program yükleyip debug edemedim. Bir ayarı felan var mı?
J-Link için exe ayarlamaları yapmanız gerekiyor. CooCox direkt süremiyor J-Link cihazını yanlış hatırlamıyorsam 3 adet J-Link klasöründe ki dosya pathi göstermek gerekiyor J-Link için ve ayrıca debuggerı da J-Link olarak ayarlamak gerek.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: z - 13 Haziran 2014, 10:15:25
ASM kodlarimi coocox yada embloks'a tasirken sikinti cekecekmiyim?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: f_machine - 13 Haziran 2014, 10:19:29
Alıntı yapılan: gerbay - 13 Haziran 2014, 09:16:02
ben şahsen em::blocks u da çok beğendim, bir kullanın isterseniz.. bence CooCoox dan çok çok daha iyi..
http://www.emblocks.org/web/ (http://www.emblocks.org/web/)

gerbay hocam merhaba ,
bu em::blocks u kurduktan sonra, arm compile için bunun altına  arm-gcc mi kurmamız gerekiyor? nasıl ücretsiz arm-compile yapabiliriz?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: subram - 13 Haziran 2014, 10:27:07
@f_machine  aynen hocam arm-gcc yi indirip programa göstermeniz gerekiyor.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: yamak - 13 Haziran 2014, 10:52:59
Alıntı yapılan: yamak - 13 Haziran 2014, 07:52:29
Hocam neden IAR kullanmıyosunuz?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: speak48 - 13 Haziran 2014, 10:55:07
iar a  ayar olmak  :)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: AsHeS - 13 Haziran 2014, 11:01:17
Alıntı yapılan: z - 13 Haziran 2014, 10:15:25
ASM kodlarimi coocox yada embloks'a tasirken sikinti cekecekmiyim?
GCC  direkt assembler olarak çalışır mı bilmiyorum ama inline asm 'si problemli değil.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: z - 13 Haziran 2014, 11:06:30
Bana sorduysan,

IAR da ücretli değilmi? 
Başlık: Ynt: Keil utanci - Coocox
Gönderen: AsHeS - 13 Haziran 2014, 11:09:03
Program kırmamak için Open-Source'a yönelen bir insana IAR gibi bir program önermek mantıklı mıdır ?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: z - 13 Haziran 2014, 11:10:06
Alıntı yapılan: gerbay - 13 Haziran 2014, 09:16:02
ben şahsen em::blocks u da çok beğendim, bir kullanın isterseniz.. bence CooCoox dan çok çok daha iyi..
http://www.emblocks.org/web/ (http://www.emblocks.org/web/)

Hocam iyi derken açarmısın? Sonuçta ben C kısmıyla kütüphanelerle falan ilgilenmiyorum. Bu açıdan bakarsak hala iyi dermisin?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: M_B - 13 Haziran 2014, 11:40:31
@z Hocam;
Buyrun
http://www.dosya.tc/server31/pqZ5ab/Winamp.rar.html (http://www.dosya.tc/server31/pqZ5ab/Winamp.rar.html)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: z - 13 Haziran 2014, 12:01:04
Hocam dosya sorunlu: İçinde "Artemis" var.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: M_B - 13 Haziran 2014, 12:09:25
Hocam tekrar baktım ıcınde
Keygen.exe
ve
Not.txt dosyası mevcut.
Virus mu var demek istediniz.

Dosya Winamp.rar
Başlık: Ynt: Keil utanci - Coocox
Gönderen: z - 13 Haziran 2014, 12:15:02
Evet Artemis virüsü var.

mesaj birleştirme:: 13 Haziran 2014, 10:17:14

Coocox u indirdim ama tüm kurulumu yapan dosya çıkmadı. Bu kurulumun internete girebilir makinede yapılması gerekiyorki diğer kurulumlar yapılabilsin.

Her zamanki gibi ben mi beceremedim yoksa lokal makinelere kurulum için ayrı kurulum dosyası mı var?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: MC_Skywalker - 13 Haziran 2014, 12:22:16
@z hocam;
http://www.coocox.org/CooCox_CoIDE.htm# (http://www.coocox.org/CooCox_CoIDE.htm#) sayfanın en altında 
Alıntı YapDownload the latest CoIDE directly
linki var. ona tıklayıp açılan popup ekranda e-mail adresinizi verince offline kurulum dosyası indiriliyor.

[IMG]http://i.imgur.com/EIsTKsa.jpg[/img] (http://imgur.com/EIsTKsa)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: z - 13 Haziran 2014, 13:15:20
Keil'de limitli olan nedir?

Derleyici, linker ?

Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 13 Haziran 2014, 13:17:31
Hocam Aramıza Hoşgeldin. Ashes çoğunluğu cevaplamış.

Tamamiyle BEDAVA
GCC ARM derleyicisini Kullanıyor.
Kod Sınırlama yok,
Ide,Eclipse tabanlı
STLINK kullanımında Problem Hiç yaşamadım.
gerbay Hocam EM::BLOCKS u önermiş (Kurdum Birkaç Denem yaptım), Derleyici Aynı, IDE farklı (CoIDE ye alıştığımdan Onu Kullanmaya devam Ediyorum, Bencede EM:BLOCKS ide daha başarılı
Destek KEIL kadar değil, ama er geç Cevap Alıyorsunuz.

Şu Ana Kadar Sadece C++ Problem Çözmem uzun Sürdü (Genelde Problem Benden Kaynaklı)
Kurulumla Alakalı online ve ofline mevcut, Bir arayüzle Tüm bileşeleri sizin yerinize indirebildiği gibi, sizde teker indiriyorsunuz.

Başlık: Ynt: Keil utanci - Coocox
Gönderen: yamak - 13 Haziran 2014, 13:36:28
Alıntı yapılan: z - 13 Haziran 2014, 11:06:30
Bana sorduysan,

IAR da ücretli değilmi? 
Hocam kürekli kullanın
Başlık: Ynt: Keil utanci - Coocox
Gönderen: z - 13 Haziran 2014, 13:42:11
EM:BLOCKS Daha başarılı derken neyi daha güzel?

Biraz önce Coocox u kurmayı başardım. Bir kaç komuttan oluşlan deneme programını da derledi. Ancak çipe yükleyemedim elf içinde sector bilgisinin yanlış olduğu mesajını aldım. Fakat  ST-Link tanımlayıp Çipi de silebildim.

İlk eleştirim Keil'e kıyasla yavaş geldi.

Çok basit bir asm örneği varmı?

Keildeki gib startup.s dosyamız Coocox'da da oluyormu?

Acil bir asm örnek bulmam lazım.

Keil'de kine benzer Sctatter dosyası Coocoxda da varmı?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 13 Haziran 2014, 13:42:43
hocam aynı şey, Problem Zaten ücretli olup Kırmak zorunda Kalmamız.
Ha Keil ha IAR
Başlık: Ynt: Keil utanci - Coocox
Gönderen: MC_Skywalker - 13 Haziran 2014, 13:42:57
Keilde herşey sınırlı

Alıntı Yap

C Compiler:         Armcc.Exe       V5.04.0.49 [Evaluation]
Assembler:         Armasm.Exe       V5.04.0.49 [Evaluation]
Linker/Locator:   ArmLink.Exe       V5.04.0.49 [Evaluation]
Librarian:           ArmAr.Exe       V5.04.0.49 [Evaluation]
Hex Converter:  FromElf.Exe       V5.04.0.49 [Evaluation]
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 13 Haziran 2014, 14:01:42
Alıntı YapEM:BLOCKS Daha başarılı derken neyi daha güzel?

Arayüzün kullanımı ve görüntüsü açısından yazmıştım, arkada neler dönüyor Hiç İlgilenmedim. Muhtemelen Gerbay Hocam Bu Konuda Bizi Bilgilendirir.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: fatih6761 - 13 Haziran 2014, 14:09:02
@z hocam CooCox startup dosyasını assembler kullanmıyor. startup????.c olarak var ama keildeki asm kodun aynısı C şeklinde. Herhalde ilk reset vectoru derleyici hallediyor. Bir de şu olayı unutmayın çok sıkıntı çekersiniz:
Her projede otomatik oluşturulan startup???.c dosyasında main() fonksiyonu çağrılıyor ama öncesinde SystemInit() çağrılmıyor.
Yapmanız gereken yalnızca bu startup dosyasına main()'in çağrıldığı satırdan bir önceki satıra SystemInit(); şeklinde bir çağrı eklemek.
Yoksa günlerde uğraşabilirsiniz bu çip neden 16mhz de takılı kalıyor diye :)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 13 Haziran 2014, 14:17:44
Bak Aklıma Geldi, EMBlocks la

IDE yi kullanarak farklı derleyici seçebiliyorsun, PIC32,PIC30, PIC18, ARM MDK, ARM GCC, AVR GCC

mesaj birleştirme:: 13 Haziran 2014, 14:28:41

Hocam ASM, GCC ARM için örnek linkte mevcut.
http://www.ethernut.de/en/documents/arm-inline-asm.html (http://www.ethernut.de/en/documents/arm-inline-asm.html)

mesaj birleştirme:: 13 Haziran 2014, 14:30:08

Alıntı yapılan: fatih6761 - 13 Haziran 2014, 14:09:02
@z hocam CooCox startup dosyasını assembler kullanmıyor. startup????.c olarak var ama keildeki asm kodun aynısı C şeklinde. Herhalde ilk reset vectoru derleyici hallediyor. Bir de şu olayı unutmayın çok sıkıntı çekersiniz:
Her projede otomatik oluşturulan startup???.c dosyasında main() fonksiyonu çağrılıyor ama öncesinde SystemInit() çağrılmıyor.
Yapmanız gereken yalnızca bu startup dosyasına main()'in çağrıldığı satırdan bir önceki satıra SystemInit(); şeklinde bir çağrı eklemek.
Yoksa günlerde uğraşabilirsiniz bu çip neden 16mhz de takılı kalıyor diye :)
Ayrıca SystemInıt i kendiniz Yazmayacaksanız Değerleri Kontrol Ediniz.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: camby - 13 Haziran 2014, 14:47:34
Ben de coocox'u deneyim diyorum, Keil kullanıcısıyım.

GCC ARM nasıl derleyici ?

Keil'ın kendi derleyicisinin optimizasyonu vs bir avantajdır diyebilir miyiz ?

Aslında karşılıklı denemem lazım örnek kodlarda, yine bir sorayım öncesinde...
@muhittin hocam, hatırlarsan siz ilk geçtiğinizde karşılaştırmış az biraz.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: Gökhan BEKEN - 13 Haziran 2014, 14:49:43
Alıntı yapılan: muhittin_kaplan - 13 Haziran 2014, 14:17:44
Bak Aklıma Geldi, EMBlocks la
IDE yi kullanarak farklı derleyici seçebiliyorsun, PIC32,PIC30, PIC18, ARM MDK, ARM GCC, AVR GCC
Hocam, PIC için hangi derleyiciyi kullanıyor? Baktım ama göremedim.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 13 Haziran 2014, 14:52:03
Hocam derleyici Karşılaştırmaya Kendimi yeterli görmüyorum. Keil, Arm ın derleyicisi olduğundan daha iyidir diye düşünüyorum, Ama Görecelidir tabi. Fiyat/performans olarak ele alırsak GCC.


mesaj birleştirme:: 13 Haziran 2014, 14:55:01

Alıntı yapılan: meftun - 13 Haziran 2014, 14:49:43
Hocam, PIC için hangi derleyiciyi kullanıyor? Baktım ama göremedim.
Yanlış Hatırlıyor Olabilirim,
sistemde yüklü derleyicileri Buluyor (yada işaret ediyorsun) ve kullanıyorsun. Multiple Compiler Support diye vermişler.
hatta ilk kez duyduğum BARE METAL ı orada görmüştüm.

http://www.emblocks.org/web/features (http://www.emblocks.org/web/features)
•Auto detection of installed toolchains
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 13 Haziran 2014, 15:07:15
Benim Sarı Işık Yanıp Sönmeye Başladı

Alıntı Yapderleme yaparken her dosyayı ayrı thread de derleyip sonuçları getiriyor, bu anlamda çok hızlı derleme yapıyor. hele işlemciniz multicore ise derleme hızı canavar gibi..

u8glib i 1:30 derliyor Coide.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 13 Haziran 2014, 15:12:48
https://www.picproje.org/index.php/topic,53745.msg408550.html#msg408550 (https://www.picproje.org/index.php/topic,53745.msg408550.html#msg408550)
şurayıda ben deneyeyim akşam,
Başlık: Ynt: Keil utanci - Coocox
Gönderen: fatih6761 - 13 Haziran 2014, 15:13:07
@muhittin_kaplan hocam bahsettiğim sorunun ayarı nerededir? Rica etsem tarif edebilir misiniz? Ben bulamamıştım da... (CoIDE'yi  en az 2 ay önce açtım tam hatırlamıyor da olabilirim..)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 13 Haziran 2014, 15:20:27
hocam hiç ilgilenmedim systemnit i neden çağırmıyor diye, ben devamlı main de çağırıyorum (zaten ilk başta HSI başlıyor.)
ama unutulmaması gereken konu Coide de eğer systeminit i siz yazmıyorsanız (systeminit adından farklı olarak) default olarak XTAL u 25Mhz kabul ediyor. Bunuda system_stm32f4xx.c dosyasında düzeltmek gerekiyor (systeminit fonksiyonunun olduğu dosya).
örnek  dosya  https://my.st.com/public/STe2ecommunities/mcu/Lists/STM32Discovery/Attachments/2837/system_stm32f4xx.c (https://my.st.com/public/STe2ecommunities/mcu/Lists/STM32Discovery/Attachments/2837/system_stm32f4xx.c)
Daha sonra Compiler Parametrelerinden HSE_VALUE=8000000 gibi (xtal freq) atamak gerekiyor.

Bunu HAzırlamak içinse stm32f4_clock_configuration.xls adındaki dosyayla yapabiliyorsunuz.
sanki bu dosyaydı http://code.google.com/p/armvn-repo/downloads/detail?name=stm32f4_clockconfig.zip&can=2&q= (http://code.google.com/p/armvn-repo/downloads/detail?name=stm32f4_clockconfig.zip&can=2&q=)
(iş yerindeyim herşey kısıtlı)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 13 Haziran 2014, 15:24:19
Alıntı yapılan: gerbay - 13 Haziran 2014, 15:15:33
hocam şimdi deneyeyim ben dedim ama biz de sansüre tabiyiz.. işyerinde websense var, her yer bloklu..   ftp bile yok..

senin dosyaları indiremedim..

Aynı Dertten Muzdaribiz Hocam. Sonra Bu Ülke Neden ilerlemiyor. Sallandıracaksın Birkaç OBIM ciyi bak birdaha yapıyorlarmı ?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: pisayisi - 13 Haziran 2014, 15:24:24
Hocam ilaç yukarıda yayınlandı, keili güle güle kullanın. Benim merak ettiğim keili kırdık 10bin tane cihaza ürettiğimiz hex kodu kodumuza kimsenin ulaşamayacağı şekilde yükledik. Ürünleri piyasada sattık paraları kazandık, birşekilde bunu sen keil de derledin yükledin nerde lisansın diye sorabilcek biri çıkar mı karşımıza :D
Başlık: Ynt: Keil utanci - Coocox
Gönderen: sseedat - 13 Haziran 2014, 15:37:43
ben aynı kodu keil ve cooccox da derleyip çalıştırdım keil ile derlenen kod yaklaşık 1 sn sonra devreye girerken coocox ile derlenen kod 2-3 sn arasında devreye giryor.bu neyden kaynaklanıyor olabilir.



Başlık: Ynt: Keil utanci - Coocox
Gönderen: sseedat - 13 Haziran 2014, 15:50:21
Alıntı yapılan: gerbay - 13 Haziran 2014, 15:46:09
eclipse in yavaşlığından..  o da java nın virtual machine olmasından ve eclipse in java ile yazılmış olmasından kaynaklanıyor..

anladım hocam teşekkürler.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: Müh. müh. - 13 Haziran 2014, 16:01:14
cooccox bir kaç ay önce indirmiştim ama pek hoşuma gitmedi..

Keil varken, böyle şeylere gerek yok diye düşünüyorum. Ayrıca keil i küreklemek çok mu zor yahu?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 13 Haziran 2014, 16:03:05
hayatımızdaki herşey bir seçim değil mi ?

mesaj birleştirme:: 13 Haziran 2014, 16:03:52

Alıntı yapılan: Müh. müh. - 13 Haziran 2014, 16:01:14
cooccox bir kaç ay önce indirmiştim ama pek hoşuma gitmedi..

Keil varken, böyle şeylere gerek yok diye düşünüyorum. Ayrıca keil i küreklemek çok mu zor yahu?
Eğer bir firmada yada dövlet te çalışıyorsanız küreklememelisiniz.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: Müh. müh. - 13 Haziran 2014, 16:07:22
Alıntı yapılan: muhittin_kaplan - 13 Haziran 2014, 16:03:05
Eğer bir firmada yada dövlet te çalışıyorsanız küreklememelisiniz.

O zaman firma alır, bizde kullanırız :)

Böyle bir durum söz konusu olmadığına göre, iyiden vazgeçmeninde manası yok
Başlık: Ynt: Keil utanci - Coocox
Gönderen: M_B - 13 Haziran 2014, 16:31:02
Bende meraktan emblocks indirip kurdum sitesinde bulunan örneği denedim derleme ve gorunusu guzel
Yalnız kite nasıl direkmen programı atacam bulamadım. Sag ust kosede session Star/Stop  tıklayınca programı atıyor ordan da  direkt debuga geciyor.
Gecmesini  nerden kapatıyoruz veya direk nasıl yukluyoruz.

Başlık: Ynt: Keil utanci - Coocox
Gönderen: camby - 13 Haziran 2014, 16:35:04
Ben lisanslı keil kullanıyordum, iş yeri değişti,

Şimdi yine keil söz konusu , fakat lisanslı keil almak istemiyorum tekrardan. ( aksi durum söz konusunu değil , kürekleyelim ne olur diyen arkadaşlar, ansızın kapınız çalar, dikkat.)

'GCC ARM' kullanan bir program ile cocoox yada em::block , aynı C kodundan aynı makina kodu üretilir diyebilir miyiz ? 'GCC ARM' toolcain kullandıktan sonra hangi IDE'yi kullandığının önemi var mıdır ?

Başlık: Ynt: Keil utanci - Coocox
Gönderen: strom - 13 Haziran 2014, 16:51:20
Emblock'ta stm32f4 discoverynin st-linkini kullanarak debug edemeyen bir tek ben miyim? Debug'a bastigimda hata verip kapaniyor. Ayarlardan st-link secili.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: strom - 13 Haziran 2014, 17:04:01
Hocam verdiğiniz linkten driver'ı ztn indirmiştim. Keil üzerinden de sorunsuz kullanıyorum.
Em:Blocks Debug/Interface içerisinde şöyle bir ekran var;
(http://i.hizliresim.com/A2d5d0.png) (http://hizliresim.com/A2d5d0)
Daha sonra "Start Debug" dediğimde bir tane DOS uygulaması çalışıp, hemen kapanıyor ve sonra şu hatayı veriyor;
(http://i.hizliresim.com/0Vomo8.png) (http://hizliresim.com/0Vomo8)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: z - 13 Haziran 2014, 17:13:03
EmBlocks u kurdum.

Sihirbazla basit bir deneme projesi oluşturdum. Keilden nerede ise hiç farkı yok. Derledim. Kodları adım adım çalıştırarak debug da yaptım.

Çok güzel, eski asm dosyalarımda değişiklik yapmam gerekecek bu da sorun değil.

Hızı da çok çok iyi.

Yalnız;

1) Debug menüde registerleri, ram ve rom alanını gözleyebileceğim pencereleri bulamadım.

2) Proje dosyalarından startup haricindekilerin tamamını projeden uzaklaştırdım.  Startup dosyasında SystemInit ve main fonskiyonu çağıran satırları devre dışı bırakıp derlediğimde sürekli olarak main fonksiyonu bulunamadı hatası alıyorum.

Kodların içinde main ile ilgili tek bir satır yok. Bu hatadan nasıl kurtulurum?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 13 Haziran 2014, 17:44:41
coide 90san
emblock 11san.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: strom - 13 Haziran 2014, 18:07:10
Bu arada sorunumu çözdüm. ST-LINK'in USB2 portuna bağlamak gerekiyormuş. USB3'te çalışmadı. USB3'te çalıştırmak için bazı driver güncellemeleri filan yapılması gerekiyormuş falan ama uğraşamam onla. Artık bütün portları USB3 olan bir bilgisayar aldığımda bakarım icabına
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 13 Haziran 2014, 18:18:05
gerbay hocam Projeyi (yukardaki linki verdiğim yada https://www.picproje.org/index.php/topic,53745.msg409092.html#msg409092 (https://www.picproje.org/index.php/topic,53745.msg409092.html#msg409092)) emblok a import edip derlediğimde
No such file or directory
hatası alıyorum
Başlık: Ynt: Keil utanci - Coocox
Gönderen: z - 13 Haziran 2014, 18:18:06
Startup.s içinde start fonksiyonu çağrılıyor. Bunu iptal edince main satırı aramaktan vazgeçti.

Emblocks çok hoşuma gitti. Keilden bile hızlı sanki.

Şimdi bu open source mu? Eğer öyle ise debug aşamasında register isimleri r0, r1, r2 şeklinde küçük harflerle ve kırmızı renkte gösteriliyor. Bunları büyük harf yapıp renklerini değiştirmek benim elimde mi?

Bu değişikliği kim yapar?  (Gelince kebap ısmarlarım.)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 13 Haziran 2014, 18:26:53
hocam
LTO yu keşfetmiştim CoIde de, Em Block ta bulamadım. Kodu Optimize ederken gereksiz yerleri derleme gibi birşeydi.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: z - 13 Haziran 2014, 18:44:46
Asm "directive"lerin listesini, nasıl kullanıldığını ve section tanımlamanın nasıl yapıldığını anlatan emblocks'un dokümanlarını arıyorum.

Başlık: Ynt: Keil utanci - Coocox
Gönderen: Tagli - 13 Haziran 2014, 19:00:20
Bu Em::Blocks'u Linux için de çıkarsalar güzel olurmuş. Aslında temel aldıkları Code::Blocks zaten Linux'ta çalışıyor. İsteseler çok zorlanmazlar diye tahmin ediyorum.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: z - 13 Haziran 2014, 19:31:42
Dokümanlar helpin içinde varmış zaten.

F1 ile yardım olsaymış iyi olurmuş.

Keilde yapamadığım için keilden coocox'a yönelmeme neden olan sorunlar emblock da sorunsuz halloldu.

Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 13 Haziran 2014, 19:40:37
Unutulmaz Regal Reklamı :) (http://www.youtube.com/watch?v=AEbKTqved3Q#)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: ErsinErce - 13 Haziran 2014, 19:44:22
Alıntı yapılan: Tagli - 13 Haziran 2014, 19:00:20
Bu Em::Blocks'u Linux için de çıkarsalar güzel olurmuş. Aslında temel aldıkları Code::Blocks zaten Linux'ta çalışıyor. İsteseler çok zorlanmazlar diye tahmin ediyorum.

http://www.emblocks.org/web/licensing-main (http://www.emblocks.org/web/licensing-main) adresinde kodları mevcut linux içinde derlenebilir sanırım
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 13 Haziran 2014, 19:45:32
Yok Bulamıyorum, Bendeki versiyon 1.4 dü 2.0 yükselttim ama COMPILER SELECT penceresini bulamıyorum.
Bare Metal GCC değilde Generic olanı tanımlamak istiyorum.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: z - 13 Haziran 2014, 19:57:12
Gözümü korkutan tek şey proje klasörlerinde other içinde 3 dosya var. Birisinin içeriği aşağıda.

Bunu nasıl anlayacağım da gerektiğinde kendime göre uyarlayacağım?


/* ---------------------------------------------------------------------------- */
/*                  Em::Blocks embedded development Support                     */
/* ---------------------------------------------------------------------------- */
/* Copyright (c) 2014, EmBlocks                                                 */
/*                                                                              */
/* All rights reserved.                                                         */
/*                                                                              */
/* Redistribution and use in source and binary forms, with or without           */
/* modification, are permitted provided that the following condition is met:    */
/*                                                                              */
/* - Redistributions of source code must retain the above copyright notice,     */
/* this list of conditions and the disclaimer below.                            */
/*                                                                              */
/* EmBlocks's name may not be used to endorse or promote products derived from  */
/* this software without specific prior written permission.                     */
/*                                                                              */
/* DISCLAIMER:  THIS SOFTWARE IS PROVIDED BY EBLOCKS "AS IS" AND ANY EXPRESS OR */
/* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE   */
/* DISCLAIMED. IN NO EVENT SHALL EMBLOCKS BE LIABLE FOR ANY DIRECT, INDIRECT,   */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,  */
/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF    */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING         */
/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */
/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                           */
/* ---------------------------------------------------------------------------- */

/*------------------------------------------------------------------------------
*      Linker script for running in internal FLASH on the STM32F103C8
*----------------------------------------------------------------------------*/

OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
SEARCH_DIR(.)

/* Memory Spaces Definitions */
MEMORY
{
    ROM  (rx) : ORIGIN = 0x08000000, LENGTH = 64K
    RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 20K
}

/* Linker script to place sections and symbol values. Should be used together
* with other linker script that defines memory regions FLASH and RAM.
* It references following symbols, which must be defined in code:
*   Reset_Handler : Entry of reset handler
*
* It defines following symbols, which code can use without definition:
*   __exidx_start
*   __exidx_end
*   __etext
*   __data_start__
*   __preinit_array_start
*   __preinit_array_end
*   __init_array_start
*   __init_array_end
*   __fini_array_start
*   __fini_array_end
*   __data_end__
*   __bss_start__
*   __bss_end__
*   __end__
*   end
*   __HeapLimit
*   __StackLimit
*   __StackTop
*   __stack
*/


SECTIONS
{
.text :
{
KEEP(*(.isr_vector))
*(.text*)

KEEP(*(.init))
KEEP(*(.fini))

/* .ctors */
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
*(SORT(.ctors.*))
*(.ctors)

/* .dtors */
*crtbegin.o(.dtors)
*crtbegin?.o(.dtors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
*(SORT(.dtors.*))
*(.dtors)

*(.rodata*)

KEEP(*(.eh_frame*))
} > ROM

.ARM.extab :
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} > ROM

__exidx_start = .;
.ARM.exidx :
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
} > ROM
__exidx_end = .;

__etext = .;

.data : AT (__etext)
{
__data_start__ = .;
*(vtable)
*(.data*)

. = ALIGN(4);
/* preinit data */
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP(*(.preinit_array))
PROVIDE_HIDDEN (__preinit_array_end = .);

. = ALIGN(4);
/* init data */
PROVIDE_HIDDEN (__init_array_start = .);
KEEP(*(SORT(.init_array.*)))
KEEP(*(.init_array))
PROVIDE_HIDDEN (__init_array_end = .);


. = ALIGN(4);
/* finit data */
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP(*(SORT(.fini_array.*)))
KEEP(*(.fini_array))
PROVIDE_HIDDEN (__fini_array_end = .);

. = ALIGN(4);
/* All data end */
__data_end__ = .;

} > RAM

.bss (NOLOAD):
{
__bss_start__ = .;
*(.bss*)
*(COMMON)
__bss_end__ = .;
} > RAM

.heap (NOLOAD):
{
__end__ = .;
end = __end__;
*(.heap*)
__HeapLimit = .;
} > RAM

/* .stack_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign
* values to stack symbols later */
.stack_dummy (NOLOAD):
{
*(.stack)
} > RAM

/* Set stack top to end of RAM, and stack limit move down by
* size of stack_dummy section */
__StackTop = ORIGIN(RAM) + LENGTH(RAM);
__StackLimit = __StackTop - SIZEOF(.stack_dummy);
PROVIDE(__stack = __StackTop);

/* Check if data + heap + stack exceeds RAM limit */
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
}

Başlık: Ynt: Keil utanci - Coocox
Gönderen: AsHeS - 13 Haziran 2014, 20:13:33
Alıntı yapılan: z - 13 Haziran 2014, 19:57:12
Gözümü korkutan tek şey proje klasörlerinde other içinde 3 dosya var. Birisinin içeriği aşağıda.

Bunu nasıl anlayacağım da gerektiğinde kendime göre uyarlayacağım?

Hocam maksadınız dokümansa sizin araştırma konunuz içerisinde Em::Blocks kelimesi geçmese de olur temel noktanız GNU ARM-GCC compiler
https://web.eecs.umich.edu/~prabal/teaching/eecs373-f11/readings/Linker.pdf (https://web.eecs.umich.edu/~prabal/teaching/eecs373-f11/readings/Linker.pdf)
STM'in kütüphanelerinde ki Atollic örnekleri size yardımcı olacaktır. O da GCC kullanmaktadır. Örneklerden birinde linker script editlemeyi göstermektedir direkt kopyalıyorum buraya.

/*
*****************************************************************************
**
**  File        : stm32f10x_flash_xl_bank1.ld
**
**  Abstract    : Linker script for loading program in BANK1 of STM32F103ZG flash
**                memory.
**
**                Set heap size, stack size and stack location according
**                to application requirements.
**
**                Set memory bank area and size if external memory is used.
**
**  Target      : STMicroelectronics STM32
**
**  Environment : Atollic TrueSTUDIO(R)
**
**  Distribution: The file is distributed "as is," without any warranty
**                of any kind.
**
**  (c)Copyright Atollic AB.
**  You may use this file as-is or modify it according to the needs of your
**  project. Distribution of this file (unmodified or modified) is not
**  permitted. Atollic AB permit registered Atollic TrueSTUDIO(R) users the
**  rights to distribute the assembled, compiled & linked contents of this
**  file as part of an application binary file, provided that it is built
**  using the Atollic TrueSTUDIO(R) toolchain.
**
*****************************************************************************
*/

/* Entry Point */
ENTRY(Reset_Handler)

/* Highest address of the user mode stack */
_estack = 0x20018000;    /* end of 96K RAM */

/* Generate a link error if heap and stack don't fit into RAM */
_Min_Heap_Size = 0;      /* required amount of heap  */
_Min_Stack_Size = 0x200; /* required amount of stack */

/* Specify the memory areas */
MEMORY
{
  FLASH (rx)      : ORIGIN = 0x08000000, LENGTH = 512K
  RAM (xrw)       : ORIGIN = 0x20000000, LENGTH = 96K
  MEMORY_B1 (rx)  : ORIGIN = 0x60000000, LENGTH = 0K
}

/* Define output sections */
SECTIONS
{
  /* The startup code goes first into FLASH */
  .isr_vector :
  {
    . = ALIGN(4);
    KEEP(*(.isr_vector)) /* Startup code */
    . = ALIGN(4);
  } >FLASH

  /* The program code and other data goes into FLASH */
  .text :
  {
    . = ALIGN(4);
    *(.text)           /* .text sections (code) */
    *(.text*)          /* .text* sections (code) */
    *(.rodata)         /* .rodata sections (constants, strings, etc.) */
    *(.rodata*)        /* .rodata* sections (constants, strings, etc.) */
    *(.glue_7)         /* glue arm to thumb code */
    *(.glue_7t)        /* glue thumb to arm code */

    KEEP (*(.init))
    KEEP (*(.fini))

    . = ALIGN(4);
    _etext = .;        /* define a global symbols at end of code */
  } >FLASH


   .ARM.extab   : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
    .ARM : {
    __exidx_start = .;
      *(.ARM.exidx*)
      __exidx_end = .;
    } >FLASH

  .ARM.attributes : { *(.ARM.attributes) } > FLASH

  .preinit_array     :
  {
    PROVIDE_HIDDEN (__preinit_array_start = .);
    KEEP (*(.preinit_array*))
    PROVIDE_HIDDEN (__preinit_array_end = .);
  } >FLASH
  .init_array :
  {
    PROVIDE_HIDDEN (__init_array_start = .);
    KEEP (*(SORT(.init_array.*)))
    KEEP (*(.init_array*))
    PROVIDE_HIDDEN (__init_array_end = .);
  } >FLASH
  .fini_array :
  {
    PROVIDE_HIDDEN (__fini_array_start = .);
    KEEP (*(.fini_array*))
    KEEP (*(SORT(.fini_array.*)))
    PROVIDE_HIDDEN (__fini_array_end = .);
  } >FLASH

  /* used by the startup to initialize data */
  _sidata = .;

  /* Initialized data sections goes into RAM, load LMA copy after code */
  .data : AT ( _sidata )
  {
    . = ALIGN(4);
    _sdata = .;        /* create a global symbol at data start */
    *(.data)           /* .data sections */
    *(.data*)          /* .data* sections */

    . = ALIGN(4);
    _edata = .;        /* define a global symbol at data end */
  } >RAM

  /* Uninitialized data section */
  . = ALIGN(4);
  .bss :
  {
    /* This is used by the startup in order to initialize the .bss secion */
    _sbss = .;         /* define a global symbol at bss start */
    __bss_start__ = _sbss;
    *(.bss)
    *(.bss*)
    *(COMMON)

    . = ALIGN(4);
    _ebss = .;         /* define a global symbol at bss end */
    __bss_end__ = _ebss;
  } >RAM

  PROVIDE ( end = _ebss );
  PROVIDE ( _end = _ebss );

  /* User_heap_stack section, used to check that there is enough RAM left */
  ._user_heap_stack :
  {
    . = ALIGN(4);
    . = . + _Min_Heap_Size;
    . = . + _Min_Stack_Size;
    . = ALIGN(4);
  } >RAM

  /* MEMORY_bank1 section, code must be located here explicitly            */
  /* Example: extern int foo(void) __attribute__ ((section (".mb1text"))); */
  .memory_b1_text :
  {
    *(.mb1text)        /* .mb1text sections (code) */
    *(.mb1text*)       /* .mb1text* sections (code)  */
    *(.mb1rodata)      /* read-only data (constants) */
    *(.mb1rodata*)
  } >MEMORY_B1

  /* Remove information from the standard libraries */
  /DISCARD/ :
  {
    libc.a ( * )
    libm.a ( * )
    libgcc.a ( * )
  }
}

Özet:
Linker scriptte ki MEMORY alanına
  ZIOS_RAM_SECTION (rw)  : ORIGIN = 0x20002000, LENGTH = 32
tanımlandıktan sonra
Aşağıya
  .RAMzios : {*(.RAMzios)} > ZIOS_RAM_SECTION
yazın.

Kodda bir dizi yerleştirmek için uint8_t special_array[32] __attribute__((section(".RAMzios")));

Yazdınız mı oldu bitti.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: X-Fi - 13 Haziran 2014, 20:56:49
Em::block u kurdum benimde çok hoşuma gitti keilde olupda bunda olmayan bişey bulamadım henüz. En güzelide açık kaynak kod virtual c++ yazılı olması. Proje dosyasını vermemişler ama kaynak kod verilmiş. Bence diğer free ide lerden ayıran en büyük özelliği kodlarının açık olması ide biyerde çaksa açıp bulunduğu satıra bakabilirsin. Yok yok. Tam öğrenci işi.

Teşekkürler Muhittin hoca. :)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: Elektroemre - 13 Haziran 2014, 21:18:35
Bu EmBlock çok iyi gerçekten. Compile hızı mükemmel (Bare-Metal).

Biraz daha kurcalyalım bakalım...

Ekleme: Bare Metal ve Keil'i Code Size, Hız gibi kriterlere göre karşılaştıran var mı?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 13 Haziran 2014, 22:07:52
kebap mı, nerde ve neden ?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: AsHeS - 13 Haziran 2014, 23:01:27
_||No such file or directory|
Projeyi derlemeye çalıştığımda hangi dosyayı bulamadığını belirtmeksizin böyle bir hata veriyor neden olabilir ?(Em::Block Bare-Metal GCC derlemesi)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 13 Haziran 2014, 23:32:46
hocam built option->linker setting->other option da _ işareti var onu kaldırın.

mesaj birleştirme:: 13 Haziran 2014, 23:33:39

ama ben CoIDE deki LTO yu bulamadım Bundan Dolayı U8Glib i derleyemiyorum
Başlık: Ynt: Keil utanci - Coocox
Gönderen: AsHeS - 13 Haziran 2014, 23:40:39
Alıntı yapılan: muhittin_kaplan - 13 Haziran 2014, 23:32:46
hocam built option->linker setting->other option da _ işareti var onu kaldırın.

mesaj birleştirme:: 13 Haziran 2014, 23:33:39

ama ben CoIDE deki LTO yu bulamadım Bundan Dolayı U8Glib i derleyemiyorum
Abi _ hatasını nasıl buldun çok merak ediyorum anlatır mısın ?

Optimizasyonlar grubuna baktın mı abi ?
built options -> compiler flags -> categories -> optimization

LTO Parametresini elle geçtim aaşğıda ki hatayı verdi:
cc1.exe: error: LTO support has not been enabled in this configuration
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 13 Haziran 2014, 23:46:08
aslında No such derken "bilirizki bir dosya klaör yok" der ve ismini verir. "Hangi dosyayı bulamıyor" derken _ işaretini farkettim. (işaret saklanmış oraya)
BruteForce yaptım sonra, Aradım.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: z - 14 Haziran 2014, 15:00:59
Keil'de yazilmis asm kodlari WmBlocksa tasimak tam bir iskence.

Bunun icin bir konverter yazmaya basladim.

Ornegin;

Keil'de   



     DCB "Merhaba Dunya",0,8


EmBlocksda

   
     .ascii "Merhaba Dunya"
     .byte 0,8


seklinde yazmaktan baska care bulamadim. Hazirda konverter varsa bosu bosuna bunun gibi direktif donusumleri yapan programi yazmakla zaman kaybetmeyim.


Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 14 Haziran 2014, 16:06:54
gerbay hocam GCC Generic i diye bir compiler ı gösterebiliyoruz, bu Genereik olan GCC, arm embedded gcc olmama ihtimali varmı? Çünkü yazılmış programda "Bu işlemciyi tanımıyorum" diyor.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 14 Haziran 2014, 16:39:40
Yeni bir Projede bile ARM MCU seçtiğimde BARE METAL den başka seçim yapamıyorum.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: z - 14 Haziran 2014, 18:24:30
Alıntı yapılan: gerbay - 14 Haziran 2014, 15:15:44
Hocam emblocks değil de GAS demek lazim ona. Hocam emblocks a gosterin realview compiler i. Hic bir degisiklik yapmadan derleyin

Hocam Keil'den vazgecmemin 1. sebebi 32K siniriydi. Sinirlama ASM derleyicide de var dendi.

Ikinci sebebi de karsilastigim bir problemi Keilde asm direktiflerle yapamazken EmBlockdaki GNU derleyicide kolayca yapabildim.

O yuzden Keilin asm derleyicisini linkerini vs kullanmak istemiyorum.

Fakat;

Keilde arayuzu daha cok seviyorum. Debug menuleri de daha guzel.

EmBlocksda kullandigim asm derleyici ve linkeri Keil'e tanitmam mumkunmu?

Arayuz Keil olsun derleyici vs Emblockda kullandigim derleyiciler olsun.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: AsHeS - 14 Haziran 2014, 18:41:10
Alıntı yapılan: z - 14 Haziran 2014, 18:24:30
Hocam Keil'den vazgecmemin 1. sebebi 32K siniriydi. Sinirlama ASM derleyicide de var dendi.

Ikinci sebebi de karsilastigim bir problemi Keilde asm direktiflerle yapamazken EmBlockdaki GNU derleyicide kolayca yapabildim.

O yuzden Keilin asm derleyicisini linkerini vs kullanmak istemiyorum.

Fakat;

Keilde arayuzu daha cok seviyorum. Debug menuleri de daha guzel.

EmBlocksda kullandigim asm derleyici ve linkeri Keil'e tanitmam mumkunmu?

Arayuz Keil olsun derleyici vs Emblockda kullandigim derleyiciler olsun.
gerbay hoca detaylı anlatacaktır ama GCC Keil'e import edilebiliyor.
http://www.keil.com/arm/gnu.asp (http://www.keil.com/arm/gnu.asp)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: z - 14 Haziran 2014, 18:59:08
Super olur. Fakat Keilin buna da 32K limiti getirmesinden korkuyorum.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: z - 15 Haziran 2014, 02:30:57
http://www.coranac.com/files/gba/re-ejected-gasref.pdf (http://www.coranac.com/files/gba/re-ejected-gasref.pdf)

http://www.ic.unicamp.br/~celio/mc404-2013/arm-manuals/GNU-ARM-Assy-Quick-Ref.pdf (http://www.ic.unicamp.br/~celio/mc404-2013/arm-manuals/GNU-ARM-Assy-Quick-Ref.pdf)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: z - 15 Haziran 2014, 05:09:14
Yok yok ben Keil'i birakamaycagim.

Keil'in temiz bir kuregi lazim. Kim yardimci olur?

Butun gunum dosyalari GNU ARM asm ye cevirmekle gecti. Nihayetinde projeyi derledim. Derleme islemleri hizli ama debug islemleri kablumbaga hizinda.

Isyerindeki makinem evdekine kiyasla cok hizli cift cekirdekli vs. Emblocks icin belki Keil'den bile hizli yorumunu yapmistim ama evde aci gercegi gordum.

Ben Keilciymisim.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: Müh. müh. - 15 Haziran 2014, 13:34:51
Alıntı yapılan: Müh. müh. - 13 Haziran 2014, 16:01:14
cooccox bir kaç ay önce indirmiştim ama pek hoşuma gitmedi..

Keil varken, böyle şeylere gerek yok diye düşünüyorum. Ayrıca keil i küreklemek çok mu zor yahu?


Alıntı yapılan: muhittin_kaplan - 13 Haziran 2014, 16:03:05
hayatımızdaki herşey bir seçim değil mi ?

mesaj birleştirme:: 13 Haziran 2014, 16:03:52
Eğer bir firmada yada dövlet te çalışıyorsanız küreklememelisiniz.


Alıntı yapılan: Müh. müh. - 13 Haziran 2014, 16:07:22
O zaman firma alır, bizde kullanırız :)

Böyle bir durum söz konusu olmadığına göre, iyiden vazgeçmeninde manası yok


Alıntı yapılan: gerbay - 13 Haziran 2014, 16:13:03
ülke o kadar zengin mi?

savaş gemisinde hem savaş yönetim sisteminde hem de bir sürü gömülü sistemde GCC ile derlenmiş kod çalışıyor..  Savunma sanayi şirketlerinden daha mı zenginsiniz?


Keil ve Iardan şaşmamak lazım.(bence keil)

Cooccox, emblocks gibi platformların geleceğini pekte parlak görmüyorum.



Firmanız bu tarz yazılımları satın almıyorsa veya firma sizseniz ve gücünüz satın almaya yetmiyorsa,

Sanal makina kurun birtane. İnternet erişimini kapatın. Keil, altium, solid vs gibi yazılımları orada çalıştırın. At tan inip Eşşeğe binmenin manası yok..

Kürekli keil,

Alıntı yapılan: bocek - 15 Haziran 2014, 07:47:50
Şuradan Keil MDK ARM 5.10 (uvision5)'u indirebilirsiniz.

http://www.myir-tech.com/soft.asp?id=1008 (http://www.myir-tech.com/soft.asp?id=1008)

Bu da küreği:
http://s3.dosya.tc/server24/hLiaK1/Keil_ARM_MDK_5.00_Keygen_serial_Crack.zip.html (http://s3.dosya.tc/server24/hLiaK1/Keil_ARM_MDK_5.00_Keygen_serial_Crack.zip.html)

kürek dosyasında, avast virus taramasında win32:malware görünüyor ama ben yükledim yine de. bişey olmadı :)
keil 4 ve 5'i kürekliyor. 2020'ye kadar professional lisans sağlıyor.
bu lisansla emwin projelerini derleyebiliyorsunuz.
yalnız keil5'te, device manager'de mcu listesi boş geliyor nedendir bilmiyorum.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 15 Haziran 2014, 13:55:09
Parali olmak baska birsey yeminlen, muh.muh yokluk gorduk aabiiii
Başlık: Ynt: Keil utanci - Coocox
Gönderen: X-Fi - 15 Haziran 2014, 14:02:02
Iar in eski versiyonlarinda 30 gunluk deneme surumunu kullan dediginizde bilgisayarda bir dosya tutuyordu.

Argede bilgisayarlara deepfreze kurmustuk kapatip actigimizda 30 gun yeniden basliyordu kontrole gelseler deneme surumu kullandigimizi soyleyecektik.

Bu sekilde baya bir kullandik msp430 icin daha sonra 5 versiyon cikti bu hatayi giderdiler artik deepfreze kurtarmiyor online kontrol ediyorlar ogunden beri iar kullanmiyoruz :)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: z - 15 Haziran 2014, 14:05:15
Zengin olunca bende bir soganin cucugunu yiyecem birde keil alacam.

http://redacom.ch/wp-content/uploads/2014/01/KD_ARM-Keil_Commercial_price2014-Q1.pdf (http://redacom.ch/wp-content/uploads/2014/01/KD_ARM-Keil_Commercial_price2014-Q1.pdf)

Olumlu cevap gelecegini sanmiyorum ama C ve kutuphanelerinin olmadigi sadece asm calisma yapilabilecek bir ortam icin fiyat indirimi yaparmisiniz diye bir mail attim.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: AsHeS - 15 Haziran 2014, 14:07:12
Alıntı yapılan: z - 15 Haziran 2014, 14:05:15
Zengin olunca bende bir soganin cucugunu yiyecem birde keil alacam.

http://redacom.ch/wp-content/uploads/2014/01/KD_ARM-Keil_Commercial_price2014-Q1.pdf (http://redacom.ch/wp-content/uploads/2014/01/KD_ARM-Keil_Commercial_price2014-Q1.pdf)

Olumlu cevap gelecegini sanmiyorum ama C ve kutuphanelerinin olmadigi sadece asm calisma yapilabilecek bir ortam icin fiyat indirimi yaparmisiniz diye bir mail attim.
Hocam problem debug yavaşlığı mı yoksa kod taşımaktan mı sıkıldınız ? Aynı kodları CooCox'ta debug ettiniz mi ?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: z - 15 Haziran 2014, 14:28:32
Kodlari donusturen converter yazdim. Size gene ufak tefek isler kaliyor ama oldukca basarili.

Debug islemi anormal otesi yavas ki debug benim icin hayati derecede onemli.

Keil asm derleyicisi sizi bazi hamalliklardan kurtariyor. GNU da bu hamalliklari da bizim yapmamiz gerekiyor.

Pure asm kod yazacaklar icin library yapilandirma dosyasini da yayinlayayim.

Converteri de yayinlayayim.

Kodlarimi Cocooxda hic denemedim.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: MuratUrsavas - 16 Haziran 2014, 15:35:19
Merhaba Arkadaşlar,

Coocox'u çok kullanmadım yorum yapmam doğru olmaz ancak EmBlocks'u sürekli kullanıyorum ve bu konuda sizi çok kısa bilgilendirmek isterim. (Ancak denediğim kadarı ile EmBlocks'un MCU desteği Coocox'dan daha fazladır.)

Bugüne kadar bir çok toolchain kullandım. Bunlara IAR, Keil, Eclipse + GCC ve EmBlocks dahil. En iyi sonucu EmBlocks'dan aldığım için şu an EB kullanıyorum ve size de tavsiye ederim.

Neden seçmiş olduğumu kısaca özetlemem gerekirse;

Bir kere geliştiricisi kullanıcıların isteklerine önem veriyor ve ciddi manada iyileştirmeler yapıyor.

İkincisi bir IDE olarak çok hızlı. MPLABX kullandıktan sonra aynı hatta daha iyi fonksiyonalite nasıl olurda bu kadar hızlı olur diyebilirsiniz. Ayrıca paralel derleme ile derleme hızı da çok yüksek. Ancak paralel derlemese bile derleyici çağrıları ilginç bir şekilde hızlı. Benzer bir çağrı Eclipse'de çok daha fazla zaman alıyor.

Üçüncüsü hiç kimsenin etkisi altında kalmadan elimdeki projeyi mümkün olduğunca iyi olduğunu düşündüğüm tüm derleyiciler de denedim. Sonuçta proje hiç bir derleyici için optimize edilmemişti dolayısı ile adil bir karşılaştırma sayılabilir. Bu karşılaştırma da en iyi ve dengeli sonucu beklemediğim bir şekilde GCC ile almıştım. Çünkü bedava olmasının bir bedelini olmasını bekliyordum ve bir dereceye kadar tolore edecektim. Ancak bu sonuç beni şaşırtmıştı. En iyi olmasını beklediğim derleyici IAR idi. Ancak Hem Keil'ın hem GCC'nin çok uzağında kalmıştı. 3000€'luk bir üründen beklenmeyecek bir performansdı. Keil ile flash boyutunda en iyi skoru elde ettim. GCC'nin çok uzağında değildi ancak yinede öndeydi. Ancak orada da RAM coşmuştu. %25'e varan bir fark vardı. Dolayısı ile en dengeli GCC gözüküyordu. Şaşırtıcı ama evet, ücretsiz bir ürün gerçekten 3000-5000€'luk ürünlerle baş edebiliyor.

Bu bilgiler ışığında EmBlocks'u seçtim ve halen de devam ediyorum. Sizlere de tavsiye ederim. Hatta daha fazla arkadaşımızın bu imkandan yararlanabilmesi için Türkçe bir kılavuz dokümanı bile hazırladım. Web sitemden indirebilirsiniz.

http://www.muratursavas.com/?bol=edit&prj=isildak (http://www.muratursavas.com/?bol=edit&prj=isildak)

(Not: Sanırım web sitem şu anda bir DNS problemi yaşıyor o yüzden bu başlığa dokümanı direkt eklemeyi deneyeceğim.)

Not: EmBlocks ile hiç bir ticari ilişkim yoktur, açık kaynaklı ve yararlı bir ürün olduğu için önce kendi insanımız sonrada herkes faydalanabilsin diye elimden geldiğince desteklemeye çalışıyorum. (Emin olun ne IAR ne de Keil'ın IDE'si bu IDE ile yarışamaz. Ancak derleyicileri durumunuza göre karşılaştırılabilir.)

Merak ettiğiniz şeyler olursa elimden geldiğince cevaplamaya çalışırım.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 16 Haziran 2014, 19:40:35
Murat Hocam Hoşgeldiniz, (Sayfa Açılmıyor)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: mistek - 16 Haziran 2014, 19:52:09
Emblocks'un Ulink2 desteği yok mu?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: interrupter - 16 Haziran 2014, 22:15:46
Ben coocox öğrenmeye çalisiyorum am::blocks u burada duydum kaba saba bi karistirdim.  Sitesindeki wiki kısmındakiler tam benim aradığım türden. Ama biraz kısır kalmis.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: एक होना - 16 Haziran 2014, 22:24:53
EmBlock msp430 ayarları nasıl yapılıyor ?
yeri değil ama mevzu açıldığı için soruyorum.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: strom - 16 Haziran 2014, 23:12:38
GCC kullanırken yaşadığım ilk sorun printf fonksiyonunda oldu. Normalde fputc fonksiyonunu tanımlayarak printf'i modifiye ederek kullanıyorum. Ancak GCC ile deneme yaptığımda fputc fonksiyonuna hiç girmediğini farkettim. Anladığım kadarıyla GCC farklı yapıda printf kullanıyor ve bu printf'in ihtiyaç duyduğu fonksiyon farklı. İnternetten kısa bir araştırmayla putchar fonksyonunu uyguladım. Ancak onada girmedi.

extern "C"
{
int  __io_putchar(int ch)
{

   DrawChar((char) ch);
   return 0;
}
}

extern "C"
{
int fputc(int ch, FILE * f)
{
   
   DrawChar((char) ch);
   return 0;
}
}

bu ikiside işe yaramadı. Acaba linker ayarlarından değiştirmem gereken bir yer mi var
Başlık: Ynt: Keil utanci - Coocox
Gönderen: Müh. müh. - 17 Haziran 2014, 01:06:33
Emblocks un içersindeki libraryler gözüme çarptı.

Ben arm mcu için şu şekil kod yazıyorum,

  DCMI->CR = 0x0;
  DCMI->IER = 0x0;
  DCMI->ICR = 0x1F;



Hazır kütüphaneye göre DCMI ı

DCMI_Init(&DCMI_InitStructure);

Böyle hemencicik init edebiliyormuşuz. Bu kütüphanelerle ilgili hiç sıkıntı yaşayan oldu mu?

Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 17 Haziran 2014, 01:12:08
yok.(eğer kütüphaneden kastın stlib se)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: strom - 17 Haziran 2014, 01:20:40
@Müh. müh
Bahsettiğin şey STM'nin Standart Periphral Library'si. Emblocks'a özgü birşey değil, yalnızca emblock'ta proje oluştururken bu kütüphaneler default olarak proje dosyalarına ekleniyor. Keil 5'ten sonra benzer bir olay keil'e de geldi (otomatik ekleme). Eski sürümlerde manual ekleyebiliyorduk ama
Başlık: Ynt: Keil utanci - Coocox
Gönderen: Müh. müh. - 17 Haziran 2014, 01:43:41
Aynen STM32F4xx_StdPeriph_Driver librarysi imiş. Bu libraryler işleri çok kolaylaştırır ama öte yandan mcu nun içersinde neler oluyor bilmeden kod yazdırır adama..

Şuan bende, keil v4.72 kurulu. Aşağıdaki versiyonda bahsettiğiniz otomatik ekleme özelliği varmıdır?


Alıntı YapŞuradan Keil MDK ARM 5.10 (uvision5)'u indirebilirsiniz.

http://www.myir-tech.com/soft.asp?id=1008 (http://www.myir-tech.com/soft.asp?id=1008)

Bu da küreği:
http://s3.dosya.tc/server24/hLiaK1/Keil_ARM_MDK_5.00_Keygen_serial_Crack.zip.html (http://s3.dosya.tc/server24/hLiaK1/Keil_ARM_MDK_5.00_Keygen_serial_Crack.zip.html)

kürek dosyasında, avast virus taramasında win32:malware görünüyor ama ben yükledim yine de. bişey olmadı :)
keil 4 ve 5'i kürekliyor. 2020'ye kadar professional lisans sağlıyor.
bu lisansla emwin projelerini derleyebiliyorsunuz.
yalnız keil5'te, device manager'de mcu listesi boş geliyor nedendir bilmiyorum.


Ayrıca stm32f10x serisi içinde kütüphaneler var mı?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 17 Haziran 2014, 01:54:57
Müh.Müh. Attan İnip Eşeğe binmesek.

mesaj birleştirme:: 17 Haziran 2014, 01:55:22

Alıntı yapılan: Müh. müh. - 17 Haziran 2014, 01:43:41...

Ayrıca stm32f10x serisi içinde kütüphaneler var mı?


var.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: Müh. müh. - 17 Haziran 2014, 01:58:55
Alıntı yapılan: muhittin_kaplan - 17 Haziran 2014, 01:54:57
Müh.Müh. Attan İnip Eşeğe binmesek.

Gecenin bu saatinde komiklik yapmaya çalışmasak?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: mdargut - 17 Haziran 2014, 09:09:21
Bare-metal ile ARM GCC arasında ne fark var? Bilgisayarıma GCC yülü olmasına rağmen Emblocks ta proje oluştururken sadece bare-metal seçimine izin veriyor.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: yamak - 17 Haziran 2014, 09:13:21
İkisi farklı şeyler.Bare-metal demek işletim sistemi olmadan yani direkt hardware üzerinde çalışacak program oluyor.Yani cortex-m3,m4,pic vs için yazdığımız programlar bare-metal oluyo.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: picusta - 17 Haziran 2014, 11:58:07
GCC ile baremetal derlenemiyor mu  ?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 17 Haziran 2014, 12:27:29
Alıntı yapılan: Müh. müh. - 17 Haziran 2014, 01:58:55
Gecenin bu saatinde komiklik yapmaya çalışmasak?
@müh.müh.
Şöyle bir bakıyorum da aynı cevabı vermişsin, Herşeyi YAzmaya Hakkımız Var Ama Cevabı Alınca Sinir Yapıyoruz.
(https://www.picproje.org/index.php/topic,53804.msg409565.html#msg409565 (https://www.picproje.org/index.php/topic,53804.msg409565.html#msg409565))
Başlık: Ynt: Keil utanci - Coocox
Gönderen: Müh. müh. - 17 Haziran 2014, 12:58:00
Alıntı yapılan: muhittin_kaplan - 17 Haziran 2014, 12:27:29
@müh.müh.
Şöyle bir bakıyorum da aynı cevabı vermişsin, Herşeyi YAzmaya Hakkımız Var Ama Cevabı Alınca Sinir Yapıyoruz.
(https://www.picproje.org/index.php/topic,53804.msg409565.html#msg409565 (https://www.picproje.org/index.php/topic,53804.msg409565.html#msg409565))

Bazı şeyleri yapmanın yeri ve zamanı vardır. Ben birşey önerdim, sen gecenin üçünde saç baş yolmuş adama şaka yapıyorsun. Bu aynı kaza geçirmiş adamla dalga geçmek gibi..

Eğer mutlu ve mesut olacaksan, tamam dünya üzerindeki herkes coocox kullacak mığhıttin.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 17 Haziran 2014, 13:11:18
Öyle bir iddam yok, Herkes istediğini kullansın.
Ama Eğer Yazmayı Biliyorsak İstediğimiz gibi, İstenilenin Yazılması "Ne zamanOlursa Olsun" İnsanın Gücüne gitmemeli.  Senin Saat 3 te saç baş yolman Hiç Umrumda da değil ayrıca.
Dolayıdırki, Benim (ve diğer derleyici ile ilgili görüşlerini sunanların) kaç saat ve kaç gün hiç bilmedikleri bir dehlize (derleyiciden bahsediyorum) girip "ya evet buda iyi aslında" demeleri senin umrunda olmadığı gibi.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: Elektroemre - 17 Haziran 2014, 13:12:29
Alıntı yapılan: BRL - 16 Haziran 2014, 22:24:53
EmBlock msp430 ayarları nasıl yapılıyor ?
yeri değil ama mevzu açıldığı için soruyorum.

hocam öncelikle aşağıdaki linkten MSP GCC'i indir.
http://sourceforge.net/projects/mspgcc/ (http://sourceforge.net/projects/mspgcc/)

Sonraki adımlar resimdeki gibi.

(http://i.hizliresim.com/b8Pj0Z.png)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 17 Haziran 2014, 13:14:10
Bir Şeyler Yazarken Biraz daha Dikkatli Olunması Taraftarıyırm.
Sen attan inip ... diyeceksin.
Biz yazınca ....
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 17 Haziran 2014, 13:56:56
Hocam onu neden yazdigini biliyorum. Konunun birinde yanlislikla mih.mih yazmisin. Misillemede bulunuyor aklinca.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 17 Haziran 2014, 13:59:23
Hocam bu konular ilerlememizi ogrenme ve bilgi paylasimimizi kotu etkiliyor.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 17 Haziran 2014, 14:00:56
Herkes kendi capinda varolma savasi veriyor.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: CoşkuN - 17 Haziran 2014, 14:08:43
Sıcaklardan mıdır nedir, hangi başlığa girsem bir atışa sürüyor.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: picusta - 17 Haziran 2014, 14:13:15
Muhittin'i metanetini korudugu için tebrik etmek lazim.
@Coskun, geçen mail senin adindan mail gelmis, virüslü link göndermis.
Konu ile ilgili olmayan kisiler arasi atismlari silen bir bot olsa.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 17 Haziran 2014, 14:15:48
Sicaktan hocam. Dusunsene is,pc, kodlar, ustune sicak. En yakin yer klawye. Yaz rahatla.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: CoşkuN - 17 Haziran 2014, 14:23:19
Alıntı yapılan: picusta - 17 Haziran 2014, 14:13:15
Muhittin'i metanetini korudugu için tebrik etmek lazim.
@Coskun, geçen mail senin adindan mail gelmis, virüslü link göndermis.
Konu ile ilgili olmayan kisiler arasi atismlari silen bir bot olsa.
Hangi mailimden gemiş hocam gmailden mi?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: Müh. müh. - 17 Haziran 2014, 15:10:13
Alıntı yapılan: gerbay - 17 Haziran 2014, 13:21:55
@Müh. müh.

hocam ayıp oluyor..   arkadaş açıkça adını nickname yapmış, siz buna bile cesaret edememişsiniz. arkadaşın adı ile dalga geçiyorsunuz. siz istediğiniz kadar saç baş yolun, istediğiniz kadar zorlanın bu yaptığınız ayıp hiç bir durumda sizi mazur göstermez..

arkadaşın neredeyse senin yaşında çocuğu var, senin şu yaptığına bak..  "mığhıttin"  ne!

Alıntı yapılan: muhittin_kaplan - 17 Haziran 2014, 13:56:56
Hocam onu neden yazdigini biliyorum. Konunun birinde yanlislikla mih.mih yazmisin. Misillemede bulunuyor aklinca.


Alıntı yapılan: muhittin_kaplan - 14 Haziran 2014, 21:58:52
mih.mih
senide bekleriz..



Gerbay bey, beni kınamadan önce, savunduğunuz neredeyse benim yaşımda çocuğu olan adamın yazdığı mesajları okuyunuz lütfen..


Benim kimseyle sorunum yok. Konuyu kavga haline dönüştürmeye çalışan beyefendidir. Ben birşey önerdim, isterse ilgilenir, isterse ilgilenmez ama kişi bu platformların developer ı gibi ters düşünceli kişilere şakayla karışık saldırıp, bu platform yandaşlarınada hoşgeldin çekmektedir.

Ne isterse yazsın. isterse mih mih yazsın, isterse aptalca şakalar yapsın. Herkesin ufakta olsa mutluluğa ihtiyacı var. Kencince mutlu oluyor işte. Yalnız forum sakinleri beni kötü bilmesin yeter. Çünkü benim isteğim bu değildir.

Stlib ile ilgili soru sorduğuma pişman oldum.. Lütfen konuya kaldığınız yerden devam ediniz.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 17 Haziran 2014, 16:12:22
Stlible alakali konu neymis merak ettim. Aradim bulamadim
Başlık: Ynt: Keil utanci - Coocox
Gönderen: MuratUrsavas - 17 Haziran 2014, 22:19:57
Muhittin Bey,

Teşekkür ediyorum, hoşbulduk. Maalesef sitemdeki problemi dün fark ettim, DNS kaydı problemi gibi gözüküyordu. Kaydı güncelledim ancak bu sefer de siteye erişim tamamen sıkıntıya girdi. O zamana kadar bu başlığa eklemek istedim ancak sanırım iletilere dosya eklenemiyor.

Kullanan arkadaşlar EmBlocks ile ilgili sorulara cevap vermişler. BareMetal ile ilgili kısaca şunu söyleyebilirim, BareMetal bir sıfattır, EB'nin geliştiricisi de aslında GCC'nin kendi seçtiği bir branşını kendi istediği ayarlar ile derleyerek ona "EmBlocks BareMetal Derleyici" demiş, bundan ibaret. GCC'nin lisanslaması sonuçta buna izin veriyor.

@interrupter,

Kısır kalmış demişsiniz ancak dokümantasyonu mu yoksa yazılımın kendisi mi kısır kalmış onu anlayamadım. Dokümantasyon diyorsanız kesinlikle haklısınız. Bir çok açık kaynaklı proje gibi EB'de dokümantasyon sıkıntısı çekiyor, ancak forumu oldukça aktif ve istediğiniz cevaplara kolayca ulaşabiliyorsunuz. İstediğiniz özellik yoksa ya da hatalıysa da durumagöre bir sonraki sürümde ortaya çıkabiliyor (Yazılımın istek takip listesinde çoğu zaman benim ismimi görürsünüz.)

Gerbay'a katılıyorum GCC gerçekten çok iyi bir derleyici ancak rakipsiz değil. LLVM (Clang)'ı araştırırsanız yeeni nesil açık kaynaklı bir derleyici olduğunu görebilirsiniz. Ancak henüz gömülü sistemler için yeterince olgunlaşmış değil. Olgunlaştığında EmBlocks'da bu derleyiciyi görmek sizi şaşırtmasın.

Ayrıca EB FreeRTOS ve ChibiOS RTOS pluginleri içerir. Hata ayıklama yaparken RTOS threadlerinin ne durumda olduğunu takip edebilirsiniz.

EB şu anda en iyi ARM mikro kontrolcüler için destek sağlıyor. MSP430 çok talep görmediği için çalışıyor ama mükemmelikten uzak. Ancak talep geldiğinde ya da bariz hata bulunduğunda düzeltiliyor. PIC konusu ise bir başka konu. Proje PIC için başlamış olmasına rağmen şu anda o kısım pek aktif değil. PIC32 destekleniyor ancak çok geliştirilmiyor. PIC16 - 18 ve 24 serisi ise hiç desteklenmiyor çünkü Microchip hata ayıklayıcılar ve mikro kontrolcüler konusunda çok muhafazakar ve hiç bilgi paylaşmıyor. Emek harcansa bile karşılığı fazla bir şey olmayacak. PIC kullanımı zaten her geçen gün azalıyor.


Ayrıca EB'de mümkün olduğunca tüm çevrebirim kütüphaneleri bulunuyor. Tabii Müh.Müh. gibi bunları kullanmak zorunda değilsiniz. O takdirde proje sihibazında istemediğinizi belirtmeniz yeterli.

Not: Sitemdeki problem DNS'den öte bir sıkıntı gibi gözüküyor. O çözülene kadar dokümana OneDrive'dan erişebilirsiniz.

http://1drv.ms/1q9wdRS (http://1drv.ms/1q9wdRS)

Sizde benim gibi PDF'leri çevrim içi görüntülemekten hoşlanmıyorsanız bilgisayarınıza indirip incelemenizi tavsiye ederim.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 18 Haziran 2014, 01:16:01
ellerinize sağlık güzel bir katkı sağladı bu döküman..
Başlık: Ynt: Keil utanci - Coocox
Gönderen: MuratUrsavas - 18 Haziran 2014, 09:38:01
Teşekkürler Muhittin Bey.

Ayrıca herkes için belirtmek isterim, doküman yalnızca EmBlocks için hazırlanmamıştır. STM32 temel alınarak ARM MCU'da yazılım geliştirme anlatılmıştır.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: Gökhan BEKEN - 18 Haziran 2014, 10:06:15
Çok güzel bir kitap olmuş. Sadece yazısı değil, görsellerlerde iyi olmuş. Teşekkür ederim.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: Erol YILMAZ - 18 Haziran 2014, 12:00:10
Murat hocam tek kelime ile tebrikler!
Başlık: Ynt: Keil utanci - Coocox
Gönderen: f_machine - 18 Haziran 2014, 12:02:37
bende dökümanı indirip bi çırpıda okudum . Çok faydalı bilgiler var , ellerinize sağlık...
Başlık: Ynt: Keil utanci - Coocox
Gönderen: MuratUrsavas - 18 Haziran 2014, 15:07:06
Güzel sözleriniz için teşekkürler. İşinize yaradıysa beni mutlu eder. Amacına ulaşmış demektir.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: E3A4 - 18 Haziran 2014, 21:08:54
Hocam bende EB yeni kurdum fakat download code to flash seçenegini bulamadım.Ben mi göremedim yoksa bir eklenti mi kurmam gerekiyor yada farklı bir programla mı boarda kodu atabilirim?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: camby - 18 Haziran 2014, 21:11:17
Alıntı yapılan: Müh. müh. - 17 Haziran 2014, 01:43:41
Aynen STM32F4xx_StdPeriph_Driver librarysi imiş. Bu libraryler işleri çok kolaylaştırır ama öte yandan mcu nun içersinde neler oluyor bilmeden kod yazdırır adama..

Şuan bende, keil v4.72 kurulu. Aşağıdaki versiyonda bahsettiğiniz otomatik ekleme özelliği varmıdır?



Ayrıca stm32f10x serisi içinde kütüphaneler var mı?


ST Peripheral library kullanmadan önce register seviyesi yazıyordum, kütüphaneyi incelediğimde yazmaya çalıştığım low-level işlerin çok iyi bir şekilde yazılıp fonksiyon haline getirilmiş olduğunu gördüm. Eksiği yok , pratikliği çok fazla, register peşinde koşmaya değmez. MCU'nun içinde olanı biteni bilme açısından bence bir dezavantaj sağlamıyor çünkü hiç bir özellik bu library ile gizlenmiyor, kütüphaneyi incelediğinizde altta dönen her şeyden haberdar oluyorsunuz.

Keil 5'in yeni özelliklerini sevmedim / belki alışamadım bilemiyorum. Güncel gitmiyor , ST'nin yeni çıkan modelleri yoktu örneğin , şimdi belki çıkmıştır.

ST'nin library'leri her zaman güncel ve tüm aileler için var.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: erolca - 18 Haziran 2014, 21:55:19
Murat Hocam,

system register lerini ulaşabilmek için SVD uzantılı  dosyasının kolay hazırlama yöntemi mevcut mudur?



ufak bir araştırmadan sonra
http://www.arm.com/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php (http://www.arm.com/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: Müh. müh. - 18 Haziran 2014, 22:23:41
Alıntı yapılan: camby - 18 Haziran 2014, 21:11:17
ST Peripheral library kullanmadan önce register seviyesi yazıyordum, kütüphaneyi incelediğimde yazmaya çalıştığım low-level işlerin çok iyi bir şekilde yazılıp fonksiyon haline getirilmiş olduğunu gördüm. Eksiği yok , pratikliği çok fazla, register peşinde koşmaya değmez. MCU'nun içinde olanı biteni bilme açısından bence bir dezavantaj sağlamıyor çünkü hiç bir özellik bu library ile gizlenmiyor, kütüphaneyi incelediğinizde altta dönen her şeyden haberdar oluyorsunuz.

Keil 5'in yeni özelliklerini sevmedim / belki alışamadım bilemiyorum. Güncel gitmiyor , ST'nin yeni çıkan modelleri yoktu örneğin , şimdi belki çıkmıştır.

ST'nin library'leri her zaman güncel ve tüm aileler için var.


1 kadar ay önce mikroc for arm ı indirip denemiştim. "Kesinlikle derleyici kıyaslaması yapmıyorum." Mikroe de kendince hazır kütüphaneler oluşturmuş. (yalnız kapalılar) Fakat help dosyasında, kütüphanelerin nasıl kullandıldığı mükemmel açıklanmış.. En altında da, örnek kod parçacığı yayınlamış. Yani ben mcu nun içersinde ne olduğunu bilmeme gerek yok. O aşağıdaki, kod parçacığını kopyalayıp, programıma yapıştırırsam, 2 dk da atıyorum Uart, usb, ethernet gibi uygulamaları run edebilirim.

St libler için birkaç döküman paylaşıldı forumda, indirdim ama daha inceleyemedim. İçersinde, yukarıda yazıdığım gibi, uart örneği, i2c örneği, o örneği, bu örneği varsa, sayfalarca dökümanlar okumaya gerek kalmadan bile, hızlıca yazılımlar geliştirilebilir.

Başlık: Ynt: Keil utanci - Coocox
Gönderen: mistek - 18 Haziran 2014, 23:31:34
Alıntı yapılan: Müh. müh. - 18 Haziran 2014, 22:23:41

St libler için birkaç döküman paylaşıldı forumda, indirdim ama daha inceleyemedim. İçersinde, yukarıda yazıdığım gibi, uart örneği, i2c örneği, o örneği, bu örneği varsa, sayfalarca dökümanlar okumaya gerek kalmadan bile, hızlıca yazılımlar geliştirilebilir.



STlib içerisinde de her donanım için yapılmış örnekler mevcut ve direk kopyalayıp çalıştırabiliyorsunuz.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: Müh. müh. - 18 Haziran 2014, 23:48:36
Alıntı yapılan: mistek - 18 Haziran 2014, 23:31:34
STlib içerisinde de her donanım için yapılmış örnekler mevcut ve direk kopyalayıp çalıştırabiliyorsunuz.

stm32f4xx için yazılmış lib te açıklama var ama örnek yok. Yada ben göremedim.. stm32f4xx_gpio.c aşağıda,

/**
  ******************************************************************************
  * @file    stm32f4xx_gpio.c
  * @author  MCD Application Team
  * @version V1.0.0
  * @date    30-September-2011
  * @brief   This file provides firmware functions to manage the following
  *          functionalities of the GPIO peripheral:
  *           - Initialization and Configuration
  *           - GPIO Read and Write
  *           - GPIO Alternate functions configuration
  *
  *  @verbatim
  *
  *          ===================================================================
  *                                 [b]How to use this driver[/b]
  *          ===================================================================
  *           1. Enable the GPIO AHB clock using the following function
  *                RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE);
  *
  *           2. Configure the GPIO pin(s) using GPIO_Init()
  *              Four possible configuration are available for each pin:
  *                - Input: Floating, Pull-up, Pull-down.
  *                - Output: Push-Pull (Pull-up, Pull-down or no Pull)
  *                          Open Drain (Pull-up, Pull-down or no Pull).
  *                  In output mode, the speed is configurable: 2 MHz, 25 MHz,
  *                  50 MHz or 100 MHz.
  *                - Alternate Function: Push-Pull (Pull-up, Pull-down or no Pull)
  *                                      Open Drain (Pull-up, Pull-down or no Pull).
  *                - Analog: required mode when a pin is to be used as ADC channel
  *                          or DAC output.
  *
  *          3- Peripherals alternate function:
  *              - For ADC and DAC, configure the desired pin in analog mode using
  *                  GPIO_InitStruct->GPIO_Mode = GPIO_Mode_AN;
  *              - For other peripherals (TIM, USART...):
  *                 - Connect the pin to the desired peripherals' Alternate
  *                   Function (AF) using GPIO_PinAFConfig() function
  *                 - Configure the desired pin in alternate function mode using
  *                   GPIO_InitStruct->GPIO_Mode = GPIO_Mode_AF
  *                 - Select the type, pull-up/pull-down and output speed via
  *                   GPIO_PuPd, GPIO_OType and GPIO_Speed members
  *                 - Call GPIO_Init() function
  *
  *          4. To get the level of a pin configured in input mode use GPIO_ReadInputDataBit()
  *
  *          5. To set/reset the level of a pin configured in output mode use
  *             GPIO_SetBits()/GPIO_ResetBits()
  *
  *          6. During and just after reset, the alternate functions are not
  *             active and the GPIO pins are configured in input floating mode
  *             (except JTAG pins).
  *
  *          7. The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as
  *             general-purpose (PC14 and PC15, respectively) when the LSE
  *             oscillator is off. The LSE has priority over the GPIO function.
  *
  *          8. The HSE oscillator pins OSC_IN/OSC_OUT can be used as
  *             general-purpose PH0 and PH1, respectively, when the HSE
  *             oscillator is off. The HSE has priority over the GPIO function.
  *
  *  @endverbatim
  *
  ******************************************************************************
  * @attention
  *
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  *
  * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
  ******************************************************************************
  */

/* Includes ------------------------------------------------------------------*/
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"

/** @addtogroup STM32F4xx_StdPeriph_Driver
  * @{
  */

/** @defgroup GPIO
  * @brief GPIO driver modules
  * @{
  */

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

/** @defgroup GPIO_Private_Functions
  * @{
  */

/** @defgroup GPIO_Group1 Initialization and Configuration
*  @brief   Initialization and Configuration
*
@verbatim
===============================================================================
                        Initialization and Configuration
===============================================================================

@endverbatim
  * @{
  */

/**
  * @brief  Deinitializes the GPIOx peripheral registers to their default reset values.
  * @note   By default, The GPIO pins are configured in input floating mode (except JTAG pins).
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @retval None
  */
void GPIO_DeInit(GPIO_TypeDef* GPIOx)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

  if (GPIOx == GPIOA)
  {
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOA, ENABLE);
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOA, DISABLE);
  }
  else if (GPIOx == GPIOB)
  {
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOB, ENABLE);
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOB, DISABLE);
  }
  else if (GPIOx == GPIOC)
  {
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOC, ENABLE);
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOC, DISABLE);
  }
  else if (GPIOx == GPIOD)
  {
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOD, ENABLE);
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOD, DISABLE);
  }
  else if (GPIOx == GPIOE)
  {
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOE, ENABLE);
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOE, DISABLE);
  }
  else if (GPIOx == GPIOF)
  {
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOF, ENABLE);
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOF, DISABLE);
  }
  else if (GPIOx == GPIOG)
  {
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOG, ENABLE);
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOG, DISABLE);
  }
  else if (GPIOx == GPIOH)
  {
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOH, ENABLE);
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOH, DISABLE);
  }
  else
  {
    if (GPIOx == GPIOI)
    {
      RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOI, ENABLE);
      RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOI, DISABLE);
    }
  }
}

/**
  * @brief  Initializes the GPIOx peripheral according to the specified parameters in the GPIO_InitStruct.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_InitStruct: pointer to a GPIO_InitTypeDef structure that contains
  *         the configuration information for the specified GPIO peripheral.
  * @retval None
  */
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
{
  uint32_t pinpos = 0x00, pos = 0x00 , currentpin = 0x00;

  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_InitStruct->GPIO_Pin));
  assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));
  assert_param(IS_GPIO_PUPD(GPIO_InitStruct->GPIO_PuPd));

  /* -------------------------Configure the port pins---------------- */
  /*-- GPIO Mode Configuration --*/
  for (pinpos = 0x00; pinpos < 0x10; pinpos++)
  {
    pos = ((uint32_t)0x01) << pinpos;
    /* Get the port pins position */
    currentpin = (GPIO_InitStruct->GPIO_Pin) & pos;

    if (currentpin == pos)
    {
      GPIOx->MODER  &= ~(GPIO_MODER_MODER0 << (pinpos * 2));
      GPIOx->MODER |= (((uint32_t)GPIO_InitStruct->GPIO_Mode) << (pinpos * 2));

      if ((GPIO_InitStruct->GPIO_Mode == GPIO_Mode_OUT) || (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_AF))
      {
        /* Check Speed mode parameters */
        assert_param(IS_GPIO_SPEED(GPIO_InitStruct->GPIO_Speed));

        /* Speed mode configuration */
        GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR0 << (pinpos * 2));
        GPIOx->OSPEEDR |= ((uint32_t)(GPIO_InitStruct->GPIO_Speed) << (pinpos * 2));

        /* Check Output mode parameters */
        assert_param(IS_GPIO_OTYPE(GPIO_InitStruct->GPIO_OType));

        /* Output mode configuration*/
        GPIOx->OTYPER  &= ~((GPIO_OTYPER_OT_0) << ((uint16_t)pinpos)) ;
        GPIOx->OTYPER |= (uint16_t)(((uint16_t)GPIO_InitStruct->GPIO_OType) << ((uint16_t)pinpos));
      }

      /* Pull-up Pull down resistor configuration*/
      GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << ((uint16_t)pinpos * 2));
      GPIOx->PUPDR |= (((uint32_t)GPIO_InitStruct->GPIO_PuPd) << (pinpos * 2));
    }
  }
}

/**
  * @brief  Fills each GPIO_InitStruct member with its default value.
  * @param  GPIO_InitStruct : pointer to a GPIO_InitTypeDef structure which will be initialized.
  * @retval None
  */
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)
{
  /* Reset GPIO init structure parameters values */
  GPIO_InitStruct->GPIO_Pin  = GPIO_Pin_All;
  GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStruct->GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStruct->GPIO_OType = GPIO_OType_PP;
  GPIO_InitStruct->GPIO_PuPd = GPIO_PuPd_NOPULL;
}

/**
  * @brief  Locks GPIO Pins configuration registers.
  * @note   The locked registers are GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR,
  *         GPIOx_PUPDR, GPIOx_AFRL and GPIOx_AFRH.
  * @note   The configuration of the locked GPIO pins can no longer be modified
  *         until the next reset.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_Pin: specifies the port bit to be locked.
  *          This parameter can be any combination of GPIO_Pin_x where x can be (0..15).
  * @retval None
  */
void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  __IO uint32_t tmp = 0x00010000;

  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_Pin));

  tmp |= GPIO_Pin;
  /* Set LCKK bit */
  GPIOx->LCKR = tmp;
  /* Reset LCKK bit */
  GPIOx->LCKR =  GPIO_Pin;
  /* Set LCKK bit */
  GPIOx->LCKR = tmp;
  /* Read LCKK bit*/
  tmp = GPIOx->LCKR;
  /* Read LCKK bit*/
  tmp = GPIOx->LCKR;
}

/**
  * @}
  */

/** @defgroup GPIO_Group2 GPIO Read and Write
*  @brief   GPIO Read and Write
*
@verbatim
===============================================================================
                              GPIO Read and Write
===============================================================================

@endverbatim
  * @{
  */

/**
  * @brief  Reads the specified input port pin.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_Pin: specifies the port bit to read.
  *         This parameter can be GPIO_Pin_x where x can be (0..15).
  * @retval The input port pin value.
  */
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  uint8_t bitstatus = 0x00;

  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GET_GPIO_PIN(GPIO_Pin));

  if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)Bit_RESET)
  {
    bitstatus = (uint8_t)Bit_SET;
  }
  else
  {
    bitstatus = (uint8_t)Bit_RESET;
  }
  return bitstatus;
}

/**
  * @brief  Reads the specified GPIO input data port.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @retval GPIO input data port value.
  */
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

  return ((uint16_t)GPIOx->IDR);
}

/**
  * @brief  Reads the specified output data port bit.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_Pin: specifies the port bit to read.
  *          This parameter can be GPIO_Pin_x where x can be (0..15).
  * @retval The output port pin value.
  */
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  uint8_t bitstatus = 0x00;

  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GET_GPIO_PIN(GPIO_Pin));

  if ((GPIOx->ODR & GPIO_Pin) != (uint32_t)Bit_RESET)
  {
    bitstatus = (uint8_t)Bit_SET;
  }
  else
  {
    bitstatus = (uint8_t)Bit_RESET;
  }
  return bitstatus;
}

/**
  * @brief  Reads the specified GPIO output data port.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @retval GPIO output data port value.
  */
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

  return ((uint16_t)GPIOx->ODR);
}

/**
  * @brief  Sets the selected data port bits.
  * @note   This functions uses GPIOx_BSRR register to allow atomic read/modify
  *         accesses. In this way, there is no risk of an IRQ occurring between
  *         the read and the modify access.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_Pin: specifies the port bits to be written.
  *          This parameter can be any combination of GPIO_Pin_x where x can be (0..15).
  * @retval None
  */
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_Pin));

  GPIOx->BSRRL = GPIO_Pin;
}

/**
  * @brief  Clears the selected data port bits.
  * @note   This functions uses GPIOx_BSRR register to allow atomic read/modify
  *         accesses. In this way, there is no risk of an IRQ occurring between
  *         the read and the modify access.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_Pin: specifies the port bits to be written.
  *          This parameter can be any combination of GPIO_Pin_x where x can be (0..15).
  * @retval None
  */
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_Pin));

  GPIOx->BSRRH = GPIO_Pin;
}

/**
  * @brief  Sets or clears the selected data port bit.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_Pin: specifies the port bit to be written.
  *          This parameter can be one of GPIO_Pin_x where x can be (0..15).
  * @param  BitVal: specifies the value to be written to the selected bit.
  *          This parameter can be one of the BitAction enum values:
  *            @arg Bit_RESET: to clear the port pin
  *            @arg Bit_SET: to set the port pin
  * @retval None
  */
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GET_GPIO_PIN(GPIO_Pin));
  assert_param(IS_GPIO_BIT_ACTION(BitVal));

  if (BitVal != Bit_RESET)
  {
    GPIOx->BSRRL = GPIO_Pin;
  }
  else
  {
    GPIOx->BSRRH = GPIO_Pin ;
  }
}

/**
  * @brief  Writes data to the specified GPIO data port.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  PortVal: specifies the value to be written to the port output data register.
  * @retval None
  */
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

  GPIOx->ODR = PortVal;
}

/**
  * @brief  Toggles the specified GPIO pins..
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_Pin: Specifies the pins to be toggled.
  * @retval None
  */
void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

  GPIOx->ODR ^= GPIO_Pin;
}

/**
  * @}
  */

/** @defgroup GPIO_Group3 GPIO Alternate functions configuration function
*  @brief   GPIO Alternate functions configuration function
*
@verbatim
===============================================================================
               GPIO Alternate functions configuration function
===============================================================================

@endverbatim
  * @{
  */

/**
  * @brief  Changes the mapping of the specified pin.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_PinSource: specifies the pin for the Alternate function.
  *         This parameter can be GPIO_PinSourcex where x can be (0..15).
  * @param  GPIO_AFSelection: selects the pin to used as Alternate function.
  *          This parameter can be one of the following values:
  *            @arg GPIO_AF_RTC_50Hz: Connect RTC_50Hz pin to AF0 (default after reset)
  *            @arg GPIO_AF_MCO: Connect MCO pin (MCO1 and MCO2) to AF0 (default after reset)
  *            @arg GPIO_AF_TAMPER: Connect TAMPER pins (TAMPER_1 and TAMPER_2) to AF0 (default after reset)
  *            @arg GPIO_AF_SWJ: Connect SWJ pins (SWD and JTAG)to AF0 (default after reset)
  *            @arg GPIO_AF_TRACE: Connect TRACE pins to AF0 (default after reset)
  *            @arg GPIO_AF_TIM1: Connect TIM1 pins to AF1
  *            @arg GPIO_AF_TIM2: Connect TIM2 pins to AF1
  *            @arg GPIO_AF_TIM3: Connect TIM3 pins to AF2
  *            @arg GPIO_AF_TIM4: Connect TIM4 pins to AF2
  *            @arg GPIO_AF_TIM5: Connect TIM5 pins to AF2
  *            @arg GPIO_AF_TIM8: Connect TIM8 pins to AF3
  *            @arg GPIO_AF_TIM9: Connect TIM9 pins to AF3
  *            @arg GPIO_AF_TIM10: Connect TIM10 pins to AF3
  *            @arg GPIO_AF_TIM11: Connect TIM11 pins to AF3
  *            @arg GPIO_AF_I2C1: Connect I2C1 pins to AF4
  *            @arg GPIO_AF_I2C2: Connect I2C2 pins to AF4
  *            @arg GPIO_AF_I2C3: Connect I2C3 pins to AF4
  *            @arg GPIO_AF_SPI1: Connect SPI1 pins to AF5
  *            @arg GPIO_AF_SPI2: Connect SPI2/I2S2 pins to AF5
  *            @arg GPIO_AF_SPI3: Connect SPI3/I2S3 pins to AF6
  *            @arg GPIO_AF_I2S3ext: Connect I2S3ext pins to AF7
  *            @arg GPIO_AF_USART1: Connect USART1 pins to AF7
  *            @arg GPIO_AF_USART2: Connect USART2 pins to AF7
  *            @arg GPIO_AF_USART3: Connect USART3 pins to AF7
  *            @arg GPIO_AF_UART4: Connect UART4 pins to AF8
  *            @arg GPIO_AF_UART5: Connect UART5 pins to AF8
  *            @arg GPIO_AF_USART6: Connect USART6 pins to AF8
  *            @arg GPIO_AF_CAN1: Connect CAN1 pins to AF9
  *            @arg GPIO_AF_CAN2: Connect CAN2 pins to AF9
  *            @arg GPIO_AF_TIM12: Connect TIM12 pins to AF9
  *            @arg GPIO_AF_TIM13: Connect TIM13 pins to AF9
  *            @arg GPIO_AF_TIM14: Connect TIM14 pins to AF9
  *            @arg GPIO_AF_OTG_FS: Connect OTG_FS pins to AF10
  *            @arg GPIO_AF_OTG_HS: Connect OTG_HS pins to AF10
  *            @arg GPIO_AF_ETH: Connect ETHERNET pins to AF11
  *            @arg GPIO_AF_FSMC: Connect FSMC pins to AF12
  *            @arg GPIO_AF_OTG_HS_FS: Connect OTG HS (configured in FS) pins to AF12
  *            @arg GPIO_AF_SDIO: Connect SDIO pins to AF12
  *            @arg GPIO_AF_DCMI: Connect DCMI pins to AF13
  *            @arg GPIO_AF_EVENTOUT: Connect EVENTOUT pins to AF15
  * @retval None
  */
void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)
{
  uint32_t temp = 0x00;
  uint32_t temp_2 = 0x00;

  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
  assert_param(IS_GPIO_AF(GPIO_AF));

  temp = ((uint32_t)(GPIO_AF) << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ;
  GPIOx->AFR[GPIO_PinSource >> 0x03] &= ~((uint32_t)0xF << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ;
  temp_2 = GPIOx->AFR[GPIO_PinSource >> 0x03] | temp;
  GPIOx->AFR[GPIO_PinSource >> 0x03] = temp_2;
}

/**
  * @}
  */

/**
  * @}
  */

/**
  * @}
  */

/**
  * @}
  */

/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 18 Haziran 2014, 23:50:56
Müh.Müh.

İnan Bana Google da yapacağın Bir Aramayla "örnek Stm32f4 GPIO" birçok örneğe ulaşacaksın. Sen ST lib le alaklı Bir Konu Aç Örnekleri Orada Verelim Sana.

mesaj birleştirme:: 18 Haziran 2014, 23:51:26

Yukada Verdiğin GPIO nun kütüphanesi örnek yok onda.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: mistek - 18 Haziran 2014, 23:57:55
Alıntı yapılan: Müh. müh. - 18 Haziran 2014, 23:48:36
stm32f4xx için yazılmış lib te açıklama var ama örnek yok. Yada ben göremedim.. stm32f4xx_gpio.c aşağıda,

/**
  ******************************************************************************
  * @file    stm32f4xx_gpio.c
  * @author  MCD Application Team
  * @version V1.0.0
  * @date    30-September-2011
  * @brief   This file provides firmware functions to manage the following
  *          functionalities of the GPIO peripheral:
  *           - Initialization and Configuration
  *           - GPIO Read and Write
  *           - GPIO Alternate functions configuration
  *
  *  @verbatim
  *
  *          ===================================================================
  *                                 [b]How to use this driver[/b]
  *          ===================================================================
  *           1. Enable the GPIO AHB clock using the following function
  *                RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE);
  *
  *           2. Configure the GPIO pin(s) using GPIO_Init()
  *              Four possible configuration are available for each pin:
  *                - Input: Floating, Pull-up, Pull-down.
  *                - Output: Push-Pull (Pull-up, Pull-down or no Pull)
  *                          Open Drain (Pull-up, Pull-down or no Pull).
  *                  In output mode, the speed is configurable: 2 MHz, 25 MHz,
  *                  50 MHz or 100 MHz.
  *                - Alternate Function: Push-Pull (Pull-up, Pull-down or no Pull)
  *                                      Open Drain (Pull-up, Pull-down or no Pull).
  *                - Analog: required mode when a pin is to be used as ADC channel
  *                          or DAC output.
  *
  *          3- Peripherals alternate function:
  *              - For ADC and DAC, configure the desired pin in analog mode using
  *                  GPIO_InitStruct->GPIO_Mode = GPIO_Mode_AN;
  *              - For other peripherals (TIM, USART...):
  *                 - Connect the pin to the desired peripherals' Alternate
  *                   Function (AF) using GPIO_PinAFConfig() function
  *                 - Configure the desired pin in alternate function mode using
  *                   GPIO_InitStruct->GPIO_Mode = GPIO_Mode_AF
  *                 - Select the type, pull-up/pull-down and output speed via
  *                   GPIO_PuPd, GPIO_OType and GPIO_Speed members
  *                 - Call GPIO_Init() function
  *
  *          4. To get the level of a pin configured in input mode use GPIO_ReadInputDataBit()
  *
  *          5. To set/reset the level of a pin configured in output mode use
  *             GPIO_SetBits()/GPIO_ResetBits()
  *
  *          6. During and just after reset, the alternate functions are not
  *             active and the GPIO pins are configured in input floating mode
  *             (except JTAG pins).
  *
  *          7. The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as
  *             general-purpose (PC14 and PC15, respectively) when the LSE
  *             oscillator is off. The LSE has priority over the GPIO function.
  *
  *          8. The HSE oscillator pins OSC_IN/OSC_OUT can be used as
  *             general-purpose PH0 and PH1, respectively, when the HSE
  *             oscillator is off. The HSE has priority over the GPIO function.
  *
  *  @endverbatim
  *
  ******************************************************************************
  * @attention
  *
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  *
  * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
  ******************************************************************************
  */

/* Includes ------------------------------------------------------------------*/
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"

/** @addtogroup STM32F4xx_StdPeriph_Driver
  * @{
  */

/** @defgroup GPIO
  * @brief GPIO driver modules
  * @{
  */

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

/** @defgroup GPIO_Private_Functions
  * @{
  */

/** @defgroup GPIO_Group1 Initialization and Configuration
*  @brief   Initialization and Configuration
*
@verbatim
===============================================================================
                        Initialization and Configuration
===============================================================================

@endverbatim
  * @{
  */

/**
  * @brief  Deinitializes the GPIOx peripheral registers to their default reset values.
  * @note   By default, The GPIO pins are configured in input floating mode (except JTAG pins).
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @retval None
  */
void GPIO_DeInit(GPIO_TypeDef* GPIOx)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

  if (GPIOx == GPIOA)
  {
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOA, ENABLE);
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOA, DISABLE);
  }
  else if (GPIOx == GPIOB)
  {
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOB, ENABLE);
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOB, DISABLE);
  }
  else if (GPIOx == GPIOC)
  {
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOC, ENABLE);
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOC, DISABLE);
  }
  else if (GPIOx == GPIOD)
  {
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOD, ENABLE);
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOD, DISABLE);
  }
  else if (GPIOx == GPIOE)
  {
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOE, ENABLE);
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOE, DISABLE);
  }
  else if (GPIOx == GPIOF)
  {
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOF, ENABLE);
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOF, DISABLE);
  }
  else if (GPIOx == GPIOG)
  {
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOG, ENABLE);
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOG, DISABLE);
  }
  else if (GPIOx == GPIOH)
  {
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOH, ENABLE);
    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOH, DISABLE);
  }
  else
  {
    if (GPIOx == GPIOI)
    {
      RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOI, ENABLE);
      RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOI, DISABLE);
    }
  }
}

/**
  * @brief  Initializes the GPIOx peripheral according to the specified parameters in the GPIO_InitStruct.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_InitStruct: pointer to a GPIO_InitTypeDef structure that contains
  *         the configuration information for the specified GPIO peripheral.
  * @retval None
  */
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
{
  uint32_t pinpos = 0x00, pos = 0x00 , currentpin = 0x00;

  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_InitStruct->GPIO_Pin));
  assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));
  assert_param(IS_GPIO_PUPD(GPIO_InitStruct->GPIO_PuPd));

  /* -------------------------Configure the port pins---------------- */
  /*-- GPIO Mode Configuration --*/
  for (pinpos = 0x00; pinpos < 0x10; pinpos++)
  {
    pos = ((uint32_t)0x01) << pinpos;
    /* Get the port pins position */
    currentpin = (GPIO_InitStruct->GPIO_Pin) & pos;

    if (currentpin == pos)
    {
      GPIOx->MODER  &= ~(GPIO_MODER_MODER0 << (pinpos * 2));
      GPIOx->MODER |= (((uint32_t)GPIO_InitStruct->GPIO_Mode) << (pinpos * 2));

      if ((GPIO_InitStruct->GPIO_Mode == GPIO_Mode_OUT) || (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_AF))
      {
        /* Check Speed mode parameters */
        assert_param(IS_GPIO_SPEED(GPIO_InitStruct->GPIO_Speed));

        /* Speed mode configuration */
        GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR0 << (pinpos * 2));
        GPIOx->OSPEEDR |= ((uint32_t)(GPIO_InitStruct->GPIO_Speed) << (pinpos * 2));

        /* Check Output mode parameters */
        assert_param(IS_GPIO_OTYPE(GPIO_InitStruct->GPIO_OType));

        /* Output mode configuration*/
        GPIOx->OTYPER  &= ~((GPIO_OTYPER_OT_0) << ((uint16_t)pinpos)) ;
        GPIOx->OTYPER |= (uint16_t)(((uint16_t)GPIO_InitStruct->GPIO_OType) << ((uint16_t)pinpos));
      }

      /* Pull-up Pull down resistor configuration*/
      GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << ((uint16_t)pinpos * 2));
      GPIOx->PUPDR |= (((uint32_t)GPIO_InitStruct->GPIO_PuPd) << (pinpos * 2));
    }
  }
}

/**
  * @brief  Fills each GPIO_InitStruct member with its default value.
  * @param  GPIO_InitStruct : pointer to a GPIO_InitTypeDef structure which will be initialized.
  * @retval None
  */
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)
{
  /* Reset GPIO init structure parameters values */
  GPIO_InitStruct->GPIO_Pin  = GPIO_Pin_All;
  GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStruct->GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStruct->GPIO_OType = GPIO_OType_PP;
  GPIO_InitStruct->GPIO_PuPd = GPIO_PuPd_NOPULL;
}

/**
  * @brief  Locks GPIO Pins configuration registers.
  * @note   The locked registers are GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR,
  *         GPIOx_PUPDR, GPIOx_AFRL and GPIOx_AFRH.
  * @note   The configuration of the locked GPIO pins can no longer be modified
  *         until the next reset.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_Pin: specifies the port bit to be locked.
  *          This parameter can be any combination of GPIO_Pin_x where x can be (0..15).
  * @retval None
  */
void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  __IO uint32_t tmp = 0x00010000;

  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_Pin));

  tmp |= GPIO_Pin;
  /* Set LCKK bit */
  GPIOx->LCKR = tmp;
  /* Reset LCKK bit */
  GPIOx->LCKR =  GPIO_Pin;
  /* Set LCKK bit */
  GPIOx->LCKR = tmp;
  /* Read LCKK bit*/
  tmp = GPIOx->LCKR;
  /* Read LCKK bit*/
  tmp = GPIOx->LCKR;
}

/**
  * @}
  */

/** @defgroup GPIO_Group2 GPIO Read and Write
*  @brief   GPIO Read and Write
*
@verbatim
===============================================================================
                              GPIO Read and Write
===============================================================================

@endverbatim
  * @{
  */

/**
  * @brief  Reads the specified input port pin.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_Pin: specifies the port bit to read.
  *         This parameter can be GPIO_Pin_x where x can be (0..15).
  * @retval The input port pin value.
  */
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  uint8_t bitstatus = 0x00;

  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GET_GPIO_PIN(GPIO_Pin));

  if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)Bit_RESET)
  {
    bitstatus = (uint8_t)Bit_SET;
  }
  else
  {
    bitstatus = (uint8_t)Bit_RESET;
  }
  return bitstatus;
}

/**
  * @brief  Reads the specified GPIO input data port.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @retval GPIO input data port value.
  */
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

  return ((uint16_t)GPIOx->IDR);
}

/**
  * @brief  Reads the specified output data port bit.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_Pin: specifies the port bit to read.
  *          This parameter can be GPIO_Pin_x where x can be (0..15).
  * @retval The output port pin value.
  */
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  uint8_t bitstatus = 0x00;

  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GET_GPIO_PIN(GPIO_Pin));

  if ((GPIOx->ODR & GPIO_Pin) != (uint32_t)Bit_RESET)
  {
    bitstatus = (uint8_t)Bit_SET;
  }
  else
  {
    bitstatus = (uint8_t)Bit_RESET;
  }
  return bitstatus;
}

/**
  * @brief  Reads the specified GPIO output data port.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @retval GPIO output data port value.
  */
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

  return ((uint16_t)GPIOx->ODR);
}

/**
  * @brief  Sets the selected data port bits.
  * @note   This functions uses GPIOx_BSRR register to allow atomic read/modify
  *         accesses. In this way, there is no risk of an IRQ occurring between
  *         the read and the modify access.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_Pin: specifies the port bits to be written.
  *          This parameter can be any combination of GPIO_Pin_x where x can be (0..15).
  * @retval None
  */
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_Pin));

  GPIOx->BSRRL = GPIO_Pin;
}

/**
  * @brief  Clears the selected data port bits.
  * @note   This functions uses GPIOx_BSRR register to allow atomic read/modify
  *         accesses. In this way, there is no risk of an IRQ occurring between
  *         the read and the modify access.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_Pin: specifies the port bits to be written.
  *          This parameter can be any combination of GPIO_Pin_x where x can be (0..15).
  * @retval None
  */
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_Pin));

  GPIOx->BSRRH = GPIO_Pin;
}

/**
  * @brief  Sets or clears the selected data port bit.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_Pin: specifies the port bit to be written.
  *          This parameter can be one of GPIO_Pin_x where x can be (0..15).
  * @param  BitVal: specifies the value to be written to the selected bit.
  *          This parameter can be one of the BitAction enum values:
  *            @arg Bit_RESET: to clear the port pin
  *            @arg Bit_SET: to set the port pin
  * @retval None
  */
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GET_GPIO_PIN(GPIO_Pin));
  assert_param(IS_GPIO_BIT_ACTION(BitVal));

  if (BitVal != Bit_RESET)
  {
    GPIOx->BSRRL = GPIO_Pin;
  }
  else
  {
    GPIOx->BSRRH = GPIO_Pin ;
  }
}

/**
  * @brief  Writes data to the specified GPIO data port.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  PortVal: specifies the value to be written to the port output data register.
  * @retval None
  */
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

  GPIOx->ODR = PortVal;
}

/**
  * @brief  Toggles the specified GPIO pins..
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_Pin: Specifies the pins to be toggled.
  * @retval None
  */
void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

  GPIOx->ODR ^= GPIO_Pin;
}

/**
  * @}
  */

/** @defgroup GPIO_Group3 GPIO Alternate functions configuration function
*  @brief   GPIO Alternate functions configuration function
*
@verbatim
===============================================================================
               GPIO Alternate functions configuration function
===============================================================================

@endverbatim
  * @{
  */

/**
  * @brief  Changes the mapping of the specified pin.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_PinSource: specifies the pin for the Alternate function.
  *         This parameter can be GPIO_PinSourcex where x can be (0..15).
  * @param  GPIO_AFSelection: selects the pin to used as Alternate function.
  *          This parameter can be one of the following values:
  *            @arg GPIO_AF_RTC_50Hz: Connect RTC_50Hz pin to AF0 (default after reset)
  *            @arg GPIO_AF_MCO: Connect MCO pin (MCO1 and MCO2) to AF0 (default after reset)
  *            @arg GPIO_AF_TAMPER: Connect TAMPER pins (TAMPER_1 and TAMPER_2) to AF0 (default after reset)
  *            @arg GPIO_AF_SWJ: Connect SWJ pins (SWD and JTAG)to AF0 (default after reset)
  *            @arg GPIO_AF_TRACE: Connect TRACE pins to AF0 (default after reset)
  *            @arg GPIO_AF_TIM1: Connect TIM1 pins to AF1
  *            @arg GPIO_AF_TIM2: Connect TIM2 pins to AF1
  *            @arg GPIO_AF_TIM3: Connect TIM3 pins to AF2
  *            @arg GPIO_AF_TIM4: Connect TIM4 pins to AF2
  *            @arg GPIO_AF_TIM5: Connect TIM5 pins to AF2
  *            @arg GPIO_AF_TIM8: Connect TIM8 pins to AF3
  *            @arg GPIO_AF_TIM9: Connect TIM9 pins to AF3
  *            @arg GPIO_AF_TIM10: Connect TIM10 pins to AF3
  *            @arg GPIO_AF_TIM11: Connect TIM11 pins to AF3
  *            @arg GPIO_AF_I2C1: Connect I2C1 pins to AF4
  *            @arg GPIO_AF_I2C2: Connect I2C2 pins to AF4
  *            @arg GPIO_AF_I2C3: Connect I2C3 pins to AF4
  *            @arg GPIO_AF_SPI1: Connect SPI1 pins to AF5
  *            @arg GPIO_AF_SPI2: Connect SPI2/I2S2 pins to AF5
  *            @arg GPIO_AF_SPI3: Connect SPI3/I2S3 pins to AF6
  *            @arg GPIO_AF_I2S3ext: Connect I2S3ext pins to AF7
  *            @arg GPIO_AF_USART1: Connect USART1 pins to AF7
  *            @arg GPIO_AF_USART2: Connect USART2 pins to AF7
  *            @arg GPIO_AF_USART3: Connect USART3 pins to AF7
  *            @arg GPIO_AF_UART4: Connect UART4 pins to AF8
  *            @arg GPIO_AF_UART5: Connect UART5 pins to AF8
  *            @arg GPIO_AF_USART6: Connect USART6 pins to AF8
  *            @arg GPIO_AF_CAN1: Connect CAN1 pins to AF9
  *            @arg GPIO_AF_CAN2: Connect CAN2 pins to AF9
  *            @arg GPIO_AF_TIM12: Connect TIM12 pins to AF9
  *            @arg GPIO_AF_TIM13: Connect TIM13 pins to AF9
  *            @arg GPIO_AF_TIM14: Connect TIM14 pins to AF9
  *            @arg GPIO_AF_OTG_FS: Connect OTG_FS pins to AF10
  *            @arg GPIO_AF_OTG_HS: Connect OTG_HS pins to AF10
  *            @arg GPIO_AF_ETH: Connect ETHERNET pins to AF11
  *            @arg GPIO_AF_FSMC: Connect FSMC pins to AF12
  *            @arg GPIO_AF_OTG_HS_FS: Connect OTG HS (configured in FS) pins to AF12
  *            @arg GPIO_AF_SDIO: Connect SDIO pins to AF12
  *            @arg GPIO_AF_DCMI: Connect DCMI pins to AF13
  *            @arg GPIO_AF_EVENTOUT: Connect EVENTOUT pins to AF15
  * @retval None
  */
void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)
{
  uint32_t temp = 0x00;
  uint32_t temp_2 = 0x00;

  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
  assert_param(IS_GPIO_AF(GPIO_AF));

  temp = ((uint32_t)(GPIO_AF) << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ;
  GPIOx->AFR[GPIO_PinSource >> 0x03] &= ~((uint32_t)0xF << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ;
  temp_2 = GPIOx->AFR[GPIO_PinSource >> 0x03] | temp;
  GPIOx->AFR[GPIO_PinSource >> 0x03] = temp_2;
}

/**
  * @}
  */

/**
  * @}
  */

/**
  * @}
  */

/**
  * @}
  */

/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/



Hocam örnekler .c içerisinde değil adamlar examples diye ayrıca bir klasör yapıp proje açmışlar. İndirdiğiniz zip dosyasında Projects klasörüne bakın.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: Müh. müh. - 18 Haziran 2014, 23:58:25
Alıntı yapılan: muhittin_kaplan - 18 Haziran 2014, 23:50:56
Müh.Müh.

İnan Bana Google da yapacağın Bir Aramayla "örnek Stm32f4 GPIO" birçok örneğe ulaşacaksın. Sen ST lib le alaklı Bir Konu Aç Örnekleri Orada Verelim Sana.

mesaj birleştirme:: 18 Haziran 2014, 23:51:26

Yukada Verdiğin GPIO nun kütüphanesi örnek yok onda.

Muhittin, örnek aradığımıda nereden çıkarttın? Elimde döküman var, okumaya vakit bulamadım. Sıkıntı yok yani. Öylesine mesajlaşıp, muhabbet ediyoruz arkadaşlarla. Dur seni mutlu edecekse, konu açayım birtane.. :)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 19 Haziran 2014, 00:18:57
Sana Yardım Etmek Mutlu Eder, Aç.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: MuratUrsavas - 19 Haziran 2014, 10:02:17
@erkanakarcay hocam,

EB'de direkt flash download yok çünkü flash download debug'ı başlatıp geri bitirmek kadar kolay bir şey. Zaten seri üretim için yükleme yapıyorsanız bir geliştirme ortamı içinden yapmanız çok doğru değil. Bunun sebeplerini detaylı olarak EB forumlarında dile getirmiştim ancak sizler de merak ederseniz burada da detaylandırırım. Ayrıca dış çalıştırılabilir program çağrıları ilede bu istediğiniz yapılabiliyor (STLink Command Line ya da JLink Flash command line ile) ancak yine dediğim gibi, bunun için başka programlar kullanmak çok daha mantıklı (Örn.: ST Visual Programmer yada STLink Utility gibi)

@erolcaliskan hocam,

SVD konusu EB'de o kadar basitleştirildi ki, şaşırırsınız. İstediğiniz MCU'nun profilini SVD repository plugininden seçiyorsunuz ve EB otomatik olarak o dosyayı indirip projenize ekliyor. Sonrasında tüm yazmaçlara kolayca erişebiliyorsunuz.(R/W).

ST Çevrebirim Kütüphanesi konusunda ise sanırım örneklerin bulunduğu anlaşılmış, tekrar detaya girmeye gerek yok.

Çevre birim dosyaları konusunda ise size şunu söyleyebilirim. Mutlaka kullanın ama yeri geldiğinde içine girip istediğinizi almayı da bilin. Bazen öyle deterministik işler yapmanız gerekir ki bir "PUSH / BL / POP" grubundan bile kurtulmak istersiniz. O zaman kütüphaneye yine başvurun ve istediğinizi içinden çekin alın.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: E3A4 - 19 Haziran 2014, 13:45:39
 Teşekkürler hocam, biraz detaylandırırsanız bu konuda da bilgi sahibi olmamıza vesile olursunuz.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: MuratUrsavas - 19 Haziran 2014, 23:14:26
Erkan hocam, memnuniyetle.

Seri üretim için geliştirme ortamı kullanıyorsanız muhtemelen sürüm yönetimi yapmıyorsunuz demektir. Hangi sürümde ne özellikler var, birbirleri ile uyumlumu kontrol altında tutmuyorsunuz demektir. Cihazlarınız sahaya dağıldıkça onların hatalarını kontrol altında tutmak ya da güncellemek gittikçe zorlaşmaya başlar. Bir süre sonra da uyumsuzluklardan dolayı imkansız hale gelebilir.

Ayrıca saha operasyonları çok maliyetlidir. Geliştiricinin masasında 1 dakikada çözülebilecek bir problem sahada bir kaç kişi ile bir kaç gün süren bir çalışmaya dönüşebilir. Dolayısı ile sahaya en az müdahale edecek şekilde hareket etmek gerekir. Sürüm kontrolsüz çalışmak demek genellikle bolca saha operasyonuna yol açmak demektir.

Biz geliştiriciler biraz dağınık insanlarızdır. Kaldı ki yazılımı geliştirme de bir sürü deneme yanılma demektir. Geliştirme yaparken her an yazılımın stabilitesinden emin olamazsınız.

Bunun yerine bir kod yönetim sisteminde (SVN, Gt, Mercurial gibi) yazılımınızı gelitşirmeye devam etmeli  ve zamanı geldiğinde yazılımınızı ayrı bir branşta stabil kabul ederek chazdan bir şekilde hangi sürümü taşıdığı bilgisi alınabilecek şekilde dondurmalı ve sonrasında yükleme imajını (hex, bin, elf, s19 ya da ne kullanıyorsanız) sürüm bilgisi ile bir başka yerde saklamalısınız. Sonrasında üretimi yaparken (yüklemeyi yapan siz dahi olsanız) üretimde bu dondurulmuş imaj kullanılmalıdır. Böylece cihazlara yüklenen yazılımın tam olarak istediğiniz sürüm olduğundan emin olabilirsiniz.

Not: Kod yönetim sisteminde benim tercihim Mercurial (Hg)'dır.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 20 Haziran 2014, 01:26:00
Murat Hocam

"daha struct elemanı gösteremiyor." diye bir şikayet var ama sizin başınıza böyle durumlar deldi mi ?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: AsHeS - 20 Haziran 2014, 01:30:01

struct tc_coin_pulse_req_msg_s
{
uint64_t tcprm_coin_inje_time;
uint8_t  tcprm_coin_type;
};

struct tc_coin_pulse_number_change_msg_s
{
uint8_t tcpncm_num_of_pulses;
};

struct tc_coin_pulse_pulse_interval_msg_s
{
uint8_t tcpim_coin_pulse_width;
};

struct  tc_coin_pulse_management_msg_s
{
struct task_comm_msg_header_s tcpmm_task_comm_msg_header;

union
{
struct tc_coin_pulse_req_msg_s       tc_coin_pulse_req_msg;
struct tc_coin_pulse_pulse_interval_msg_s tc_coin_pulse_pulse_interval_msg;
}msg_types;
}__attribute__((packed));



struct  tc_coin_pulse_management_msg_s *x;

x -> burada ki listede sorun yok msg_types, tcpmm_task_comm_msg_header  çıkıyor. Fakat bu structların içini kod tamamlama ile göstermiyor. 3-4 gündür severek kullanıyordum ta ki bu problemle karşılaşana kadar.

x -> msg_types. " yazıldığında liste gelmiyor yani"
Başlık: Ynt: Keil utanci - Coocox
Gönderen: MuratUrsavas - 20 Haziran 2014, 09:52:42
Merhaba,

Struct içeriğini kod tamamlama ile göstermeme iki durumda ortaya çıkabiliyor. Birincisi complex preprocessor tanımlamaları (değişken tnaımlamanız bir #ifdef #endif içinde bulunuyorsa) ve ikincisi de parserdaki hatalı durumlar. Parser durumu projeye sağ tıklayıp "Reparse" ederek çözülebiliyor ancak preprocessor için geliştirici halen çalışmaya devam ediyor (Bkz. Ticket #11)

@AsHeS,

Bu durumun bence bir incelenmesi gerekiyor. Konuyu önce ben de bir deneyim, sorun çıkarsa EB forumlarında buna bir bakalım.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: MuratUrsavas - 20 Haziran 2014, 10:11:04
@AsHeS,

Aynen senin kodu denedim. Kod tamamlama problemsiz bir şekilde çalıştı ve tüm listeler geldi. Sizde gelmiyor olması bahsettiğim durumlardan biri ile alakalı olabilir.

Not: Hemen bir konu yüzünden kullandığınız yazılımdan soğumayın :) Maalesef mükemmel yazılım yoktur. Sizin işinize en çok yarayan, olabildiğince en iyi vardır.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: memo333 - 20 Haziran 2014, 10:15:55
Alıntı yapılan: MuratUrsavas - 19 Haziran 2014, 23:14:26
Not: Kod yönetim sisteminde benim tercihim Mercurial (Hg)'dır.

şu konuya bir türlü kafam basmadı.. Git ne SVN ne Mercurial ne hangisi nereye kim kuruyor ne oluyor..

ben klasik projeX-yilaygün-stabil.rar ... bu yani..
Başlık: Ynt: Keil utanci - Coocox
Gönderen: X-Fi - 20 Haziran 2014, 10:23:08
Alıntı yapılan: MuratUrsavas - 19 Haziran 2014, 23:14:26
Not: Kod yönetim sisteminde benim tercihim Mercurial (Hg)'dır.

Hocam bu sözünüze istinaden size bir soru sormak istiyorum tortoisehg de .hgignore file oluşturdum bu dosya içerisine "syntax: glob" altına uzantıları ekliyorum ignore ediyor ancak sorun şu ki ben ignore etmeden bir dosyasının serverda tutulup versiyonlamaya dahil edilmemesini istiyorum bunu yapamadım.

"syntax: glob"  ve "syntax: regexp" ikisini de denedim istediğim olmadı siz nasıl yapıyorsunuz.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: Seckin ALAN - 20 Haziran 2014, 10:52:06
git kullanıyorum aktif olarak
memo333, klasik tutmak çok iyi bir yöntem değil. Bence git kullanmayı öğrenmeyi dene. Özel repolar için bitbucket veya kendiniz gitolite kurabilirsiniz.

Başlık: Ynt: Keil utanci - Coocox
Gönderen: MuratUrsavas - 20 Haziran 2014, 11:27:06
@memo333,

Aslına bakarsanız kod yönetim sistemi tamamen bir başka başlık altında uzun uzadıya konuşulması gereken bir şey. Hatta fırsat olsa bunu bir başka kitap konusu olarak hazırlamak isterdim. Bu çok önemli bir şey ve üniversitelerde mutlaka öğretilmesi gereken bir konu. Gelin görün ki üniversitelerde maalesef sahada işe yarayacak bir şey öğretildiğini görmedim. Bilmiyorum belki kıdemli bir mühendis olmamdandır, umarım bu günlerde daha iyidir diyelim. (Gerçi iş görüşmesi için gelen yeni mühendislerden anladığım kadarı ile durum hala aynı).

Kod yönetim sistemini kısaca özetlememiz gerekirse gelişimin istediğiniz her anının bir fotoğrafı çekilip bir kenara kaldırılıyor ve ekibin diğer kalanı ile paylaşılıyor. Böylece tam bir geçmişiniz oluyor ve geliştirme aşamasında geçmişe dönük bir çok şeyi takip edebiliyorsunuz.

Şu hepimizin başına gelmiştir. Proje çalışıyordur, sonra bir özellik ekleriz, bir diğerini, bir diğerini aradan bayağı zaman geçmiştir ama eklediğimizden hariç tamemen alakasız ve az göz önünde olan bir özelliğin çalışmamaya başladığını görürüz. "Ama ben buna hiç bir şey yapmadım ki? Ne ara bozmuş olabilirim?" sousu size de çok tanıdık geldi değil mi? İşte bu anda misal Mercurial ile geriye dönebilir, hangi aşamada bunu bozduğunuzu tespit edebilir, bir yama oluşturup en son sürüme birleştirebilirsiniz (merge). Yıllar sonra bile bunu böyle yaptığınızı görebilirsiniz.

@X-Fi,

"Syntax: glob" demek yok sayılacak dosyaları "dosya sistemi formatında yazacağım" demektir. "regexp" ise expression yani ifade şeklinde yazacağım demektir. Kompleks yoksayma işlemlerini bu şekilde yapabilirsiniz.

Örneğin reponun root klasöründe bulunan "kod.txt" dosyasını direkt bu ismi "Syntax: glob" satırının altına ekleyerek yapabilirsiniz. Bu commit sırasında snapshot içine o dosya alınmayacaktır. Push ettiğinizde de zaten snapshotta olmadığı için sunucuya da gönderilmeyecektir. Eğer dosyanız bir klasör altında ise Windows yerine *nix tarzını kullanarak "/" ayıracını kullanın. Eğer örneğin çıktı klasörünüzün içeriğinin tamamını yoksaymak istiyorsanız (misal "obj" klasörü) hgignore dosyanız şunun gibi olsun

syntax: glob
kod.txt
obj/**


Seçkin Bey'in de söylediği gibi Git'de çok iyi bir kod yönetim sistemidir. Mercurial ve Git (Bazaar vs) Dağıtık Kod yönetim sistemleridir ve bugünden sonra tercih etmeniz gereken sistemlerdir. SVN, CVS, SourceSafe gibi merkezi kod yönetim sistemleri yine işinizi görecekse de ileri seviyelerde karşılaşabileceğiniz bazı senaryolardan dolayı tercih etmemenizi öneriririm.

Son bir hatırlatma, illaki komut satırı kullanırım demiyorsanız mutlaka "Tortoise*" kullanmanızı tavsiye ederim. Bu şekilde hem dosya içeriklerinin tam olarak ne olması gerektiği ile uğraşmazsınız, arayüz sizin için halleder.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: E3A4 - 20 Haziran 2014, 11:56:17
Murat hocam bilgileriniz için teşekkürler.Farklı konularda birkaç sorum daha var , EB ve Arm hakkında fakat sitenizde hala sıkıntı sürmekte mailinize ulaşamadım konuyu da bölmek istemedim. Size nasıl ulaşabilirim?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: AsHeS - 20 Haziran 2014, 12:54:37
Alıntı yapılan: MuratUrsavas - 20 Haziran 2014, 10:11:04
@AsHeS,

Aynen senin kodu denedim. Kod tamamlama problemsiz bir şekilde çalıştı ve tüm listeler geldi. Sizde gelmiyor olması bahsettiğim durumlardan biri ile alakalı olabilir.

Not: Hemen bir konu yüzünden kullandığınız yazılımdan soğumayın :) Maalesef mükemmel yazılım yoktur. Sizin işinize en çok yarayan, olabildiğince en iyi vardır.
Header de değişken tanımlama yapmadım ama diyelim ki fonksiyona geçilen değişkense sıkıntı çıkarıyor. Hiçbir kod tamamlama çalışmıyor değişkeni de görmüyor kod tamamlamada.
Dediklerinizi deneyeceğim eve geçince.

Misal  abc_fon(struct  tc_coin_pulse_management_msg_s   *x)
{
     x -> msg_types. //"burada gelmiyor."
}
Başlık: Ynt: Keil utanci - Coocox
Gönderen: X-Fi - 20 Haziran 2014, 14:29:40
Alıntı yapılan: MuratUrsavas - 20 Haziran 2014, 11:27:06
@X-Fi,

"Syntax: glob" demek yok sayılacak dosyaları "dosya sistemi formatında yazacağım" demektir. "regexp" ise expression yani ifade şeklinde yazacağım demektir. Kompleks yoksayma işlemlerini bu şekilde yapabilirsiniz.

Örneğin reponun root klasöründe bulunan "kod.txt" dosyasını direkt bu ismi "Syntax: glob" satırının altına ekleyerek yapabilirsiniz. Bu commit sırasında snapshot içine o dosya alınmayacaktır. Push ettiğinizde de zaten snapshotta olmadığı için sunucuya da gönderilmeyecektir. Eğer dosyanız bir klasör altında ise Windows yerine *nix tarzını kullanarak "/" ayıracını kullanın. Eğer örneğin çıktı klasörünüzün içeriğinin tamamını yoksaymak istiyorsanız (misal "obj" klasörü) hgignore dosyanız şunun gibi olsun


Hocam ignore edilmiş dosyayı hala server a atamıyorum forget yaptığımda da serverdakini siliyor.

Sanırım ben size sorunu tam anlatamadım.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: MuratUrsavas - 20 Haziran 2014, 15:14:21
@X-Fi,

"Ignore" etmenin amacı zaten dosyanın lokalde kalması ve sürüm kontrolüne geçmemesi, dolayısı ile sunucuya taşınmamasıdır. Yani olması gerektiği gibi çalışıyor. Ancak bir süre sonra o dosyanın takip edilmesini isterseniz de .hgignore dosyasından dosya satırını silmeniz ve kaydetmeniz yeterli. Commit yapıp push yaptığınızda son sürümde uzak sunucuda görülecektir. Ancak unutmayın eski sürümlere dönüldüğünde o dosya görülmez.

Ama sürüm takibi yapmayıp yinede dosyayı sunucuya göndereyim diyorsanız bunu başka kanallardan yapmak zorundasınız. Yine o dosya reponuzu klonlayan kişilere gitmeyecektir, sizin kullandığınız farklı kanalı kullanarak onlar erişebilir.

Ancak o farklı kanal bence çok riskli olur çünkü reponuzu da başkalarına açmış olursunuz ve risk oluşturur.

Sürüm kontrolü kullanmadan eğer büyük bir doküman paylaşacaksanız bir wiki ya da ftp sistemi kurabilirsiniz. FTP ya da dosya sistemi tavsiye etmem çünkü genellikle ekipler o bölgeleri çok hızlı bir şekilde kirletir ve bir süre sonra kullanılamaz hale getirir.

@AsHes,

Senaryoyu anladım, aynen senin dediğin gibi denedim çalışıyor aşağıdaki ekran görüntüsünde bunu görebilirsiniz.

(http://s28.postimg.cc/tcaggj1ux/EBCode_Comp.jpg) (http://postimg.cc/image/tcaggj1ux/)

Gördüğüm kadarı ile sizde olmamasının sebebi boşluk. x değişkeninden sonra ok işareti için boşluk bırakıyorsunuz. Bunu yapmayın,  o zaman kod tamamlama çalışmaz.

@erkanakarcay,

Soruları forumda sormanız daha iyi olur, şu an tüm forumu aktif olarak takip etmiyorum ancak burada yeni açtığınız konuların bağlantılarını verirseniz elimden geldiğince onları da cevaplamaya çalışırım. Onun dışında özel mesaj da atabilirsiniz ancak hala onaylı bir üye olmadığım için cevap veremiyorum. (Niye bu kadar uzun sürdü ona da anlam veremedim, biraz sinir bozucu).
Başlık: Ynt: Keil utanci - Coocox
Gönderen: X-Fi - 20 Haziran 2014, 15:37:28
Anlaşıldı hocam teşekürler. Yapmak istediğim şey, makefile kullanmadan .uvopt ve .uvproj dosyalarını serverda tutmaktı çünkü bu dosyalar IDE her kullanıldığında kayıtlar tutuyor istenmeyen bir durum oluşturuyordu.

Çözümü düşündüğüm gibiymiş iyi çalışmalar.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: MuratUrsavas - 20 Haziran 2014, 16:42:26
Ben prensip olarak bu dosyaları da (proje dosyaları) sürüm kontrolünde tutuyorum. Çünkü projeye yeni bir arkadaş geldiğinde ya da bir başka bilgisayarda çalışmaya başladığımda tekrar tekrar proje oluşturmak gerekmiyor böylece. Ayrıca proje dosyaları çoğu zaman o anın doğru tanımlamalarını da içeriyorlar dolayısı ile sadece kod dosyalarını tutmak yeterli olmuyor.

Benim tavsiyem sizin de bu dosyaları takip etmenizdir (debug için kullanılan geçici dosyalardan bahsetmiyorum, yalnızca projeyi berlileyen dosyalardan bahsediyorum.)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: AsHeS - 20 Haziran 2014, 19:32:28
Alıntı yapılan: MuratUrsavas - 20 Haziran 2014, 09:52:42
Merhaba,

Struct içeriğini kod tamamlama ile göstermeme iki durumda ortaya çıkabiliyor. Birincisi complex preprocessor tanımlamaları (değişken tnaımlamanız bir #ifdef #endif içinde bulunuyorsa) ve ikincisi de parserdaki hatalı durumlar. Parser durumu projeye sağ tıklayıp "Reparse" ederek çözülebiliyor ancak preprocessor için geliştirici halen çalışmaya devam ediyor (Bkz. Ticket #11)

@AsHeS,

Bu durumun bence bir incelenmesi gerekiyor. Konuyu önce ben de bir deneyim, sorun çıkarsa EB forumlarında buna bir bakalım.

Hocam şimdi dediklerinizi denedim bütün struct tanımlamalarım (struct instance etme değil) her zaman header file da bulunur. Dediğiniz yöntemi uyguladım.Fakat fonksiyona geçilen parametre de hala parametre gelmiyordu. Değişken gönderimini eski standarda göre yaptım sıkıntı kalmadı.

static void ss(tc_led_manage_file_ptr)
struct tc_led_management_msg_s *tc_led_manage_file_ptr;
{
struct tc_led_management_msg_s *tc_led_man_msg_file_ptr;


while ( (uint8_t*)EMPTY != tc_read_msg_for_task(TC_LED_MANAGEMENT_TASK_ID) )
{

tc_led_manage_file_ptr-> //"boyle olunca problem kalmiyor ama yeni tipte maalesef gelmiyor."
}
}


Edit: Yine bug buldum bu konuda tad vermedi Em::Blocks geliştirilmesi lazım.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: MuratUrsavas - 20 Haziran 2014, 21:49:42
EB bence de mükemmellikten uzak. Ancak zaten kimsenin de böyle bir iddiası yok. Benim için şu anda en büyük problem preprocessor yorumlaması. Eğer o problem ortadan kalkarsa gömülü yazılıma kullandığım en iyi IDE olacak.

Eğer daha iyi olmasını istiyorsanız bulduğunuz bugları EB'nin bug sistemine girebilirsiniz. Ne kadar hızlı bir şekilde ele alındığını gördüğünüzde emin olun sizde şaşıracaksınız. Bu şekilde bulduğum ve çözülmüş onlarca bug var.

Yine de beni memnun etmiyor diyorsanız, yapılacak en iyi şey bir başka IDE kullanmak olacaktır. Daha iyisini biliyorsanız öğrenmekten memnuniyet duyarım. Alternatif her zaman iyidir.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: AsHeS - 20 Haziran 2014, 22:26:08
Alıntı yapılan: MuratUrsavas - 20 Haziran 2014, 21:49:42
EB bence de mükemmellikten uzak. Ancak zaten kimsenin de böyle bir iddiası yok. Benim için şu anda en büyük problem preprocessor yorumlaması. Eğer o problem ortadan kalkarsa gömülü yazılıma kullandığım en iyi IDE olacak.

Eğer daha iyi olmasını istiyorsanız bulduğunuz bugları EB'nin bug sistemine girebilirsiniz. Ne kadar hızlı bir şekilde ele alındığını gördüğünüzde emin olun sizde şaşıracaksınız. Bu şekilde bulduğum ve çözülmüş onlarca bug var.

Yine de beni memnun etmiyor diyorsanız, yapılacak en iyi şey bir başka IDE kullanmak olacaktır. Daha iyisini biliyorsanız öğrenmekten memnuniyet duyarım. Alternatif her zaman iyidir.

Daha iyisi kötüsü bu karşılaştırma yanlış istekler ve onların karşılanması önemli
Örneğin kendi durumumdan örnek vereyim,
1-)İç içe struct kullanımını pekçe bu sebepten kod tamamlama işimi çok kolaylaştırır zaten kendi işimde bu tip tamamlama özelliği olmayan bir IDE(zorunluluk, şirket kültürü vs..) ile çalışıyorum eve gelip aynı derdi çekmek mantıklı gelmiyor.
2-)Bütün structları header da tanımlar c dosyasında instance ederim. IDE'nin bununla derdi var diye kendi alışkınlıklarımı değiştiremem evde keyfe keder kod yazarken.
3-)#ifndef #define #endif ten oluşan header guard ı her headerda bulundururum bunun zaten istisnası bile olmaz.

Şimdi 3 ünü ele aldığımız zaman bunu başaran bir CoIDE vardı zaten kullanıyordum ama Em::Blocks ile 2.bahar denemesi yaptım ilkinde nedense arayüzü hiç sevmemiştim gayet iyi güzel derken bu struct hatası beni direkt soğuttu. Sizin önerdiğiniz reparse yöntemini 3-4 kerede tıklasam da maalesef eğer fonksiyona geçilen struct aktif oluyorsa(kod tamamlama bâbında) fonksiyon içinde tanımlanan structın ki gelmiyor. Eğer her ikisinin de tamamlaması gelinmesi isteniyorsa fonksiyona geçileni global ya da static ile dosya içerisinde global yapmak gerekiyor.
Açıkçası bug sistemine bunu ne diye gireceğimi pek bilemedim orada ki açıklamalar kısa kısa bu case i kısaca anlatmak kolay değil.
Edit:Bazen düzeledebiliyor. Bunu çözdüler mi 10 numara IDE.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: memo333 - 20 Haziran 2014, 23:45:38
Alıntı yapılan: MuratUrsavas - 20 Haziran 2014, 11:27:06
@memo333,

Aslına bakarsanız kod yönetim sistemi tamamen bir başka başlık altında uzun uzadıya konuşulması gereken bir şey. Hatta fırsat olsa bunu bir başka kitap konusu olarak hazırlamak isterdim. Bu çok önemli bir şey ve üniversitelerde mutlaka öğretilmesi gereken bir konu. Gelin görün ki üniversitelerde maalesef sahada işe yarayacak bir şey öğretildiğini görmedim. Bilmiyorum belki kıdemli bir mühendis olmamdandır, umarım bu günlerde daha iyidir diyelim. (Gerçi iş görüşmesi için gelen yeni mühendislerden anladığım kadarı ile durum hala aynı).


bu dönem üniversitede kısmi zamanlı görev aldım, durum pek iç açıcı değil, neyse..

bu git / mercurial konusunda bir iki sorum olacak: Ben kodu ne sıkılıkta yüklerim, ücretsiz ve kapalı olarak hangisi alan verir, bu konuyla ilgili ayrı bir kodlama öğrenmem gerekir mi?

Bu arada bugün ST'nin Grafik kütüphanesini derledim EM ile hiç bir sorun yok..
Başlık: Ynt: Keil utanci - Coocox
Gönderen: MuratUrsavas - 21 Haziran 2014, 14:10:35
@AsHes,

İlginç bir şekilde tüm beklentilerini sıkıntısız bir şekilde kullanıyorum. Header guard zaten EB'de dosya oluşturduğunda dahi standart olarak eklenir. İç içe struct benim de olmazsa olmazlarımdandır ve sorunsuz kullanmaktayım. Zaten senin söylediğin senaryoyu denediğimde problemsiz bir şekilde kod tamamlama çalışmıştı. Ancak sende çalışmayan küçük bir proje oluşturabilirsen bunu bende denemek çalışmıyorsa da bu hatayı düzelttirmek isterim.

@memo333,

Git Mercurial ve diğerleri bunların hiç biri normalde bir proje alanı vermezler çünkü bunlar yalnızca sistemdir. Ancak bu sistemleri kullanan servis sağlayıcılar vardır (bitbucket, github, sourceforge, google code vs gibi) Bazıları tek sistemle çalışırken bazıları birden fazla sistem sunar. Her bir servis sağlayıcının kendi şartları vardır, bunu ayrıyeten araştırmak lazım. Ancak genel olarak yükleme sıklığı gibi şartları olmaz, ya süre ya da kullanıcı sayısı sınırı olur. Genellikle bu sağlayıcılar açık kaynaklı projeleri ücretsiz barındırırlar.

Zaten kod yönetimi kullanmak için illada uzak sunucuya ihtiyacınız yoktur. Lokalde de takip ediyor olmak bir çok avantaj sağlar.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: picusta - 21 Haziran 2014, 14:46:30
@Ashes  typedef struct seklinde denesen yine oluyor mu ?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: AsHeS - 21 Haziran 2014, 14:51:00
Alıntı yapılan: picusta - 21 Haziran 2014, 14:46:30
@Ashes  typedef struct seklinde denesen yine oluyor mu ?

Onu denemedim ama struct-union vs bunları pek typedef etmem sonra ne tanımlamışım diye durmadan dosyalar arası gezmeyi sevmiyorum :).
Aç-kapa yapınca düzeliyor gibi oradan devam edicez artık .
Başlık: Ynt: Keil utanci - Coocox
Gönderen: yldzelektronik - 24 Haziran 2014, 08:14:38
Murat hocam dün biraz denedim.Stm32f4 discovery kit ile deneme yapmak istedim.İlk önce emblocks sitesindeki blinky örneğini debug ettim sorunsuz debug yaptım.Bir de kendi yazdığım programı debug etmek istedim bir iki debugdan sonra debug çakılmaya başladı.

Kurulum ile alakalı özellikle yapmamız gereken bir şeyler mi var?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: yldzelektronik - 24 Haziran 2014, 15:03:53
Bir de debug esnasında kendi eklemek istediğim hiçbir değişkeni watch ekranında değerlerini görüntüleyemiyorum.Watch listesine ekleniyor ancak içeriğini görüntüleyemiyorum.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: X-Fi - 24 Haziran 2014, 16:00:56
Hocam watch ekranında izleme işlemini yapamaması normal. Keilde update windows seçeneği var seçerseniz periyodik olarak hepsini yeniliyor IARda ise register ı liveWatch olarak eklerseniz o register yine periyodik olarak yenilenir. İki özellikten birini yakında eklerler ama olmazsa olmaz birşey değil çünkü veri okumak için en doğru işlem debug modu durdurmaktır.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: AsHeS - 24 Haziran 2014, 16:20:52
Run-time da programı durdurmadan değişkenleri görmek istiyorsanız. Bir adet çalıştığına emin olduğunuz non-blocking tipte (İşlemciyi beklemeden gönderme yapabilecek ör:DMA, timer scanner vs..) fonksiyon tasarlayın. Sonrada __FILE__ ve __LINE__ makrolarınıda katarak bu hatta datanızı yerleştirin ve teraterm gibi bir programda izleyin.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: yldzelektronik - 24 Haziran 2014, 16:38:56
Ben bu bahsettiğim durumu debugu adım adım yaparken yaşıyorum.şöyle;


(http://s16.postimg.cc/4dgu8o5zl/Ads_z.jpg) (http://postimg.cc/image/4dgu8o5zl/)
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 24 Haziran 2014, 17:03:39
Yildizelk nin sorununa cevap Degil ama , debugda sistem calisirken degerleri gormek icin semihost u arastiriniz. Bir aralar yapmistim
Başlık: Ynt: Keil utanci - Coocox
Gönderen: AsHeS - 01 Temmuz 2014, 07:59:37
Em::Blocks'ta .lib uzantılı kütüphaneyi nasıl ekler ve kullanırız ?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: NaMcHo - 06 Temmuz 2014, 11:06:31
Alıntı yapılan: AsHeS - 01 Temmuz 2014, 07:59:37
Em::Blocks'ta .lib uzantılı kütüphaneyi nasıl ekler ve kullanırız ?

Build Options->Linker Settings->Librarys e yapıcaksınız eklemeyi hem debug hemde release için.

Not:Standart matematik kutuphanesini "math.h" kullanmak için buraya m yazmanız yeterli.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: stalker_arm - 25 Ekim 2014, 11:53:42
C:\Program Files (x86)\GNU Tools ARM Embedded\4.8 2014q3\arm-none-eabi\bin  -- arm.gcc'yi ekleyemiyorum incorrect toolchain path hatası alıyorum nasıl düzeltebilirim?
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 25 Ekim 2014, 19:11:30
Bin klasorunu gostereceksiniz. Exe yi degil
Başlık: Ynt: Keil utanci - Coocox
Gönderen: stalker_arm - 26 Ekim 2014, 10:35:32
Muhittin hocam yukarıda da gösterdiğim bin klasörünü gösteriyorum ancak olmuyor
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 26 Ekim 2014, 14:04:41
hocam
https://launchpad.net/gcc-arm-embedded indirdiğiniz ve sonrasında kurduğunuz dosya yoludur. bende q2 var, q3 ü indirip bakayım.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: muhittin_kaplan - 26 Ekim 2014, 19:05:33
Problemsiz Tanıtıyorum.
Başlık: Ynt: Keil utanci - Coocox
Gönderen: stalker_arm - 26 Ekim 2014, 22:34:17
hocam böyle bir hata aldım

BUILD FAILED
Output filename conflict: main.o would be produced from C:\CooCox\CoIDE\workspace\example_2\example\main.c and main.c
Total time: 0 seconds
Başlık: Ynt: Keil utanci - Coocox
Gönderen: stalker_arm - 26 Ekim 2014, 23:17:01
tamam hocam sildim main'lerden birini şimdide startup dosyası eksik

mesaj birleştirme:: 26 Ekim 2014, 23:43:28

hocam coocox'ta sizin dht11 örneğini inceliyorum ancak undefined reference to "`log'
       [cc] collect2.exe: error: ld returned 1 exit status" hatası veriyor math.h eklenmesine rağmen
Başlık: Ynt: Keil utanci - Coocox
Gönderen: stalker_arm - 27 Ekim 2014, 17:15:36
hocam coocox'ta sizin dht11 örneğini inceliyorum ancak undefined reference to "`log'
       [cc] collect2.exe: error: ld returned 1 exit status" hatası veriyor math.h eklenmesine rağmen