Stm32 mcu kaynak

Çözüldü108 görüntülenmeSTM32 MCUs

Stm32 mcu kaynak

CubeMX,Mbed OS,Keil gibi bir çok platformda STM32 kartları programlamayı öğreten
giriş seviyesinde bildiğiniz yazılı kaynak var mı??

Alper Çoban Cevaplanan soru Şubat 17, 2022
1

Merhaba,

STM32’yi yeni öğrenmeye başlayanlar, burada paylaşacağım, öğrenme sürecini basitleştirip hızlandırmak için hazırlanmış olan STM32Cube ile ilgili workshop notlarını kullanabilirler. Zaten bu ekosistem, halihazırda en yaygın olarak kullanılan geliştirme ortamıdır.

Bunun yanında, uzman geliştiriciler için, farklı konularla ilgili daha detaylı eğitimlere ait linkleri de paylaşacağım.

STM32 ile proje geliştirmeye başlamak için:

1- STM32CubeMX konfigürasyon ve başlangıç kodu üretme arayüzünü indirip kurun:

STM32CubeMX – STM32Cube initialization code generator – STMicroelectronics

2- IDE ve compiler olarak, en yaygın kullanılan ortamlar ise şu şekildedir: 32K code size ya da süre kısıtlamalı sürümleri bulunabilen Keil MDK-ARM, IAR EWARM gibi seçeneklerin yanında ST’nin tamamen ücretsiz olarak sunmuş olduğu Eclipse ve GCC tabanlı STM32CubeIDE. Ayrıca, Keil‘in ST ile arasındaki anlaşmaya binaen ST‘nin Cortex-M0/M0+ çekirdekli ürünleri (STM32F0/G0/L0, BlueNRG-1/2/LP) için ücretsiz bir sürümü olduğunu da belirtmek isterim. Bunların dışında farklı IDE seçenekleri bulmak elbette mümkün olmakla birlikte ben, yukarıda da ifade ettiğim gibi, en yaygın kullanılanları listeledim. Tercihinize göre, bu toolchain seçeneklerinden birini indirip kurun. Cortex-M0/M0+ ile başlamayacaksanız, ben, ücretsiz olan STM32CubeIDE’yi öneririm.

STM32CubeIDE:

STM32CubeIDE – Integrated Development Environment for STM32 – STMicroelectronics

Keil MDK-ARM, ST Cortex-M0/M0+ için ücretsiz versiyon:

MDK for STM32F0/G0/L0 and BlueNRG-1/2/LP – Installation & Activation (keil.com)

3- STM32Cube driver paketi, diğer bilinen adıyla, HAL driverları ve içerisinde gelen LL (Low-Layer) API. (Yeni başlayanlar için, aşağıda paylaşacağım eğitim notlarında da olduğu gibi, HAL driver API kullanımını öneririm.) İlgili STM32 serisine ait driverı aşağıdaki linkten manuel olarak indirebileceğiniz gibi, STM32CubeMX -> Help -> Manage embedded software packages menüsü altından direkt olarak ta indirebilirsiniz ki bu yöntemi izlemenizi öneririm. (Bu yolla, indirmiş olduğunuz driver dosyaları, STM32CubeMX -> Help -> Updater Settings menüsünde belirtilen Repository Folder alanına inmiş olacaktır.)

HAL/LL Driverları manuel indirme linki: (tercih edilmeyen yöntem)

STM32Cube Development Software – STM32 Open Development Environment – STMicroelectronics

4- Başlangıç için ayrıca, elinizde kendi tasarlamış olduğunuz bir kart yoksa, tercih edeceğiniz STM32 serisine uygun, ucuz yollu bir nucleo ya da biraz daha özelleşmiş seçenekler sunabilen discovery kit temin etmeniz gerekecektir.

STM32 Nucleo Boards – STMicroelectronics

STM32 Discovery Kits – STMicroelectronics

5- Temel Eğitim Notları:

Aşağıdaki linkte, yıllar içerisinde yapılmış olan çeşitli STM32 workshoplarına ait eğitim notları yer almaktadır:

STM32 – Google Drive

(Linkte yer alan tüm zipli dosyaların şifresi : stm32)

Yeni başlayanlar için birinci öncelikle, linkte yer alan STM32Cube_Training isimli eğitim notları içerisinde bulacağınız STM32CubeMX_Hands_on isimli dosyadaki basit uygulamalar üzerinden gitmekte fayda var. Zipli dosyada yer alan STM32Cube presentation isimli diğer dosya ise HAL driverlarını yapısını ve içerisinde kullanılan handle mantığını kısaca anlatan teorik içerikli bir sunumdur ki ilk etapta buna bakmanıza çok gerek yok. Hands on adı altında verilen uygulamalar ile sıfırdan STM32 programlamayı öğrenmenin ne kadar basit ve hızlı olduğunu göreceğinize inanıyorum. Bu basit uygulamarı lego blokları gibi bir araya getirip oldukça hızlı şekilde basit projeler ortaya çıkarabilecek seviyeye gelebilirsiniz. Pratik uygulamalarla temel mantığı kavradıktan sonra diğer teorik dosyaya, çok fazla detaya takılmadan bir göz atmanızda fayda var.

Bu aşamada, kod yazımı safhasında ise yine, HAL driverlarına ait döküman ya da datasheet/reference manual kullanma gereksinimini en aza indirecek bir ipucu vereyim:

