Bismillahirrahmaanirrahiim.
Saat ini, mungkin hampir semua orang sudah mendengar istilah "ARM". Arsitektur processor 32 bit ini merupakan arsitektur yang saat ini paling banyak digunakan. Mulai dari smartphone, tablet, embedded system seperti RaspberryPi dan semacamnya, dan tentunya mikrokontroler. Selain memiliki banyak sekali fitur, ARM juga sangat rendah daya. Dan yang paling menarik, harganya yang cukup murah.
Saya yang selama ini terbiasa menggunakan AVR sebagai mikrokontroller andalan, perlahan telah mulai memberanikan diri untuk 'hijrah'.
Di sini, saya ingin berbagi catatan mengenai pemrograman salah satu mikrokontroler berbasis ARM. yaitu STM32. Semoga di post-post berikutnya, saya bisa menjelaskan beragam fitur-fiturnya secara bertahap. Tentunya lebih berfokus pada contoh aplikasinya.
Sebagai catatan, disini saya menggunakan OS Ubuntu (Linux). Namun umumnya untuk pengguna OS lain, pada dasarnya langkah-langkah yang digunakan atau apa saja yang perlu di install adalah sama. Perbedaannya hanya pada prosedur instalasinya saja.
Baiklah, kita mulai.
Persiapan Hardware
Pertama, mikrokontroler STM32F103. Atau biasa dikenal dengan istilah "Blue pill".Kedua ST-Link V2, perangkat ini digunakan untuk melakukan flashing program yang telah kita buat ke flash memory (atau istilah di Arduino : Upload). Fungsinya serupa dengan "downloader" USBASP untuk mikrokontroler AVR. Namun dengan ST-Link, kita juga bisa sekaligus melakukan debugging.
Ketiga, rangkai stm32f103 dengan STLink-v2 dengan konfigurasi seperti berikut ini (klik gambar untuk memperbesar) :
Setup Environment
Di bagian ini kita akan menyiapkan environtment untuk dapat melakukan pemrograman, kompilasi, hingga flashing.Pertama, buka terminal dan install make. Make digunakan untuk eksekusi perintah kompilasi.
Setelah instalasi selesai, Coba masukan perintah "make" lalu tekan enter. Seharusnya akan muncul pesan seperti ini :
Untuk dapat melakukan kompilasi program ARM, kita memerlukan compiler gcc-arm-none-eabi, dengan menginstall toolchain ARM dibawah ini :
Selanjutnya, kita akan menginstall program untuk bisa menggunakan ST-Link. Sebelumnya, install dependencies berikut ini :
Lalu kita akan build ST-Link binaries dengan download (cloning) source dari git. Disini saya mendownloadnya ke direktori $HOME, jika ingin direktori lain silahkan sesuaikan dengan kebutuhan.
Jika semua perintah diatas telah dilakukan, coba masukkan perintah "st-flash". Jika ST-Link sudah terinstall dengan benar, maka akan muncul pesan seperti di bawah ini :
Selanjutnya, kita akan membuat USB rule agar ST-Link dapat diakses tanpa perlu menggunakan "sudo". Perintah dibawah akan membuka editor teks Nano.
Copy-paste script berikut ini ke dalam editor Nano :
*) Opsi: jika anda menggunakan selain ST-Link V2, bisa pilih salah satu dari list dibawah ini :
Save dan Exit, lalu restart USB service.
Terakhir, download Standard Peripherals dibawah dan ekstrak di direktori yang diinginkan.
STDPeriphLib
Sampai tahap ini, environment untuk programming STM32 telah siap.
Testing Program
Setelah menyiapkan environment, sekarang saatnya kita mulai memprogram!
Buka editor teks yang biasa kamu gunakan. Kemudian buat program seperti berikut ini dan simpan sebagai "main.c".
Program diatas merupakan testing program atau bisa dibilang sebagai "Hello World"-nya mikrokontroler, yaitu blinking LED. Di module STM32F103 "Blue Pill" kita bisa memanfaatkan LED yang sudah built-in di pin PC13, lalu kita set dan reset dengan jeda 500ms.
Setelah itu, buat file konfigurasi kompilasi dibawah ini. Ubah direktori STD_PERIPH_LIBS dengan path direktori STDPeriphLib yang sudah di download sebelumnya. Simpan dengan nama "makefile", di folder yang sama dengan "main.c".
Setelah itu, lakukan kompilasi dan flash dengan perintah :
Dengan program tersebut, led di pin PC13 akan berkedip setiap 500ms.
Selamat, pemrograman STM32 telah sukses.
Penutup
Dalam library STD Periph diatas, terdapat berbagai program contoh yang dapat kita jadikan referensi. Jadi, jangan ragu untuk mencoba !Tutorial diatas dibuat bersasarkan informasi dari berbagai sumber dengan penyesuaian saya sendiri. Jika ada yang perlu didiskusikan, silahkan komen dibawah.