Posts Tagged ‘HAL’

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.