Stm32f103c8t6 ile bir proje üzerinde çalışıyorum. Arduino framework ten sonra biraz yabancılık çektim. Özellikle IDE konusunda Stm32CubeIDE den de pek haz etmedim. VScode un editor yapısına göz aşınalığım olduğu için Platformio ile hem Stm32CubeMX hemde HAL kütüphanelerini kullanarak kod geliştirmenin mümkün olduğunu gördüm ve kendimede bir hatırlatma klavuzu olması adına paylaşmaya karar verdim.
Projemizde PC13 pininde bir adet led ve XTAL bacaklarında 8Mhz Harici kristal var. Başka şeylerde var ama burada sadece basit bir blink uygulaması üzerinde duracağız. Programlayıcı olarak ST-Link kullanıyoruz.
Öncelikle CubeMX ile kullanacağımız pinleri konfigüre etmemiz gerekiyor. CubeMX de ne nasıl yapılır başka bir günün konusu. Bu aşamada CubeMX de doğru ayarları yapabildiğimizi varsayıyorum. Bu yazıdaki amacımız CubeMX+CubeIDE yerine CubeMX+PlatformIO kullanımını göstermek....
CubeMX ile "Generate Code" aşamasından önce "Toolchain/IDE" bölümünde "Makefile" seçimi yapılmaldır.
İşlem sonunda CubeMX yukarıdaki dosyaları bizim için otomatik oluşturacaktır. Şimdilik CubeMX ile işimiz bitti. Sonrasında başka bir congifürasyon yapmak istenir ise .ioc uzantılı dosya cubemx ile açılırsa mevcut configürasyona ulaşılır ve istenilen değişikliler yapılarak generate code ile tekrar dosyalar oluşturulur...
PlatformIO ile Framework olarak STM32Cube seçilerek aynı isim ve dosya yolunda bir proje oluşturulur. Proje adları dosya yolları farklı seçilir ise Stm32CubeMX ile oluşturulan dosyalar PlatformIO proje klasörüne taşınmalı/kopyalanmalıdır.main.c dosyamızın loop bölümüne blink kodumuzu ekleyip yüklediğimizde ledimiz yanıp sönmeye başlıyor... Şimdilik bu kadar...
[platformio]src_dir = Core/Src ; main.h dosyasının yolunu belirtir[env:genericSTM32F103C8]platform = ststm32board = genericSTM32F103C8framework = stm32cube; Programlayıcıupload_protocol = stlinkdebug_tool = stlinkbuild_flags =-I Core/Inc-I Drivers/STM32F1xx_HAL_Driver/Inc-I Drivers/STM32F1xx_HAL_Driver/Inc/Legacy-I Drivers/CMSIS/Device/ST/STM32F1xx/Include-I Drivers/CMSIS/Include-I USB_DEVICE/App-I USB_DEVICE/Target-I Middlewares/ST/STM32_USB_Device_Library/Core/Inc-D USE_HAL_DRIVER-D HSE_VALUE=8000000U{codeBox}
[platformio]src_dir = .[env:genericSTM32F103C8]platform = ststm32board = genericSTM32F103C8framework = stm32cubeupload_protocol = stlinkdebug_tool = stlinkbuild_flags =-I Core/Inc-I Drivers/CMSIS/Device/ST/STM32F1xx/Include-I Drivers/CMSIS/Include-I USB_DEVICE/App-I USB_DEVICE/Target-I Middlewares/ST/STM32_USB_Device_Library/Core/Inc-I Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc-D USE_HAL_DRIVER-D HSE_VALUE=8000000Ubuild_src_filter =+<Core/Src/*.c>-<Core/Src/system_stm32f1xx.c> ; framework kendi system dosyasını getiriyor+<USB_DEVICE/App/*.c>+<USB_DEVICE/Target/*.c>+<Middlewares/ST/STM32_USB_Device_Library/Core/Src/*.c>+<Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/*.c>-<Core/Startup/*>; NOT: Burada Drivers/STM32F1xx_HAL_Driver/Src **EKLEMİYORUZ**; ve lib_ignore KULLANMIYORUZ (framework’ün HAL’i derlenecek...){codeBox}