December 5, 2021

Blogna Kang U-2 Man

STM32, Embedded System, Microcontroller, ARM Cortex-M, RTOS, FreeRTOS

Blue Pill + STM32CubeIDE: GPIO Sebagai Input

2 min read

بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيم

Pada kedua tutorial sebelumnya, telah ditunjukan bagaimana memfungsikan GPIO sebagai output yang digunakan untuk mengedipkan sebuah LED. Pada tutorial kali ini, akan memfungsikan GPIO sebagai input, dipakai untuk membaca sebuah saklar. Saklar ini digunakan untuk menyalakan dan mematikan LED.

Saat saklar ditekan dengan cepat, maka akan men-toggle LED, tetapi ketika saklar ditekan lebih dari 1 detik maka LED akan berkedip 100 milidetik.

LED terhubung ke PC13 sedangkan saklar terhubung ke PB9 (difungsikan sebagai input tentunya). PC13 diber label LED sedangkan PB9 diberi label SW.

GPIO Pin out

Agar pembacaan saklar stabil, sebaiknya saklar diberi resistor pull-up, bisa eksternal maupun internal. Di tutorial ini digunakan pullup internal. Dari STM32CubeMx pilih pengaturan GPIO, lalu klik di PB9. Di GPIO Pull-up/Pull-down, pilih pull-up.

Seting Pull up internal

Ketikan code berikut di fungsi main

Dekalarsi variabel:

Pembacaan GPIO sebagai input dilakukan melalui fungsi HAL_GPIO_ReadPin(). Parameter yang diperlukan adalah port dan pin berapa. Dalam hal ini SW_GPIO_Port (GPIOB) dan SW_Pin (Pin 9). Perintah while digunakan sebagai anti bouncing yang selalu ada pada saklar (perangkat mekanis). Saat saklar ditekan, saklar akan menimbulkan seperti pantulan, sebelum benar-benar tersambung. Pantulan ini bisa dibaca oleh MCU sebagai penekanan berulang-ulang. Pantulannya mungkin dalam orde milidetik, tapi karena cepatnya prosesor, tetap akan terbaca.

Variabel PressTimer digunakan untuk mengukur waktu penekanan saklar. Jika waktu penekanan saklar lebih dari 10 milidetik (waktu anti bouncing) tetapi kurang dari 1 detik, maka LED akan di-toggle. Dan jika waktu tekan lebih dari 1 detik (1000 milidetik) program akan men-set variabel BlinkState sehingga LED akan berkedip, dengan metode blink witout delay.

Semoga bermanfaat

Visits: 7 Visits: 98030

Leave a Reply

Your email address will not be published. Required fields are marked *

Copyright © All rights reserved. | Newsphere by AF themes.