ana sayfa > ARM, STM32, STM32F4, Yazılım > STM32F429I Discovery Keilde Proje oluşturma.

STM32F429I Discovery Keilde Proje oluşturma.

Pazartesi, 22 Ara 2014 yorum ekle yorumlara git
STM32F429I Discovery Keilde Proje oluşturma.

Merhaba Arkadaşlar,

Bu yazımda STM32F429I-Discovery’ye sıfırdan proje oluşturma konusuna değineceğim. Adım adım resimlerle anlatacağım. Bu kart ile ilk kez uğraşacaklar için yön verici nitelikte olur diye düşünüyorum.

STM32F429I Discovery ST’nin F4 serisi için STM32F4-Discovery kartından sonra çıkarttığı en son kartı. Bir önceki F4-Discovery’ye göre daha iyi bir işlemciye ve en iyisi harici 8Mbyte SDram ve 2.8″ 320×240 çözünürlüğe sahip bir dokunmatik lcd barındırmakta. Ayrıca kart üzerinde yine ST’nin L3GD20 3 eksen Gyro var. İleriki zamanlarda bu çipin kullanımına da değineceğim.

STM32F4’de STM32F407VGT6 mikroişlemcisi bulunmaktayken STM32F429’da ise STM32F429ZIT6 mikroişlemci var. 144 Pinli olan bu mcu 180Mhz gibi hatrı sayılır bir hızda çalışmakta.

Kartı Türkiyede Çizgi Tagem vasıtasıyla temin edebilirsiniz. Fiyatı 35$ civarı. Açıkçası fiyat performans açısından gerçekten mükemmel bir kit.

http://market.cizgi.com.tr/product/education/stm-stm32F429I-discovery

Kartımız işte budur :)

Kartın özellikleri aşağıdaki gibi.

Key Features

  • STM32F429ZIT6 microcontroller featuring 2 MB of Flash memory, 256 KB of RAM in an LQFP144 package
  • On-board ST-LINK/V2 with selection mode switch to use the kit as a standalone
  • ST-LINK/V2 (with SWD connector for programming and debugging)
  • Board power supply: through the USB bus or from an external 3 V or 5 V supply voltage
  • 2.4″ QVGA TFT LCD
  • SDRAM 64 Mbits
  • L3GD20, ST MEMS motion sensor, 3-axis digital output gyroscope
  • Six LEDs:
  • LD1 (red/green) for USB communication
  • LD2 (red) for 3.3 V power-on
  • Two user LEDs:LD3 (green), LD4 (red)
  • Two USB OTG LEDs:LD5 (green) VBUS and LD6 (red) OC (over-current)
  • Two pushbuttons (user and reset)
  • USB OTG with micro-AB connector
  • Extension header for LQFP144 I/Os for a quick connection to the prototyping board and an easy probing

Kaynak : http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1848/PF259090

Şimdi Proje oluşturmaya başlamadan önce bazı dosyaları kütüphaneleri indirmemiz gerekiyor.

Eğer hala bilgisayarınızda keil kurulu değil ise aşağıdaki linkten en son sürümünü indirip bilgisayarınıza kurun. En son 5.13 sürümü çıkmıştı. Şuanda bende onu kullanıyorum.

http://www.keil.com/arm/mdk.asp

Aşağıdaki linkte Download butonuna basınca bir sayfa açılacak ve bir form doldurmanız istenecek. Formu düzgünce doldurup gönderdikten sonra indirme linki gelmesi gerekiyor. Keil Trial modunda 32K ya kadar ücretsiz derleme yapıyor.

Keili indirip kurduğunuzu varsayarsak şimdi diğer işlemlere geçelim. Keil 5 serisinden sonra Software Pack Sistemine geçti. Peki bu ne anlama geliyor? Şöyle. Keil 4 serisinde(en son 4.72 vardı) keili indirip kurduğunuzda desteklediği bütün mcu’lar için kütüphanelerini ve Examples’lerini yanında taşımaktaydı. Şimdi ise keili indirdikten sonra kullanıcı hangi mcu’yu kullanacaksa o mcu’ya ait paketi indirip projesinde kullanabilmekte.

