IAR ile STM8S – Giriş

  • 5 sene önce, Baran EKREM yazdı.
  • 19 Yorum
  • 5.481 Kişi Okudu

Bundan yaklaşık bir kaç ay önce STM8 programlamaya başlamak istiyordum fakat ST Visual Develop beni bu işten bir hayli soğuttu. Anlam verilemeyen derleme hataları ve eski IDE yapısı ile çok kullanışsız olduğunun farkına vardım. Kenarda duran STM8S leri denemek için IAR’I denemek istediğimde IDE rahatlığı, kod tamamlama, düzgün ve hızlı derleme, Debug yapma gibi özelliklerinin oldukça verimli olduğunu gördüm. Özelikle küçük projelerde kullanılan 8 Bit işlemciler fiyat konusunda kıyasıya yarışıyor. ST’nin STM32F1xx 32 bit olmasına rağmen çok ciddi fiyatlara satılıyor. Bu yüzden 8 bit kullanmak yerine daha ucuz olsun derseniz STM32 bile kullanabilirsiniz. Tabi STM8S ailesini inanılmaz uygun fiyatlara sattığı için şu sıralar Türkiye piyasasında artışta olduğunu görmek mümkün. Bu sebeple STM8S artık ciddi bir önem kazandı diyebiliriz. Lafı daha fazla uzatmadan proje oluşturmaya başlayalım.

Ben bu yazıda Aliexpressden aldığım küçük STM8S003F3P6 işlemcili kiti ve mini programlayıcıyı kullanacağım oldukça küçük ve kullanışlı olduklarını söyleyebilirim.

STM8S Mini Kit
giphy
Kullandığım mini programlayıcı. Bütün STM ailesini programlayabiliyor. Şiddetle tavsiye edilir !

STM Programlayıcı

IAR kurulumu bitirdikten sonra proje oluşturmayı ve ST’nin STM8S için geliştirdiği Standart Peripheral Library’yi projemize import etmeyi anlatacağım.

Öncelikle SPL kütüphanelerini şu siteden indiriyoruz : STM8S SPL

Proje oluşturmadan önce bir WorkSpace açarak başlayalım.

Oluşturduğumuz çalışma alanına proje açalım.

Burada STM8’i seçip bir C projesi açıyoruz. Bizim kullanacağımız STM8S SPL kütüphaneleri C için yazılmıştır.

Daha sonra kaydederek proje oluşturmayı tamamlayalım. Bir klasör açıp LED_Blink olarak kaydetmek yeterli olacaktır.

Yapacağımız ayarlar için projeye sağ tıklayıp “Options”‘a tıklıyoruz.

Şimdi proje ayarlarından Debug yapabilmemiz için Simulator kısmını ST-Link olarak ayarlayalım. Bunu yapmazsanız kodlarınız işlemciye yüklenmez sadece simülasyon olarak çalışır ayrıca.

Şimdi “General Options” kısmına gelerek işlemcimiz seçelim.

Şimdi Kütüphaneleri eklemek için indirdiğimiz  dosyada bulunan STM8S_StdPeriph_Lib\Libraries\STM8S_StdPeriph_Driver dizinin içindeki “STM8S_StdPeriph_Driver” dosyasını projemizin olduğu yere kopyalıyoruz.

Kopyalama işlemi tamamlandıktan sonra yine proje ayarlarından C/C++ -> Preprocessor sekmesinden kütüphanelerimiz bulunduğu dosyadaki “inc” dosyanını ve kütüphane dosyasını dizinlerini buraya ekliyoruz. Örnek olarak ;

Ve sol altta bulunan “Define symbols : (one per line)” kısmına işlemcimizi tanıtıyoruz.

Son olarak “stm8s_conf.h” isimli dosyayı projeye’nin olduğu dizine kopyalayarak proje oluşturmayı tamamlayabiliriz.. Bu dosyayı indirdiğiniz SPL’nin içinde örnekler kısmında bulabilirsiniz ben yine burada paylaşayım.

Artık çalışmak istediğimiz modülün “.c” uzantılı dosyasını projemize dahil ederek çalışmaya başlayabiliriz. Biz bu örnekte basit bir “LED Blink” yapacağımız için sadece “gpio” ütüphanesini eklememiz yeterli olacaktır. Bunun için yine projeye sağ tıklayıp “ADD” kısmından projemizin içine kopyaladığımız kütüphane dosyalarından “src” klasörünün içinden ekleyebiliriz.

Ve son olarak basit bir LED Blink kodu ile projeyi tamamlayalım.

Project->Rebuild All diyerek Build edip “Download and Debug” tuşuna basarak işlemcinize kodu yükleyebilir ve Debug yapabilirsiniz.

Tabi yükledikten sonra “Go” tuşuna basmayı da unutmayın. 🙂

