STM32F103 CubeIDE Örnek Projesi (Kütüphanesiz)

Başlatan Tagli, 24 Haziran 2020, 22:23:38

Tagli

STM32CubeIDE'de STM32F103C8T6'lı Blue Pill kartı için oluşturduğum örnek LED yak söndür projesini paylaşayım dedim. "Kütüphanesiz" ifadesi tam doğru olmadı aslında, proje CMSIS ve ST header'larını kullanıyor. Ama Cube, HAL, StdPeripheral falan kullanmıyor, kod register seviyesinde yazılmış durumda. STM32'lere yeni başlayacaklar için referans bir örnek proje olur diye düşündüm.

Kod reposuna buradan ulaşabilirsiniz.
Gökçe Tağlıoğlu

Tagli

Aynı projenin C++ için oluşturulmuş versiyonuna buradan erişebilirsiniz.

CMSIS ve ST'nin headerları arasında F103 için gerekli olmayan alakasız dosyalar da var. Kütüphane klasörlerini olduğu gibi kopyaladığım için onları temizlemekle uğraşmadım. Hangilerinin gerekli hangilerinin gereksiz olduğunu tespit etmek bazen zaman alabiliyor.

Sadece basit bir blinky projesi olduğu için kodda C++'a özgü pek bir şey bulamayacaksınız. Ama mevcut haliyle proje bir C++ projesi, yani mesela class falan tanımlayıp kullanabilirsiniz gönlünüzce.

C++ söz konusu olduğunda dikkat edilmesi gereken birkaç maddeyi burada sıralayayım:
  • Kesme fonksiyonlarının başına extern "C" getirilmeli, yoksa bulunamazlar. Örnekte mevcut.
  • Gömülü C++'ta genelde exception kullanılmaz. Varsayılan optimizasyon ayarlarında da zaten kapalı.
  • Heap kullanımı tartışma konusudur. Genel olarak hiç kullanılmaması, veya kullanılacaksa bunun program başlangıç aşaması ile sınırlı olması gerektiği söylenmektedir. İkincisi benim kafama daha çok yatıyor. Heap kullanılmaması demek, standart kütüphane içindeki pek çok nesneyi kullanamayacağınız anlamına geliyor. Mesela std::vector kullanamazsınız.
  • Projenizde C kodları da olabilir. Proje ayarlarında C ve C++ derleyicilerine özgü ayarlar birbirinden ayrıdır.
  • Linker script içinde varsayılan bir heap alanı ayrılmış. Proje derlendiğinde fazladan 1 KiB RAM kullanılıyor gibi gözükmesinin sebebi bu. Dilerseniz sıfırlayabilirsiniz bunu.
Gökçe Tağlıoğlu

sinus

Bluepill Microsoft'un bir uygulaması mı?

https://visualbluepill.github.io/

Dün biraz uğraşmıştım, köşede Microsoft yazıyor.
Başka kartlar içinde benzeri kodlama yapılabiliyor galiba.

muhittin_kaplan

mikrozort logosu github dan dolayı. Satın almıştı.
www.ictr.club
www.muhittinkaplan.com

Tagli

20 Kasım 2020, 14:06:26 #4 Son düzenlenme: 20 Kasım 2020, 14:08:33 Tagli
Benim Blue Pill dediğim şey, Çinlilerin STM32F103C8 ile yaptıkları küçük mavi kart. Üzerinde pek bir şey yok. USB uygulalamaları için bir micro-B konnektör, 3.3 V regülatör, boot seçimi için jumperlar, bir tane LED, iki tane kristal ve pin headerlar. Hepsi bu (galiba). Programlayıcıyı dışarıdan bağlamak gerekiyor.

Çok sade ve kolay kullanılan bir ürün olduğu ve her yerden ucuz bir şekilde temin edilebildiği için örnek programı buna göre yazayım dedim. Aslında "buna göre" ifadesi de pek isabetli değil. Kart zaten boş olduğu için, karta göre yazılmış olan tek kısım LED'in hangi pine bağlı olduğu.

Gökçe Tağlıoğlu