ST için F0, F1, F2, F3 ve F4 olmak üzere paketler yapılmış. Bir F4 serisi ile oynayacağımız için bu paketi bilgisayarımıza indiriyoruz.

Bu işlemi yaptıktan sonra kullanacağımız işlemciye ait paket bilgisayarımıza inmiş oluyor. Ben yüklediğim için Up to Date yazıyor. Normalde kurulu değilse Instal Yazar.

Şimdi proje oluşturmaya başlamadan önce olmazsa olmaz bazı dosyalarımız kütüphanelerimiz var.

Sıralarsak Eğer

  1. CMSIS library
  2. STM32F4xx_StdPeriph_Driver
  3. STM32F429I-Discovery

CMSIS Library ARM firmasının Cortex-M çekirdekleri için hazırlamış olduğu bir kütüphanedir.

Ayrıntılı bilgi : http://www.arm.com/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php
STM32F4xx_StdPeriph_Driver klasörü ise ST firmasının kendi mikrodenetleyicileri için hazırlamış olduğu standart donanım kütüphanesi.

STM32F429I-Discovery klasöründe ise elimizdeki kart için ST nin hazırlamış olduğu donanım sürücüleri bulunmakta. Bunlar ToucController kütüphanesi, LCD kütüphanesi, sdram kütüphanesi, Gyro kütüphanesi şeklinde sıralanabilir.

Bu dosyaları Yandex Hesabıma yükledim. Buradan indirebilirsiniz.

Ayrıca aşağıdaki linktende indirebilirsiniz

STM32F429 discovery firmware package

Şimdi sırayla işlemlere başlayalım.

1.  İlk önce Boş bir klasör oluşturalım kendimize. Bu klasör bizim proje klasörümüz olsun.
2.  Keilde Project>New uVision Project  Sekmesine tıklıyoruz. Açılan pencerede projenize bir isim verip proje klasörüne kaydedin. Ardından aşağıdaki gibi bir sayfa açılacak.<

Buradan STM32F429ZIT6’yı seçiyoruz. Dikkat edin eğer Software Pack’ler içerisinden STM32F4 serisini yüklemeseydik kullanacağımız işlemciyi bu listede bulamazdık.
Ok dedikten sonra Manage Run-Time Environment adında başka bir sayfa açılacaktır. Bu sayfada eğer kullanacaksanız çeşitli kütüphaneleri (CMSIS, Rtos vs) doğrudan projenize ekleyebiliyorsunuz. Biz kendimiz bu klasörleri ekleyeceğimiz için kullanmıyoruz. Dolayısıyla Ok butonuna basıp geçin.

3.  Şimdi Proje klasörümüze indirdiğimiz library dosyasını kopyalayın. Ayrıca proje klasörünün içine User diye yeni klasör açın. Bu klasöre kendi source dosyalarımızı ekleyeceğiz. Sonuç olarak proje klasörünün içinde aşağıdaki gibi dosyalar olmalı

4.  Devam edelim. Proje klasöründe işimiz bitti. Sıra geldi proje ağacını oluşturmaya. 2. işlemin sonunda Ok dedikten sonra boş bir sayfa açılacaktır. Sol tarafta proje ağacında Target 1 Altında Source Group 1 şeklinde alt bir dal bulunmaktadır. İsterseniz eğer Target 1 üzerine çift tıklayarak adını değiştirebilirsiniz. Ben New_Proje dedim. Şimdi Bu New_Proje altında 4 adet alt source group’a ihtiyacımız var. Ben bunlara sırasıyla Startup, STM32F429I-Discovery, STM32F4xx_StdPeriph_Driver ve User isimlerini verdim. Bu alt dalları veya Source Group’ları oluşturmak için Target 1 veya benim gibi Target 1’in ismini New_Proje yaptıysanız eğer buraya sağ tıklayıp Add_Group…  Seçeneği ile dediğim isimlerde alt gruplar oluşturun. İşlem sonunda proje ağacınız aşağıdaki gibi olmalı.

