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 Led Uygulaması

Merhaba arkadaşlar, bu yazımda STM32F4 Discovery kartında ki 4 adet kullanıcı LED’lerinin kontrolünü anlatacağım.

Anlatıma başlamadan önce bazı noktalara değinmek istiyorum. Bundan sonra ağırlıklı olarak anlatacağım STM32 projelerinde C bilginizin orta düzey olduğunu varsayıyorum. İlerleyen projelerimizde komutlar complex hale gelecek ve uzun komutlardan oluşacaktır. Eksik hissediyorsanız geliştirmenizi tavsiye ederim özellikle fonksiyon konusundan başlayarak, pointer, structre, tür dönüşümleri vs… Yazdığım tüm komutlar Keil uVision IDE üzerinden gerçekleştirilecektir.

İlk olarak kartın şematiğini inceleyerek, LED’lerin hangi pinlere bağlandığını bulalım.

Gördüğünüz üzere LED’ler sırayla PORTD’nin 12, 13, 14 ve 15. pinlerine bağlanmış. Dolayısıyla PORTD’nin belitilen pinlerinin lojik durumunu değiştirerek LED’leri çalıştıracağız.

Sırada STM32F4 Kartının CubeMx konfigürasyonunu oluşturalım. Daha önceki yazılarımda STM32F103C8T6 için CubeMx üzerinden proje oluşturmayı anlatmıştım.

CubeMx programını çalıştırdıktan sonra MCU Selector bölümünden STM32F407VG entegresini seçelim. Pinout & Configuration ekranı açılacaktır.

  1. System Core -> SYS -> Debug -> Serial Wire
  2. System Core -> RCC -> High Speed Clock ve Low Speed Clock -> Crystal/Ceramic Resonator olarak ayarlayalım.

Son olarak LED’lerin bağlı olduğu pinleri output olarak ayarlamalıyız.

Sağ taraftaki Pinout view ekranında PD12 – PD15 pinlerine sırayla tıklayalım ve GPIO_Output seçelim.

Projemizin temel konfigürasyonu hazırdır. Üst menüde ki Project Manager bölümüne gelerek proje adını ve yolunu belirtelim, Generate Code butonuna tıklayarak projemizi oluşturalım.

Proje konfigürasyonunu resimli olarak aşağıdaki linkten indirebilirsiniz.

Proje Rapor

Yazılım

Bir pinin çıkış durumunu kontrol etmek için HAL kütüphanesinde bazı komutlar bulunmaktadır. Sırayla inceleyecek olursak;

HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)

WritePin komutu parametre olarak belirtilen Porttaki pinin lojik durumunu, pinstate parametresine bakarak değiştirir.

 

HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

Toggle komutu parametre olarak belitilen portda ki pinin lojik durumunu ters çevirir. Bir önceki durumu lojik-1 ise komut işledikten sonra lojik-0, önceki durumu lojik-0 ise komut işledikten sonra lojik-1 olur.

Örnek kullanım;

Ana programımız ledleri sırayla 250ms aralıklarla yakıp söndürsün.

Yukarıda ki komutlar port D pin 12’den başlayarak pin 15’e kadar olan pinleri 250ms aralıklar ile Lojik-1 Lojik-0 yapmaktadır. Karta yüklediğiniz zaman 4 adet kullanıcı LED’lerinin sırayla yandığını göreceksiniz.

CubeMX ve Keil uVision proje dosyalarını aşağıdaki linkten indirebilirsiniz.

Proje Dosyaları
About the author

Leave a Reply

Merhaba

Bloguma Hoşgeldiniz.

Kategoriler

Arşivler

Çevrimiçi Kişiler

3 Misafir