STM32F4’te External (Harici) Interrupt ile User Button Uygulaması ve Interrupt’ta Priority (Öncelik) Kavramı

User Button ile LED Toggle uygulamasının Interrupt kullanılmadan yapmıştık. Interrupt’sız Input’ların main fonksiyonu içerisinde kullanılması için programın yürütmesinde büyük sıkıntılar oluştuğunu açıklamıştım. Çünkü int main(void)‘in içindeki while(1){…} sonsuz döngü blokunun içinde while döngüsü kullanmamız gerekiyor veya flag kullanarak butona bastığımızda flag’ı 1’e eşitleyerek butona basıldığını anlayabilir ve de işlemimizi yaptıktan sonra flag‘ı tekrar 0 yaparak programın döngüde kalmasını engelleyebiliyor olsak da işlemcimiz butona bastığımız andan çok daha hızlı çalıştığı için bu çeşit bir metotta da sıkıntı yaşayabilirdik. En sorunsuz uygulama ise butona basıldığında ana programımızı çok kısa bir süreliğine Interrupt ile keserek, External Interrupt Handler ile butona basıldığında yapılması gerekenleri yapabiliriz. Bu şekilde programımız kaldığı yerden sorunsuz olarak çalışmaya devam etmiş olur.

Read more

STM32F4 User Button Kullanımı

Bilindiği gibi STM32F4’ün üzerinde User Button (Kullanıcı Butonu) bulunmaktadır. Kartın üzerinde bukunan LED’leri nasıl output olarak kullanabiliyorsak, bu butonu da input olarak kullanabiliyoruz. STM32F4’te projelerimizde kullanmak istersek diye, bu buton ile ilgili bir örnek kod yazıp paylaşmak istedim.

Yazacağımız kodda butona bastığımızda LED Toggle olsun. Yani SET ise RESET, RESET ise SET olsun. Bunun için bir adet GPIO’yu output olarak LED için tanımlamamız lazım. Bir de input için bir adet PIN ataması yapmamız lazım. Ama istediğimiz herhangi bir PIN’e atama yapamayız. Çünkü donanımsal olarak butonun ve LED’leri bağlı bulunduğu PIN’ler belli. Eğer STM32F4 geliştirme kartının üzerindeki buton ve LED’leri kullanmayıp da başka LED ve PIN’ler kullanmak isteseydik o zaman istediğimiz PIN’i kullanabilirdik.

Read more