5.  Sıra geldi bu oluşturduğumuz bu Source Grupları doldurmaya. Startup ile başlayalım. Startup içerisine startup_stm32f429_439xx.s dosyasını eklememiz gerekmektedir. Bu dosya proje klasörümüzün içinde Library / CMSIS / Device / ST / STM32F4xx / Source / Templates / arm /

klasörünün içinde bulunmakta. Oluşturduğunuz Startup Source Gurubu üzerine çift tıklayarak belirttiğim adresteki startup_stm32f429_439xx.s dosyasını seçin.

6.  STM32F429I-Discovery içerisine Yine Library/STM32F429I Discovery klasörü içerisindeki fonts.c hariç bütün .c uzantılı dosyaları eklememiz gerekiyor. Bu dosya içerisinde kart üzerindeki donanımın sürücüleri bulunmakta.

7.  Aynı işlemi oluşturduğumuz STM32F4xx_StdPeriph_Driver source group içerisinede yapacağız. Library / STM32F4xx_StdPeriph_Driver / src klasörü içerisinde stm32f4xx_fsmc.c hariç diğer bütün .c dosyalarını ekliyoruz.

Bu işlem sonunda proje ağacımız resimdeki gibi olmalı.

8.  Şimdi User içeriğini dolduralım. İlk önce File>>New ile boş bir sayfa açıp bu sayfayı main.c adında oluşturduğumuz user klasörü içerisine kaydediyoruz. Ardından proje ağacında User üzerine çift tıklayarak oluşturduğumuz bu main.c dosyasını User Soruce group’u içerisine ekliyoruz.

9.  User Source Group içerisne eklememiz gereken üç dosya daha vardır. Birincisi stm32f4xx_it.c ve  stm32f4xx_it.h dosyalarıdır. Bu dosyalar içerisinde interrupt alt fonksiyonları bulunmaktadır. İkinci dosya ise system_stm32f4xx.c dosyasıdır. Bu dosyadada işlemcinin OSC ayarları, Peripheral Bus frekansları gibi ayarlar yapılır.  Sonuncu ise stm32f4xx_conf.h dosyasıdır. Bu dosyadada yine configürasyon ayarları yapılır.  Bu dosyaları da Buradan indirelim. İndirdikten sonra çıkan dosyaları User klasörü içerisine kopyalayın. Aynı şekilde proje ağacında da User Source Group altındada stm32f4xx_it.c ve system_stm32f4xx.c dosyalarını tanıtın. Proje ağacında işimiz bu kadar.

10.  Şimdi Options for Target Butonuna basıyoruz. Target ayarlarını yapacağız. Açılan sayfada C++ sekmesine geliyoruz. Burada Preprocessor Symbol altında Define kutucuğuna aşağıdaki tanımlamaları yazın.

USE_STDPERIPH_DRIVER,STM32F429_439xx,USE_DEFAULT_TIMEOUT_CALLBACK

11.  Yine C++ Sekmesi altında Include Paths bölümüne keile projeyi derlerken hangi klasörler içerisine bakacağını göstereceğiz. Eklenmesi gereken klasörler resimdeki gibidir.

Yapılacak işlemler bu kadar. Main programımızı yazıp Build Tuşuna basıyoruz. İlk derleme biraz uzun sürecektir.

Eğer işlemleri eksiksiz yaptıysanız programınız resimdeki gibi hatasız derlenecektir. :) Şimdi ufak bir program yazalım ve hemen kitte deneyelim. Program basit olsun LCD de birşeyler yazıp kit üzerindeki ledleri yakıp söndürelim.  Bu arada LCD init işleminin nasıl yapıldığını görmüş oluruz. Bununla ilgili örnekler STM32F429 discovery firmware paketini indirdiyseniz eğer içerisinde mevcut.

Test programımız aşağıdaki gibi

