Daha önceki yazılarımızda Bluepill geliştirme kartından bahsetmiş ve CubeMX paketi ile birkaç uygulama yapmıştık. Bu yazımızda ise Bluepill kartını Arduino geliştirme ortamı ile nasıl kullanabileceğimize değineceğiz. Bu çalışmayı Ubuntu 18.04 tabanılı Xubuntu Linux ortamında gerçekleştirdik. stm32 Arduino paketi olarak https://github.com/rogerclarkmelbourne/Arduino_STM32 adresinden indirilen paket ile çalışacağız. Arduino IDE ile https://github.com/stm32duino/Arduino_Core_STM32 paketi ile de çalışabilirsiniz. İkisi arasında kütüphane ve kullanılan araçlar bakımından farklar var. Bu kütüphaneyi daha sonra inceleyeğiz. Bluepill kartına derlenmiş program dosyasını yüklemek için ise ST-Link v2 programlama arabirimini SWD (Serial Wire Debug) modunda kullanacağız.
Ubuntu’nun reposundan yüklenen Arduino IDE ile epey sorun yaşadığım için Arduino IDE’yi direk olarak https://www.arduino.cc/en/Main/Software adresinden indirdiğim haliyle kullanacağım. Kullandığım Linux 64-bit lik dağıtım olduğundan Linux 64 bits sürümünü tercih ettim. Bu yazıyı yazarken indirdiğim Ardunio IDE sürümü 1.8.12 idi. Bu arşiv dosyasını indirdikten sonra kullanıcı klasörünüze açın. Arduino IDE nin sizin kullanıcı oturumunuzda seri iletişim kanalına erişimi sağlayan karakter aygıtlarına erişimi sağlayabilmek için kullanıcızı dialout grubuna eklemeniz gerkemektedir. Bu işlem için bir uçbirim penceresinden aşağıdaki komutu, kalın yazılmış kısmını kullanıcı adınız ile değiştirerek vermeniz yeterli.
$ sudo adduser kullanici_adi dialout
Kullanıcı klasörünüz içindeki klasörüne (arduino-1.8.12) geçerek ./arduino komutunu verip Arduino IDE yi çalıştıralım. Bluepill kartında STM32F103C8T6 ARM mikrodenetleyisi olduğundan Arduino IDE için ARM derleyici takımını indirmemiz gerekmektedir. Bu işlem için Tools menüsünden Boards Manager komutunu vererek Arduino kart yöneticisini açalım.
Buradan Arduino SAM Boards (32-bits ARM Cortex-M3) paketini aşağıdaki gibi işaretli bölümü seçerek yükleyelim.
Bu yükleme işleminden sonra Arduino_STM32 reposundan STM32 çalışma klasörünü indirin (github tan zip olarak indirilebiliyor) ve kullancıcı klasörünüz içindeki Arduino klaösürü içinde hardware klasörüne açın. Eğer hardware klasörü yok ise oluşturun. Bu işlemden sonra ~/Arduino/hardware/Arduino_STM32/tools/linux/ klasörüne giderek install.sh dosyasını uçbirim penceresinden çalıştırın. Böylelikle Arduino IDE nin ST-Link aracına erişim izinleri ayarlanmış olacaktır. Normalde bu işlemleri tamamlamış olmak yetiyor ama Roger Clark reposunda Linux için kullanılan st-flash aracının eski bir sürüm olduğu görülmektedir. Bu nedenle aşağıdaki komut dizilimini kullanarak hem gerekli araçları hem de repodan yeni aracı yükleyip derleyelim.
$ sudo apt-get install git-core build-essential libusb-1.0.0-dev cmake
$ git clone https://github.com/texane/stlink.git
$ cd stlink
$ make release
Bu işlem bittikten sonra ~/Arduino/hardware/Arduino_STM32/tools/linux/stlink/ klasöründeki dosyaları başka bir klasöre taşıyalım. Ardından derlemiş olduğumuz yeni araçları bulunduğu build klasörden ~/stlink/build/Release/bin klasöründen bu bu klasöre kopyalayalım.
$ cp -r ~/stlink/build/Release/bin/. ~/Arduino/hardware/Arduino_STM32/tools/linux/stlink/
Bu aracın yeni sürümü ile üzerinde klon STM32 denetleyiciye sahip (Bendeki 128K flash ROM a sahip CMS32F103C8T6 idi) program yükleyebilirsunuz. Repodan indirildiği haliyle CHIP ID hatası alıyorduk. Şimdi sıra geldi Bluepill ve ST-Link V2 bağlantısını yapmaya. Bağlantı aşağıda şekilde görüldüğü gibi yapılmaktadır. Unutmayın, RST hattı seçimli. Pek kullanmanıza gerek kalmıyor. Ben CubeMX ile SWD uçları pasif halde iken program atmıştım. Bu nedenle RST ucu ile başlatıp ST-Link aracı ile denetleyiciyi komple silmek zorunda kalmıştım. Aksi halde SWD arabirimi denetleyiciyi DEBUG konumuna getiremiyor.
Artık Bluepill e derlenmiş olan program dosyasını yüklemek için gerekli hazırlıklar da tamamlanmış oldu. Şimdi Arduino IDE içinde şu örnek kodu yazalım:
void setup() {
// C Portu 13 numaralı uc SMD LED'e bağlı
pinMode(PC13, OUTPUT);
}void loop() {
digitalWrite(PC13, HIGH);
delay(1000);
digitalWrite(PC13, LOW);
delay(1000);
}
Ardından aşağıda görüldüğü gibi kart ve yükleyici ayarlarını yaparak blink programımızı karta yükleyelim.
Alıntıdır. Teşekkürler @mehmetgkk
Bu yazı yorumlara kapalı.