CubeMX, AC6 (openstm32) ile HAL Lib

Başlatan muhittin_kaplan, 30 Aralık 2016, 14:25:42

muhittin_kaplan

Yeni bir arayüz ile karşınızdayım. AC6 yada OpenStm32 yada SW4STM32 hepsi aynı. ve şuradaki adresten indiriyorsunuz. http://www.openstm32.org/HomePage

Evet ücretsiz bir yazılım. Eclipse ve gcc ikilisini ve link olarak OpenOCD yi kullanıyor. Güzel tarafı şu, projenizi CubeMX ile oluşturabiliyor ve AC6 ya import edebiliyorsunuz. Ayrıca kendi oluşturduğunuz projeyi isterseniz standart kütüphane ile (StdLib) yada Donanım Soyutlama kütüphanesiyle (HAL) ile başlatabiliyorsunuz.

Projeyi başlattığınızda birkez bu kütüphaneleri indiriyor , süpheci, tedariz hastalığı olan ben bunları indirdikten sonra yedekledim. videodada görüldüğü üzere oraya referans gösterdim. Siz indirmek durumunda kalabilirsiniz daha önce indirmediyseniz.

https://www.youtube.com/watch?v=3Aydf7qEGsA

yaptığım işlerde hata eksik olabilir. İletirseniz sevinirim

Tagli

Kütüphanesiz kullanmak da mümkün. Yine de CubeMX üzerinden Cube'leri indirip içlerindeki CMSIS sürücülerini, başlangıç kodlarını falan almakta fayda var. Bunları elde etmenin en kolay yolu bu. Sonrasında HAL veya StdLib kullanmadan sadece CMSIS ile kod yazmak mümkün oluyor.
Gökçe Tağlıoğlu

M_B

Alıntı yapılan: Tagli - 30 Aralık 2016, 14:37:06
Kütüphanesiz kullanmak da mümkün.  HAL veya StdLib kullanmadan sadece CMSIS ile kod yazmak mümkün oluyor.
Hocam nasıl oluyor. Tum donanımları aktif edebiliyormuyuz. ( i2c , Usart vb... )
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Tagli

Henüz o kadar ARM bilmiyorum  :) Ama UART'ı denedim ve çalıştırdım. Reference Manual'dan tek tek register'lara bakıp kod yazıyorum. Doğru biraz zahmetli oluyor ama kütüphaneyi öğrenmek de çok kolay değil zaten. Ne yapılıp ne yapılamayacağını kestirebilmek için sonuçta yine Reference Manual'ı didiklemek gerekiyor. Ben de iki şey öğreneceğime tek bir şeyi öğreneyim dedim. HAL biraz karmaşık geldi ilk bakışta.
Gökçe Tağlıoğlu

muhittin_kaplan

Hocam cmsis derken register erismiyle yazilan yontemden mi bahsediyorsunuz ?

muhittin_kaplan

Openstm32 ile stdlib,hal yapacaktim, birkacta lowlevel resister erisimiylede yapalim ozaman

Tagli

Evet hocam, mesela
GPIOA->MODER |= (0b01 << 8); // PA4 is output

gibi kod yazmaktan bahsediyorum.

Aslında bir yerlerde bit isimleri veya konumları da tanımlı galiba ama bir iki tanesinde referance manual ile uyumsuzluğa denk gelince kıllandım. O yüzden kaydırma değerlerini elle veriyorum. Ama aslında iyi bir yöntem değil, hataya çok açık.

CMSIS her işlemcide bulunan bazı çekirdek özellikleri için de hazır fonksiyonlar tanımlamış. Bunlar her ne kadar doğrudan register seviyesinde ayarlanabiliyor olsalar da, mevcut olmaları durumunda CMSIS fonksiyonlarını kullanmak bence daha doğru bir yaklaşım olur.

Örneğin NVIC'ten TIM14 kesmesini açmak için
NVIC_EnableIRQ(TIM14_IRQn);

yazmak gibi.
Gökçe Tağlıoğlu

fatal16


muhittin_kaplan

#8

muhittin_kaplan


muhittin_kaplan


muhittin_kaplan


muhittin_kaplan

Ses çatal, dün maçta fazlaca bağırmışım yoksa polifonik tir ;)

muhittin_kaplan


muhittin_kaplan