Kısa bir program. Bu programı derliyoruz. Problemsiz bir şekilde derlenebilmesi gerekir.
Sıra geldi programı kite yüklemeye. Son olarak bu kısma değineyim. Kit üzerinde STlink Mevcut. Programı ST link üzerinden yükleyeceğiz. Eğer kartı ilk kez bilgisayara takıyorsanız STlink Driverini yüklemeniz gerekli.
Aşağıdaki linkten STlink yazılımını indirip bilgisayarınıza kurun.
http://www.st.com/web/catalog/tools/FM146/CL1984/SC724/SS1677/PF251168?sc=internet/evalboard/product/251168.jsp

Aygıt Yöneticisinden STlink driverini tanıttıktan sonra keilde birkaç ayar yapmamız gerekiyor.
Tekrardan Options for Target menüsüden Debug bölümüne gelip ayarları aşağıdaki gibi yapın.

Son olarak yine yukarıdaki resimde 4. adım olan Settings butonuna basın. Tekrardan açılan pencerede Flash Download sekmesine gelip ayarları aşağıdaki gibi yapın.

STlink Ayarları bukadar Bundan sonra Doğrudan Load Tuşuna basıp programınızı yükleyebilirsiniz.
Ve sonuç :)

Evet İşlemleri adım adım takip ettiyseniz sizinde bu şekilde bir sonuca varmanız gerekir. :)

