All for Joomla All for Webmasters
Yapabilecekleriniz hayal gücünüz kadar geniştir.
STM
ARDUİNO
ONUR KÖSE
Kişisel Blog

STM32F4 Buton Uygulaması

Merhaba arkadaşlar, bu yazımda denetleyici programlamada genellikle 2. uygulama olan buton kontrolünü anlatacağım.

Bir önceki LED uygulaması yazımda GPIO çıkış komutlarını öğrenmiştik. Bu bölümde bir pinin nasıl okunacağını öğreneceğiz ve okunan duruma göre başka binden lojik çıkış alacağız.

STM32F4 üzerindeki mavi renkli kullanıcı butonunu kullanacağız. İlk olarak kart şematiğinde butonun bağlantılarını inceleyelim.

Resimde görüldüğü üzere buton PortA pin 0’a bağlı ve pull-down yapıda tasarlanmış. Bu demek oluyor ki buton basılmadığı durumda PA0 pininden lojik-0, butona basıldığı durumda PA0 pininden lojik-1 okunur.

Uygulamamızda ki hedef, butona basıldığında yeşil renkli LED, butona basılmadığı durumda kırmızı renkli LED ışık versin.

Kullanacağımız birimleri belirledikten sonra CubeMx tarafına geçerek konfigürasyonumuzu oluşturalım.

Yapmamız gereken ilk ayarlar;

  1. System Core -> SYS -> Debug -> Serial Wire
  2. System Core -> RCC -> High Speed Clock ve Low Speed Clock -> Crystal/Ceramic Resonator
  3. PA0 pinini GPIO_Input,
  4. PD12 (yeşil LED) pinini GPIO_Output,
  5. PD17 (kırmızı LED) pinini GPIO_Output olarak ayarlayalım.

Buton yapısını incelediğimiz kısımda pull-down yapıda bağlandığını söylemiştim. Bunu konfigürasyonumuzda ayarlamalıyız.

System Core -> GPIO yolunun takip edelim. Açılan pencerede PA0 üzerinde tıklayarak, GPIO Pull-up/Pull-down seçeneğini Pull-down olarak seçelim.

Aşağıda ki resimde GPIO ayarları verilmiştir.

CubeMx konfigürasyon raporu: Proje Rapor

Projemizi Generate Code butonu ile oluşturalım.

Yazılım

İlk olarak GPIO okuma komutundan bahsedelim;

HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

ReadPin komutu parametre olarak okumak istediğiniz Port ve Pin numarasını almaktadır. Cevap olarak 1 veya 0 durumunu dönderir.

Okunan pin Lojik-1 ise GPIO_PIN_SET yani 1,

Lojik-0 ise GPIO_PIN_RESET yani 0 cevabını verir.

Gelelim uygulamamızı kodlamaya. Yazımın başında belirttiğim gibi butona basıldığında yeşil renkli LED, basılmadığı durumda kırmızı renkli LED’i yakan komutları yazacağız.

İlk olarak PA0 pininde ki butonu okuyalım. Buton pull-down bağlandığı için basıldığı durumda lojik-1 dönderecektir. ReadPin komutu lojik-1 duruma karşılık 1 değerini dönderecektir. ReadPin fonksiyonundan 1 değeri alındığı durumda yeşil LED lojik-1, kırmızı LED lojik-0 olacaktır. Tam tersi durumda 0 değeri geldiği an yeşil LED lojik-0, kırmızı LED lojik-1 olacaktır. O halde;

Yukarıda ki uygulamayı derleyip, karta yüklediğimiz zaman ilk olarak kırmızı LED yanacaktır. Butona basıldığı an kırmızı LED sönerek yeşil LED yanacaktır.

Proje dosyalarının tamamı: Proje Dosyaları

GPIO okuma komutlarında kendinizi geliştirmek için aşağıdaki örnekleri yapabilirsiniz.

  1. Butona 3 kez basılırsa yeşil, 5 kez basılırsa mavi renkli LED yansın.
  2. 100ms periyotlar ile turuncu LED blink yapsın. Butona basılırsa blink işlemi durdurulsun, basılmadığı zamanlarda devam etsin.
  3. Butona basılan süreyi hesapla, Basılan süre kadar yeşil LED lojik-1 yapılsın, (2000-basılan süre) kadar lojik-0 yapsın. (basılan süre 2 saniyeden fazla olmamalıdır)
About the author

Leave a Reply

Merhaba

Bloguma Hoşgeldiniz.

Kategoriler

Arşivler

Çevrimiçi Kişiler

3 Misafir