Unutmayın ki, HAL driverlarında tüm API fonksiyonlarıHAL_PeripheralName ile başlar!

Diyelim ki, STM32CubeMX üzerinden projeyi ve ilk konfigürasyona ait başlangıç kodunu oluşturdunuz ve kullanmış olduğunuz IDE ile projeyi açtınız, ilk olarak bir kez projeyi derleyip (build) sorunsuz derlendiğini görün. Sonrasında ise kullanmak istediğiniz peripheral (birim) ile ilgili, HAL driverlarının sunmuş olduğu API fonkisyonlarının, vs. listesini görmek için,

yukarıda belirttiğim HAL_PeripheralName ifadesini yazdıktan sonra CTRL + Space tuşlarına basın.

Örneğin, HAL_ADC sonrasında ise CTRL + Space gibi.

Bu şekilde, IDE ortamı, size HAL driverlarının ilgili peripheral (birim) için sunmuş olduğu API fonksiyonlarını ve diğer tanımlamaları listeleyecek ve fonksiyonlar için anlaşılır isimler kullanılması sayesinde, çoğu zaman dökümanda aramanıza gerek kalmadan siz gerçekleştirmek istediğiniz fonksiyonu listeden seçerek, kullanabileceksiniz.

Örneğin,

HAL_ADC_Start

HAL_GPIO_TogglePin

gibi.

Aynı yöntemi, fonksiyonların parametrelerini (örn. GPIOA, GPIO_PIN_0) girerken de kullanabilirsiniz. Ancak fonksiyon ismini yazıp ilk parantezi açtığınızda, “HAL_GPIO_TogglePin(“ gibi, genellikle IDEler CTRL + Space tuşlarına basmanıza gerek kalmadan size parametre önerisinde bulunuyor zaten. Ve devamında birkaç harf ile önerilen parametreyi yazmaya başladığınızda listelenen seçeekler daha da şekiileniyor.

Örneğin,

HAL_GPIO_TogglePin(gpi” yazdığınızda listede “GPIOA” şeklinde port isimleri belirebiliyor ve siz de döküman okumanıza gerek kalmadan kodu tamamlayabiliyorsunuz.

Parametreleri döküman aramaksızın doldurabilmek için diğer bir yöntem ise, yazmış olduğunuz fonksiyon ya da parametre (örn. HAL_GPIO_TogglePin) üzerine çift tıklayıp seçmek ve sonra seçili alana sağ tıklayıp, çıkan pop-up menüden “Go To Definition” (IDEye göre, “Go To Declaration” gibi değişiklik gösterebilir) seçeneği ile ilgili driver dosyasında ilgili fonksiyon ya da parametrenin tanımlı olduğu bölüme atlamak ve orada yer alan fonksiyon ve parametre tanımlamalarının üzerlerinde ya da yanlarında commentlenmiş olarak verilen tanımlamalara bakarak olası parametreleri bulmaktır.

Örneğin:

/**
* @brief Toggles the specified GPIO pins.
* @param GPIOx Where x can be (A..K) to select the GPIO peripheral for STM32F429X device or
* x can be (A..I) to select the GPIO peripheral for STM32F40XX and STM32F427X devices.
* @param GPIO_Pin Specifies the pins to be toggled.
* @retval None
*/
void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

Bu şekilde, anlamlı yerleri seçip üzerlerine sağ tıklayarak “Go To Definition” seçeneği ile ilgili tanımlamalara ve doğru syntaxa ulaşmanız mümkündür.

İkinci olarak, yukarıda vermiş olduğum google drive linkinde yer alan STM32_Ecosystem_Workshop isimli eğitim notuna da kısaca bir göz gezdirip, ilginizi çeken bölümleri inceleyebilirsiniz. (Bu eğitimde STM32CubeIDE’nin eski versiyonu diyebileceğimiz, yine Eclipse tabanlı AC6 ya da OpenSTM32 isimli IDE kullanılmıştır. Arayüz olarak STM32CubeIDE ile aynı denebilir. Siz STM32CubeIDE ile takip edebilirsiniz.)

6- STM32 MOOCs (ST’nin, ücretsiz, online eğitim videoları)

Yine yukarıda sunum olarak vermiş olduğum, STM32CubeMX & CubeHAL temel eğitimini buradan da takip edebilirsiniz:

STM32CubeMX & CubeHAL basics MOOC – STMicroelectronics

İçerisinden igili video linklerine de ulaşabileceğiniz tüm online eğitim konularının listesi

STM32 MOOCs (Massive Open Online Courses) – STMicroelectronics

Biraz uzun yazdım, ancak mümkün olduğunca, konuları adım adım listelemeye ve önemli noktaları koyu yazarak belirginleştirmeye, yani bir nevi, kaynak listesini sıralı bir şekilde özetlemeye de çalıştım. Umarım bu bilgiler, yeni başlayanlar ya da belirli konularda eğitim ihtiyacı olanlar için açıklayıcı ve faydalı olur.

Tüm ilgili arkadaşlara çalışmalarında başarılar dilerim!

Alper Çoban En iyi cevap olarak seçildi Şubat 17, 2022
3
3 cevaptan 1'ini inceliyorsun, tüm cevapları görmek için buraya tıklayın.