Saya menemukan jawaban ini dari STM32 Memahami Pengaturan GPIO
- GPIO_PuPd (Pull-up / Pull-down)
Dalam sirkuit digital, penting bahwa garis sinyal tidak pernah diizinkan untuk "mengambang". Artinya, mereka harus selalu dalam kondisi tinggi atau rendah. Saat mengambang, keadaan tidak dapat ditentukan, dan menyebabkan beberapa jenis masalah.
Cara untuk memperbaikinya adalah dengan menambahkan resistor dari jalur sinyal ke Vcc atau Gnd. Dengan begitu, jika saluran tidak sedang aktif didorong tinggi atau rendah, resistor akan menyebabkan potensi melayang ke tingkat yang diketahui.
ARM (dan mikrokontroler lainnya) memiliki sirkuit bawaan untuk melakukan ini. Dengan begitu, Anda tidak perlu menambahkan bagian lain ke sirkuit Anda. Jika Anda memilih "GPIO_PuPd_UP", misalnya, sama saja dengan menambahkan resistor antara garis sinyal dan Vcc.
- GPIO_OType (Jenis Output):
Push-Pull: Ini adalah tipe output yang kebanyakan orang anggap sebagai "standar". Ketika output rendah, secara aktif "ditarik" ke ground. Sebaliknya, ketika output diatur ke tinggi, secara aktif "didorong" ke arah Vcc. Sederhana, tampilannya seperti ini:
Output Open-Drain, di sisi lain, hanya aktif dalam satu arah. Ini dapat menarik pin ke tanah, tetapi tidak dapat mendorongnya tinggi. Bayangkan gambar sebelumnya, tetapi tanpa MOSFET atas. Ketika tidak menarik ke tanah, MOSFET (sisi bawah) hanyalah non-konduktif, yang menyebabkan output mengambang.
Untuk jenis output ini, perlu ada resistor pull-up yang ditambahkan ke sirkuit, yang akan menyebabkan garis naik tinggi ketika tidak didorong rendah. Anda dapat melakukan ini dengan bagian eksternal, atau dengan mengatur nilai GPIO_PuPd ke GPIO_PuPd_UP.
Namanya berasal dari fakta bahwa saluran MOSFET tidak terhubung secara internal dengan apa pun. Jenis output ini juga disebut "kolektor terbuka" saat menggunakan BJT, bukan MOSFET.
Pada dasarnya, ini mengontrol laju perubahan tegangan (waktu naik dan turun) sinyal keluaran. Semakin cepat laju perubahan tegangan, semakin banyak noise yang dipancarkan dari sirkuit. Ini adalah praktik yang baik untuk menjaga laju perubahan tegangan lambat, dan hanya meningkatkannya jika Anda memiliki alasan tertentu.