Memprogram STM32 Nucleo dengan STM32CubeIDE Bagian 1: GPIO Input Output dan Blink

Mungkin para pembaca sebelumnya sudah familiar dengan Atmega mikrokontroler, itu tuh yang sering dipake di arduino. Kalian mungkin menyadari ternyata ada beberapa kekurangan atau limitasi yang arduino bisa lakukan seperti di kecepatan sampling ADC yang rendah, frekuensi PWM rendah, enggak adanya fitur DAC (kecuali arduino Due) dan Floating Point Unit (FPU) sehingga mencari MCU yang lebih powerfull dan salahsatunya adalah STM32 Microcontroller.

STM32 merupakan mikrokontroller 32-bit yang didesign oleh STMicroelectronic berdasarkan arsitektur ARM Cortex. Jadi, perusahaan STMicroelectronic ini membeli lisensi design ARM Processor dari ARM Holdings yang kemudian didesign ulang (costum design) oleh STMicroelectronic, untuk lebih jelasnya bisa dilihat di wikipedia atau di website STM32.

Sekarang menuju tujuan utama, yaitu mengendalikan GPIO (General Purpose Input Output) STM32. Penulis disini menggunakan STM32 Nucleo-64 development board, NUCLEO-F446RE yang menggunakan MCU STM32F446RE, tampilan devboard seperti gambar dibawah :

Sedangkan dibawah merupakan gambar pinout dari sisi kanan arduino header

Untuk memprogram mikrokontroller ini penulis menggunakan STM32CubeIDE, software ini bisa didownload disitus resmi disini, kemudian pilih sesuai dengan sistem operasi yang digunakan. Ketika hendak mendownload, kita diharuskan mengisi nama dan email karena link downloadnya akan dikirim lewat email.

Pertama, buat projek baru dengan cara klik File->New->STM32 Project

Pilih tab board selector, cari board yang digunakan lalu klik next seperti gambar dibawah

Pilih nama project, disini penulis memilih nama GPIO, lalu klik Finish

Jika muncul tulisan seperti dibawah pilih Yes. Artinya kita akan menggunakan pengaturan bawaan Nucleo board

Dibawah meru[akan gambar pinout dari STM32, jika dilihat seksama pada pin PA5 atau D13 terhubung sebuah LED, dan pada PC13 terhubung sebuah push button yang berwarna biru, bisi dilihat di board.

Untuk menambahkan input atau output caranya mudah, tinggal klik pada pin yang diinginkan lalu pilih GPIO_Input atau GPIO_Output, disini penulis memilih pin PA8 atau D7 sebagai output seperti gambar dibawah

Setelah selesai, kita harus men-generate code dengan konfigurasi yang telah dibuat dengan mengklik icon gerigi seperti gambar dibawah

Lalu buka file utama tempat menulis program yang bernama main.c, file ini berada pada Project Explorer, GPIO->Core->Src lalu klik 2x file main.c, seperti gambar dbawah ini

Kemudian akan tampil baris program yang di generate tadi.

Sekarang tujuan kita adalah menyalakan LED bawaan Board STM32 yang terhubung ke pin PA5 atau D13, dengan menabahkan kode dibawah pada while super loop

Jika di breakdown lebih dalam GPIOA adalah channel dari pin yang digunakan dan GPIO_PIN_5 adalah nomor pin yang digunakan, sedangkan GPIO_PIN_SET memberikan logika HIGH, GPIO_PIN_SET bisa diganti dengan angka 1, kebalikannya adalah GPIO_PIN_RESET yang memberikan logika LOW, GPIO_PIN_RESET bisa diganti dengan angka 0.

Sekarang kita mencoba menyalakan dan mematikan LED dalam rentang waktu tertentu, atau yang sering disebut program blink. Caranya sama namun dengan tambahan fungsi delay, dapat dilihat sebagai berikut

atau bisa juga menggunakan fungsi TogglePin

Fungsi TogglePin adalah membalik state atau kondisi terakhir dari pin, misal jika pin dalam keadaan SET/HIGH, kemudian fungsi TogglePin dieksekusi akan diganti jadi menjadi RESET/LOW.

Sekarang beralih ke input, kita akan mencoba membaca kondisi dari pin PC13 yang terhubung ke sebuah push button.

Pada STM32 Nucleo, hubungan PC13 dan push button memiliki konfigurasi active low, dimana dalam keadaan push button open (tidak ditekan) pin PC13 menerima sinyal HIGH/1, sedangkan ketika push button close (ditekan) pin PC13 menerima sinyal LOW/0. Untuk rangkaian dari push button dan PC13 dapat dilihat pada gambar dibawah

Terlihat bahwa ketika keadaan semula pin PC13 terhubung ke VDD, sedangkan ketika B1 (Push button) ditekan maka pin PC13 terhubung ke Ground.

Sekarang kita akan mencoba menyalakan LED ketika Push Button ditekan, berikut adalah code nya

Untuk membaca keadaan pin GPIO dapat menggunakan fungsi HAL_GPIO_ReadPin(GPIOx, GPIO_PIN_y)

Sekian pembahasan mengenai GPIO, di tulisan selanjutnya penulis akan membahas topik STM32 lainnya seperti TIMER, ADC, DMA dan lainnya.

Comments are closed.