Arsip untuk Mei, 2020

“Error in initializing ST-LINK device”, biasanya saya sering menemukan error ini apabila saya lupa melakukan konfigurasi pada SYS Mode. Yang seharusnya saya rubah mode-nya dari “No Debug” menjadi “Serial Wire”. Dibawah adalah contoh pesan error yang muncul.

Solusinya sebenarnya mudah saya hanya perlu menghapus/memformat MCU. STMicro sudah menyediakan tools untuk melakukan itu namanya STM32 ST-Link Utility. Untuk mendownload silahkan klik link ini https://www.st.com/en/development-tools/stsw-link004.html. Untuk proses instalasi pun mudah hanya tinggal next. Setelah installasi buka aplikasi STM32 ST-Link Utility, kemudian hubungkan ST-Link/STM32 dengan komputer. Tampilan aplikasinya seperti dibawah ini.

Selanjutnya adalah klik tombol Connect/menu Target > Connect. Ups, muncul pesan error seperti dibawah ini.

Ternyata ST-Link Utility tidak dapat melakukan koneksi dengan STM32F103C8T6. Hal yang perlu dilakukan adalah pada STM32F103C8T6, tekan dan tahan button reset (gambar dibawah) sambil klik tombol Connect/menu Target > Connect. Setelah di klik kemudian lepaskan button reset, ST-Link Utility seharusnya sudah dapat melakukan koneksi dengan MCU.

Tombol Reset Pada STM32F103C8T6
Setelah Berhasil melakukan koneksi

Untuk memformat chip, hanya perlu click button erase (yang iconnya gambar penghapus). Kemudian akan muncul confirmation box. Click OK

Setelah diformat maka MCU akan dapat dikenal lagi oleh STM32CubeIDE. Silahkan Flash ulang program tapi jangan lupa untuk rubah mode-nya dari “No Debug” menjadi “Serial Wire”

Semoga bermanfaat,

For your consideration, sebenarnya saya sendiri bukan berlatar belakang Sistem Komputer, Elektro atau Instrumentasi. Latar belakang pendidikan saya adalah Teknik Informatika, sehingga benar-benar dari 0 saya mempelajari microcontroller (karena TI sama sekali tidak ada materi tentang microcontroller). Dan saya hanya mencoba-coba microcontroller sekedar mengisi waktu luang. Jadi pasti ada kesalahan istilah/penulisan dalam blog ini, mohon yang lebih mengerti dapat membetulkan kesalahan saya pada kolom komentar.

Pada posting kali ini saya akan mencoba melakukan pemrograman pada microcontroller STM32 atau lebih tepatnya adalah STM32F103C8T6. Untuk project yang akan dibuat adalah blinking LED. Kalau di pemrograman desktop biasanya ada project “Hello World”, di microcontroller terdapat project “Blinking LED” untuk memulai pembelajaran. Microcontroller sering juga disebut dengan blue pills, di toko online harganya relatif murah sekitar 30.000 rupiah (per 11 Mei 2020). Untuk melakukan pemrograman pada MCU ini diperlukan debugger/downloader tambahan, karena MCU ini tidak menyediakan downloader. Downloader/debugger yang saya gunakan adalah ST-LINK V2. Harganya kurang lebih sama dengan harga STM32F103C8T6. Untuk wiring antara STM32F103C8T6 dan ST-LINK V2 dapat dilihat pada gambar dibawah.

IDE (Integrated Development Environment) yang saya gunakan adalah STM32CubeIDE, IDE ini menggunakan Eclipse IDE, banyak programmer akan sangat familiar dengan tampilan dari STM32CubeIDE. Untuk installasi seharusnya tidak begitu sulit karena hanya tinggal Next saja dan duduk manis :P.File instalasinya dapat diunduh pada link berikut https://www.st.com/en/development-tools/stm32cubeide.html. Oh iya untuk mendownload, pembaca diwajibkan untuk memiliki akun terlebih dahulu. Setelah terinstall buka STM32CubeIDE, kemudian klik “Start new STM32 project”, untuk memulai pemrograman.

Kemudian akan muncul tampilan untuk memilih MCU yang digunakan. Karena disini saya menggunakan STM32F103C8T6, pada TextBox part number search masukkan STM32F103C8 (Kotak Merah). Kemudian pilih MCU nya, dan klik Next.

Selanjutnya adalah memasukan nama project, disini saya menggunakan blink_stm32f103C8 untuk nama projectnya. Disini juga ada pilihan bahasa pemrograman yang digunakan, saya memilih C karena saya menurut saya lebih mudah (dasar newbie). Selanjutnya adalah klik Finish, apabila ini adalah project pertama anda. STM32CubeIDE akan mendownload terlebih dahulu firmware yang sesuai dengan MCU yang dipilih. Setelah itu akan muncul tampilan seperti pada gambar dibawah ini.

 

 

 

Secara default, STM32CubeIDE akan menampilkan file dengan ekstensi ioc. File ini digunakan untuk melakukan konfigurasi pin, clock, dll. Bahkan terdapat opsi untuk menggunakan Sistem Operasi FreeRTOS. Karena misi saya pada tulisan ini hanya untuk blinking LED, maka saya hanya perlu melakukan konfigurasi pada pin yang terhubung dengan LED. Disini kita dapat melihat konfigurasi pinout pada STM32F103C8T6.

Pada garis panah diatas dapat dilihat LED terhubung dengan Pin PC_13. Pada Pin Configuration kita perlu melakukan konfigurasi pin PC_13, dengan klik pada pin PC13 kemudian pilih GPIO_Output.

Kemudian pada Categories > System Core > SYS, pilih opsi Serial Wire pada Debug.

Selanjutnya adalah simpan file dengan shortcut Ctrl+S, STM32CubeIDE kemudian akan mengenerate code file yang akan kita gunakan untuk melakukan pemrograman.

Pada bahasa pemrograman C, fungsi yang pertama kali dieksekusi adalah fungsi main(). Pada kode yang sudah digenerate fungsi main terdapat pada file ./Core/Src/main.c

Kemudian untuk dapat menghidupkan dan mematikan LED (blinking LED), saya menggunakan fungsi yang disediakan oleh HAL Driver yaitu HAL_GPIO_TogglePin. Kemudian saya berikan delay setiap 500 ms untuk berkedip. Untuk kode yang dibuat sebaiknya dituliskan antara comment contohnya pada gambar dibawah saya taruh kodenya diantara comment “USER CODE BEGIN WHILE” dan “USER CODE END WHILE”. Apabila kode ditaruh diluar comment “BEGIN” dan “END”, ketika kita merubah konfigurasi pin/clock pada file ioc. STM32CubeIDE akan mengenerate kode ulang dan kode yang tidak berada diantara comment “BEGIN” dan “END” akan terhapus. Berikut adalah potongan kodenya

 

Selanjutnya untuk lakukan kompilasi dengan men-click tombol dengan icon palu (hammer). Kemudian pastikan tidak ada error pada program. Kemudian untuk melakukan flashing, click tombol debug kemudian akan muncul pop up, pilih “STM32 Cortex-M C/C++ Application”, kemudian click OK, Selanjutnya akan muncul konfigurasi debug, click OK. Seharusnya pada tahap ini program sudah dicompile dan diflash kedalam STM32F103C8T6 dan MCU sudah berkedip LED-nya.