İyi çalışmalar

  1. ismail güler
    Perşembe, 08 Oca 2015 zamanında 22:49 | #1

    emeğine sağlık gerçekten mükemmel bir anlatım olmuş.

  2. Ferhat YOL
    Perşembe, 08 Oca 2015 zamanında 23:38 | #2

    Teşekkür ederim

  3. özcan
    Pazar, 11 Oca 2015 zamanında 00:22 | #3

    devre seması yokmu örnek olarak

  4. Ferhat YOL
    Pazar, 11 Oca 2015 zamanında 01:27 | #4

    özcan :

    devre seması yokmu örnek olarak

    Hangi şemadan bahsediyorsunuz? Kartın şemasımı?

  5. Mehmet
    Cumartesi, 17 Oca 2015 zamanında 11:44 | #5

    Merhaba;
    ST-LINK connection error.
    Error: Flash Download failed – Target DLL has been cancelled
    hatası alıyorum sürekli.önce reset sonra load a bas,under reset ile çalıştır gibi şeyleri denedim ama çözümü bulamadım.yardımlarınızı bekliyorum.

  6. Ferhat YOL
    Cumartesi, 17 Oca 2015 zamanında 19:22 | #6

    @Mehmet bey ST-Link Ayarları tam olarak doğru yapıldımı? En son verdiğim resimdeki ayarlar yapımazsa bahsettiğiniz gibi bir uyarı alabilirsiniz.

  7. Perşembe, 22 Oca 2015 zamanında 23:21 | #7

    linking…
    Program Size: Code=1188 RO-data=460 RW-data=20 ZI-data=1636
    “.\Objects\ilkdeneme.axf” – 0 Error(s), 1 Warning(s).

    Build sekmesine basınca yukarıdaki hata ile karşılaşıyorum? Nerde hatayapıyorumdur acaba.

    • Ferhat YOL
      Perşembe, 22 Oca 2015 zamanında 23:28 | #8

      Hata yok. Programın derleniyor. Sadece ufak bir uyarı alıyorsun. Bu uyarının da yüzlerce sebebi olabilir. Derleme esnasında Build output penceresinde uyarının sebebini yazar. Verilen uyarıyı bulup buraya yazarsanız yorumda bulunabilirim.

  8. Perşembe, 22 Oca 2015 zamanında 23:50 | #9

    @Ferhat YOL
    Teşekkür ederim verdiğiniz cevap için. Eğer aynı sorunla karşılarsam buraya yazarım o uyarıyı. Birde ben size bir şey danışmak isterim. Bu bu kite yani Stm32F429i kitine yeni aldım. Yeni başladım bu işe acaba neler yapmalıyım buna hakim olmak için. Bildiğiniz kitap veya herhangi bir web sitesi var mı yararlı olacak ?

  9. Cuma, 23 Oca 2015 zamanında 15:06 | #10

    @hakan aydın
    User\main.c(29): warning: #1-D: last line of file ends without a newline

    uyarı buymuş Ferhat Bey. Nedir acaba bu ?

    • Ferhat YOL
      Cumartesi, 24 Oca 2015 zamanında 16:44 | #11

      Bu uyarının sebebini bir türlü anlamıyorum. Keil herhangi bir dosyada en alt satırda boşluk olmazsa bu uyarıyı veriyor. Sizinde main.c dosyasının en alt satırına bir adet boş satır ekleyin. Uyarı düzelecektir.

      Kaynak&Kitap konusunda birşey diyemem. Google en büyük kaynaktır. Ben hep onu kullanıyorum genellikle aradığımı buluyorum :)

  10. Cumartesi, 24 Oca 2015 zamanında 17:39 | #12

    @Ferhat YOL
    Ya ben takıldığım nokta, keil’de çok fazla kütüphane ekleniyor ve onları nasıl yaparım konusu üzerinde kaynak arıyorum zaten. :)

    Mesela bu ;
    User Source Group içerisne eklememiz gereken üç dosya daha vardır. Birincisi stm32f4xx_it.c ve stm32f4xx_it.h dosyalarıdır. Bu dosyalar içerisinde interrupt alt fonksiyonları bulunmaktadır. İkinci dosya ise system_stm32f4xx.c dosyasıdır. Bu dosyadada işlemcinin OSC ayarları, Peripheral Bus frekansları gibi ayarlar yapılır. Sonuncu ise stm32f4xx_conf.h dosyasıdır

    o kadar fazla iş var ki yapılacak asıl yazmak istediğim koda gelen kadar. İşte benim problemim burası bunu nasıl hallederim. :)

    Bir diğer sorumda şu size;USE_STDPERIPH_DRIVER,STM32F429_439xx,USE_DEFAULT_TIMEOUT_CALLBACK bunu neden yazıyoruz ?

    Buarada çok sağolsun bilgi verdiğiniz için :)

    • Ferhat YOL
      Pazartesi, 26 Oca 2015 zamanında 21:12 | #13

      Bu ilk kurulum dosyalarıyla sürekli işiniz olmayacak. Şunu unutmayın ki kullandığınız işlemci Pic16F84 değil. ST firmasının en baba işlemcilerinden biri. İçerisindeki donanımlar fazla olunca bunları yönetmek bir hayli zor bir iş. İşte bu yüzden işleri kolaylaştırmak adına STD Peripheral Library’i kullanıyoruz.
      Define kutucuğuna yazdığımız tanımlamalar ile Keil’e derleme esnasında bazı bilgiler veriyoruz. Kullanılan kütüphaneler, İşlemci vs…

  11. mehemmet
    Pazar, 22 Şub 2015 zamanında 17:27 | #14

    teşekkür ederim
    nihayet eksiksiz bir anlatım…

  12. mehemmet
    Pazar, 22 Şub 2015 zamanında 17:43 | #15

    while döngüsü olan ilk programı çalıştırdı
    yanlız test programında 1 hata verdi
    firmware den blink örneğini aldım
    örneği kendi ayarlarıyla derledim çalıştı,fakat bu yaptığımız ayarlamaya programı kopyala-yapıştır yaptım yine 1 hata verdi.

    şimdi ne yapabiliriz ?
    siz böyle uzuuunca anlattığınıza göre blink’teki ayarlamalar yeterli değil sanırım
    ?
    tesekkurler

  13. Ferhat YOL
    Pazartesi, 23 Şub 2015 zamanında 11:01 | #16

    Test programında aldığınız hata nedir?

  14. mehemmet
    Salı, 03 Mar 2015 zamanında 21:07 | #17
  15. mehemmet
    Pazar, 24 May 2015 zamanında 20:53 | #18

    merhabalar

    soylediklerinizi yaptım ancak şöyle bir hata alıyorum programda:

    startup_stm32f429_439xx.s: error: A1023E: File “STM32F429I-Discovery_FW_V1.0.1\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f429_439xx.s” could not be opened: No such file or directory

    nasıl çözeriz acaba ???

  16. mehemmet
    Pazar, 24 May 2015 zamanında 20:54 | #19

    bu arada
    bu bahsi gecen dosyayı keilin sitesinden indirdiğim firmware deki ile değiştirdim sonuç aynı

  17. Ferhat YOL
    Perşembe, 04 Haz 2015 zamanında 15:44 | #20

    Kusura bakmayın iş ve okul sebebiyle aşırı bir yoğunluk var üzerimde. Mesajınızı yeni gördüm.

    Verdiği hatada startup_stm32f429_439xx.s dosyasını bulamadığını söylüyor. 2 Seçenek var
    1. Dosya o dizinde bulunmuyor.
    2. Gösterilen dizin keilde tanıtılmamış olabilir. Yukarıda yazdığım yazıda 11. adımı kontrol edin.

  18. cengiz
    Cumartesi, 03 Eki 2015 zamanında 20:37 | #21

    merhaba kardeşim öncelikle agzına saglık cok verimli bir paylasım olmuş. Test programında ilk header dosyasını program bulamadıgından dolayı hata veriyor.

    “main.c(1): error: #5: cannot open source input file ” "stm32f4xx.h" “: No such file or directory”

    şeklinde bir hata. nedeni nedir?

  19. Ferhat YOL
    Pazartesi, 05 Eki 2015 zamanında 10:17 | #22

    Muhtemelen ilgili dizinde o dosyayı bulamıyordur.

  20. Cagatay
    Cumartesi, 17 Eki 2015 zamanında 22:49 | #23

    Harika…Başlangıç açısından süper bir uygulama olmuş.

  21. Salı, 08 Ara 2015 zamanında 15:56 | #24

    Çok güzel detaylı anlatılmış. Emeğinize sağlık hocam.

  22. Sinan
    Çarşamba, 30 Ara 2015 zamanında 14:57 | #25

    Gerçekten çok faydalı ve detaylı bir yazı olmuş. Çok teşekkür ediyorum. Keil ilk kurulumu gerçekten yeni başlayanlar için zor olan bir program, sayenizde sorunsuzca hallettim.

  23. hasan hüseyin
    Pazartesi, 02 May 2016 zamanında 22:20 | #26

    #include “stm32f4xx.h”

    int main()
    {
    while(1)
    {

    }
    }

    .\Objects\proje1.axf” – 43 Error(s), 0 Warning(s). h
    Target not created.

    bu hatanın nedeni ne yardımcı olabilirmisiniz

  24. Ferhat YOL
    Cuma, 06 May 2016 zamanında 09:56 | #27

    @hasan hüseyin
    Hasan bey proje adımlarını tekrar gözden geçiriniz.

  25. Pazar, 15 May 2016 zamanında 14:42 | #28

    0 Hata çok güzel bir anlatım eline emeğine sağlık

  26. mehmet
    Cumartesi, 24 Ara 2016 zamanında 22:09 | #29

    hocam ben stm32f746vg discovery board kullanıcam ancak keil de software package dan kütüphaneleri yüklememe rağmen yeni proje oluştururken listede hiçbir model mcu görünmüyor.Yardımcı olursanız sevinirim.

  27. Ferhat YOL
    Cumartesi, 24 Ara 2016 zamanında 22:50 | #30

    Software Pack paketleri yüklenmemiş gibi görünüyor. Bu işlemin doğru bir şekilde yapıldığına emin olun.

  28. Onurcan
    Çarşamba, 05 Nis 2017 zamanında 01:03 | #31

    Merhaba ferhat
    paylaştığın kodda şöyle birşey var
    LCD_DisplayStringLine(48," 1. Uygulama ");
    bunu ben
    LCD_DisplayStringLine(0,”STM32F429I”);
    olarak değiştirdim ama hala hata alıyorum. Sebebini biliyor musun

  29. Ferhat YOL
    Çarşamba, 05 Nis 2017 zamanında 21:48 | #32

    Yazım hatanız yok ise çalışması gerekir. Türkçe karakter olayına dikkat edin.

  1. şimdilik geri bağlantı yok