Advertisement

Tutorial STM32 – 5 : Belajar GPIO (Bab Output) – Bagian 2

0 3,624

stm1-520x190Setelah relatif paham mengenai register -register yang terlibat dalam GPIO, kini waktunya kita membedah program hello world yang telah dibuat dalam pertemuan ke 3. embeddednesia sangat menyarankan anda membaca terlebih dahulu tulisan embeddednesia sebelumnya yang membahas  register dalam GPIO.

Dalam tutorial ini embeddednesia menggunakan minimum system mikrokontroler STM32F103C8T6 dan downloader ST-LINK V.2 yang bisa didapatkan di TOKO BEY. Jika anda belum punya, embeddednesia sarankan anda membelinya secara online dengan mengklik  halaman pembelian STM32F103C8T6 dan ST-LINK V2.

Oke, mari kita bedah, berikut source code-nya.


#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
GPIO_InitTypeDef GPIO_InitStructure;
void wait_ms(int t){
volatile int i;
for (i=0;i<t*2000;i++);
}
void setup_gpio(){
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All ;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
int main(void){
setup_gpio();
while(1){
GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);
wait_ms(100);
GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);
wait_ms(100);
}
}
view raw

main.c

hosted with ❤ by GitHub

Bagi mereka yang telah membaca tutorial embeddednesia sebelumnya pasti bertanya-tanya. Mengapa tidak ada penampakan operator penugasan dan nama – nama register seperti yang dibahas sebelumnya? Ya. Pada pertemuan sebelumnya embeddednesia sengaja membahas pada tingkatan aras bawah agar pembaca tahu benar prinsip kerja dari STM32. Pengetahuan ini perlu, agar kita tidak kagok, ketika dihadapkan dengan compiler yang berbeda – beda, seperti saat menggunakan Keil, atau MikroC.

Namun saat ini, dalam pengimplementasian menggunakan CoIDE, kita beruntung karena CooCox Software sudah menyediakan beragam library yang tidak hanya gratis, tapi juga open source sehingga kita tinggal men-include library yang diperlukan dan memanggil fungsi – fungsinya. Perhatikan dalam program ini, pada baris 1 dan 2 digunakan  stm32f10x_gpio.h untuk mengakses GPIO dan stm32f10x_rcc.h untuk RCC.

Fungsi setup_gpio di baris 9-15 bertujuan untuk menginisialisasi GPIO sebelum digunakan. Pada baris 10,  RCC_APB2PeriphClockCmd adalah fungsi yang mengaktifkan peripheral sebelum digunakan (baca tulisan terdahulu tentang Clock Distribution) dalam hal ini GPIOC menjadi enable. Setelah itu baru bisa dilakukan konfigurasi port dengan mengatur nilai struct GPIO_InitTypeDef, pengaturan itu melingkupi konfigurasi sebagai berikut :

  1. GPIO_Speed : Pengaturan kecepatan slew rate (rise time dan fall time) dari sinyal keluaran GPIO apakah 10MHz, 2MHz, 50Mhz.
  2. GPIO_Mode  : Pengaturan mode GPIO apakah sebagai Output Push Pull, atau Output Open Drain.
  3. GPIO_Pin  :  Pengaturan pin mana yang akan diaktifkan.

Pada Baris 14, GPIO_Init pada dasarnya berisi alur perintah yang bertujuan mengeset Register  GPIOx_CRL, GPIOx_CRH, berdasarkan informasi pengaturan pada struct GPIO_InitTypeDef.

Setelah inisialisasi GPIO selesei dilakukan. Pada infinite loop while(1) baris 20 dan baris 22, program memerintahkan memberikan logika 1 dan 0 secara bergantian. Perintah ini dilakukan oleh fungsi GPIO_WriteBit yang pada dasarnya mengeset nilai Register BSRR dan BRR sesuai dengan nilai bit yang dikehendaki.

Bagi mereka yang menggunakan minimum System STM32F103C8T6 seperti yang embeddednesia gunakan, anda dapat mengamati bahwasannya led onboard yang terhubung dengan PC13 memiliki rangkaian active low seperti gambar berikut

led-active-low

Jadi ketika embeddednesia memberikan logika 1, led akan mati, dan ketika diberikan logika 0, led akan menyala, karena arus masuk dari Vdd ke PC13. Hal ini ada kaitannya dengan kemampuan sink current yang telah dibahas pada pada pertemuan ke 4 sub-bab pengaturan push pull. Ketika embeddednesia bandingkan dengan rangkaian led active high, maka didapatkan hasil berlawanan.

Oke, Demikian pembahasan embeddednesia kali ini tentang GPIO bab Output pada STM32. Tidak sulit bukan?

Salam Elektronika!

 

Baca juga tulisan tentang #Tutorial Mikrokontroler STM32 atau tulisan menarik lainnya di kategori Mikrokontroler  ARM 32 bit

Tinggalkan Balasan

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.