Şimdilik bu kadar. Bir sonraki yazıda görüşmek üzere. Esen kalın !

  1. muhittin kaplan dedi ki:

    Hocam güzel paylaşımlar. Teşekkür ederim.

  2. Ogan dedi ki:

    STM8S Mini kitin üzerinde STM8S103F3P6 mikrodenetleyici var. Açıklamalarınızda STM8S003F3P6 olarak belirtmişsiniz. Yazım yanlışı mı, program hatalarından dolayı öyle mi seçilmeli?

    • Baran EKREM dedi ki:

      Sevgili Ogan bu mini kitlerden STM8S10F3P6 ve STM8S003F3P6 olmak üzere 2 çeşit var.
      Ben STM8S003F3P6 olanını kullandım. Resim burada temsilidir.

  3. emre dedi ki:

    #ifDef USE_FULL_ASSERT ne amaçla yazılmıştır. Teşekkür ederim.

  4. Abuzittin Naneli dedi ki:

    STM32 discovery board ile nasıl bağlantısı olması gerek ?

  5. Koray dedi ki:

    Merhaba Baran bey,
    Bu STM8S serisi için dokunanı okudum adım adım gerçekleştirdim.

    C/C++ -> Preprocessor sekmesinden kütüphaneye ulaşıyorum “inc” dosyasının içeriğini görmesi lazım ama görmüyor kontrol edince inc klasörü dolu olduğunu görüyorum.
    C:\Users\Baran\Desktop\STM8S_GPIO\STM8S_StdPeriph_Driver\inc
    C:\Users\Baran\Desktop\STM8S_GPIO

    Örnek yazılımı derlediğimde direk error veriyor.
    Beceremedim.
    Yardımcı olurmusunuz.
    Kolay gelsin.

  6. Baran Bey, yazınızı çok beğendim ve yararlandım. Yıllardır STM32 ile çalışıyordum, çekmecede durmakta olan STM8 leri değerlendirmeye kalkınca IAR kullanmak zorunda kaldım, bu yayınınız bana çok zaman kazandırdı, elinize sağlık, teşekkürler.

    Yalnız bendeki STM8S003 mini kit de sizinki ile aynı ama LED PD3 üzerinde, siz kodu PD5 üzerinde imiş gibi yazmışsınız, bir hata mı, yoksa bu kitlerin başka çeşitleri de mi var?

    Selamlarımla,

    • Selçuk Özbayraktar dedi ki:

      Pardon, düzeltiyorum, sizin kitiniz farklı imiş. Demekki piyasada daha farklı modeller de varmış. Slm

    • Baran EKREM dedi ki:

      Merhaba,

      Piyasada çok farklı kitler mevcut. Elinizin altında kullandığınız geliştirme kartının şeması mutlaka olsun. Aksi halde çok vakit kaybetmenize yol açar.

      • Baran Bey ilgi ve yanıtınız için teşekkür ederim. Ben de tecrübelerimi paylaşayım, belki bir işe yarar:

        IAR ile işe giriştim ama, bunun ücretsiz lisansının ancak 4K kod boyutuna izin verdiğinden hemencecik tıkandım. Ben de ST nin STVD sini kullanmaya karar verdim, derleyici olarak da Cosmic C. Bu da yeni bir uygulamayı, derleyiciyi kurmak, öğrenmek anlamına geldi. Şimdi STVD yi kullanabilir duruma geldim.

        STVD IAR gibi entegre bir ortam değil, bunun çıktısı olan kodu işlemciye yüklemek için ayrıca ST Visual Programmer kullanıyorum.

        Debugging için de ayrıca ST Visual Studio kullanılıyormuş, onu henüz denemedim.

        STM32 den sonra STM8S003 ün ne kadar minik bir işlemci olduğunu yeni farkettim, ama basit projeler için gayet güzel bir seçenek gibi görünüyor. Zamanında bir sürü STM8 kiti almışım, belki bir işe yararlar şimdi.

        Şimdi PWM çıkışlarına yönelik bir çalışma yapmam gerekiyor.

        Selamlarımla,

  7. Cevdet dedi ki:

    stm8 için kesin bir delay fonksiyonu yok galiba… 0xFFFF sayısının süre olarak neye tekabul ettiğini nasıl anlayacağız?

    • Baran EKREM dedi ki:

      Merhaba,
      Kesin bir delay fonksiyonu derken genelde timer ile bu işleri yapabilirsiniz.
      Yada kendi emin olduğunuz bir gecikme fonksiyonu ile yapabilirsiniz.
      Buradaki mantık ise 0xFFFF gibi bir değerin çıktısına bakarak referans almak.
      Genelde bu işler için timer kullanılır fakat ben basit olması adına Giriş yazısında rasgele bir değer ile gecikme yarattım.

      • Cevdet dedi ki:

        yani stm32 programlarken bize hal kütüphanesi tarafından sağlanan HAL_Delay() gibi bir fonksiyon olmasını bekliyordum. Neyse, olmaması iyi oldu, kendim oluşturayım derken timer birimini daha iyi tanıma şansım oldu.

Cevdet yazısına yorum yazın