Ders 2: STM32F407 ye genel bakış ve Led Yakma

Bu derste uygulamalarımızda kullanacağımız,piyasada kolayca temin edebileceğimiz ve internet ortamında bolca bilgi ve örnek uygulama bulacağımız stm32f407 discovery kartını tanımlayıp basit olarak ilk örneğimiz olan kart üzerindeki 4 adet ledi yakacağız.

Kit üzerinde ARM Cortex M4 tabanlı kristal hızı 168 MHz olan bir mikrodenetleyici bulunuyor. Cortex M4 mimarisi,standart mikrodenetleyici uygulamalarının yanısıra DSP fonksiyonlarını da içinde barındıran bir mimari olup sinyal işlemede bu kartı kullanmamıza imkan sağlamaktadır.Ayrıca M3 den farklı olarak FPU(Floatin Point Unit) birimini de içermektedir.Bu sayede ondalık işlemler kolaylıkla yapılabilmektedir.

2

Geliştirme Kartının Genel Özellikleri

►32-bit ARM Cortex-M4F çekirdeğine sahip STM32F407VGT6 mikrodenetleyicisi, 1 MB Flash ve 192 KB RAM

►Dahili ST-LINK/V2 JTAG Debugger

►USB veya harici kaynaktan doğrudan 5v ile çalışabilme

►3 V ve 5 V luk çıkış pinleri

►3-eksen dijital ivmeölçer (LIS302DL)

►Omni-Directional Mikrofon (MP45DT02)

►D sınıfı yükselteçli ses sürücü çipi(CS43L22)

►Sekiz adet LED:

►LD1 (kırmızı/yeşil)(USB haberleşmesi için)

►3v3 power on/off LEDi

►Dört adet kullanıcı LEDi, LD3 (turuncu), LD4 (yeşil), LD5 (kırmızı) ve LD6 (mavi)

►2 adet USB OTG LEDi, LD7 (yeşil) ve LD8 (kırmızı)

►Bir adet Reset ve bir adet kullanıcı tanımlı buton

►USB OTG için mikro-AB konnktör.

►100 pin’in tamamını kullanabilmeye imkan tanıyan çıkışlar.

3

Kart üzerinde bulunan birçok çip sayesinde başka donanıma ihtiyaç kalmadan onlarca proje gerçekleştirilebilmektedir.

▬ Çokça sorulan sorulardan birisi olan, bu kart ile drone/uçak tarzı araçlar yapılabilir mi? Sorusuna cevaben, kartın üzerinde bulunan 3 eksen ivme sensörü,harici olarak bağlayacağınız gsm/gprs/gps/rf modülleri gibi ek donanımlarla rahatlıkla kendi drone yada uçaklarınızı yapabilirsiniz.

 

Çalışmalarda en çok ihtiyacımız olacak diğer döküman ise stm32f407 schematic dosyasına aşağıdaki linkten ulaşabilirsiniz.( “Schematic Packs” başlığı altındaki “STM32F4DISCOVERY schematics” dosyası )
►http://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-mcu-discovery-kits/stm32f4discovery.html

Şematik dosyası sayesinde kart üzerine yerleştirilmiş donanımların işlemcinin hangi pinine bağlandığını kolayca görebiliriz.

 

STM32f407 ile LED YAKMA ÖRNEĞİ

Kod yazmaya başlamadan önce genel olarak izlememiz gereken yol;

♦ İlk olarak kullanacağımız kütüphanenin “How To Use This Driver” yazısı okunmalı

♦ Daha sonra kullanılacak pinin clock ayarlaması yapılmalı(Hangi pinin hangi bus hattına bağlı olduğunu datasheetten yada proje oluşturduktan sonra stm32f4xx_rcc.c dosyasına girip 1433. Satırdan itibaren bulabilirsiniz.

♦ Structure ayarları yapılmalı

♦ Pinin özellikleri ayarlanmalı(I/O, Pull-up-Pull-down,Alternate function… vs)

 

Şematik dosyamızın 6. Sayfasında kart üzerindeki ledlerin hangi pinlere bağlı olduğu bilgisine kolayca ulaşabiliriz.

leds

Keilde Led_Blink adında proje oluşturduktan sonra gerekli ayarlamaları yapıyoruz.Önceki dersten farklı olarak “Manage run” sekmesinde ek olarak GPIO ve RCC yi de ekliyoruz.

manage

Bu bilgilere göre D12-13-14-15 pinlerine bağlı olan ledleri yakmak için öncelikle D portuna clock vermemiz gerekmektedir. D portunun hangi bus üzerinde oldugunu ise stm32f4xx_rcc.c dosyasından bakacak olursak AHB1 bus ı üzerinde olduğunu görebiliriz.

rcc

 

Led yakma koduna gelecek olursak,

program

 

Kodu derlektikten sonra Download(F8) ile kartımıza yükleyip reset butonuna bastıktan sonra D12 ye bağlı olan ledimiz set edilmiş olacaktır.Diğer ledleri aynı şekilde kullanabilirsiniz, delay oluşturup yada for döngüsü ile led blink uygulamasını geliştirebilirsiniz.

 

Diğer dersimiz olan “Buton ile Led Yakma” dersimizde devam etmek üzere.

 

  1. #include "stm32f4xx.h" // Device header
  2.  
  3. int main()
  4. {
  5. GPIO_InitTypeDef GPIO_InitStructure; // Structure Ayarlari
  6. RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); // Clock ayarlari
  7.  
  8. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 |GPIO_Pin_13 |GPIO_Pin_14 |GPIO_Pin_15; // 12-13-14 ve 15. pinler seçildi
  9. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; // OUT mod seçildi
  10. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; // H1z 100Mhz e set edildi
  11. GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //Ç1kis PP secildi
  12. GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  13. GPIO_Init(GPIOD, & GPIO_InitStructure ); // Initialize ayarlamalari yapildi
  14. while(1) // sonsuz döngüye girildi
  15. {
  16. GPIO_SetBits(GPIOD, GPIO_Pin_12); // 12. pin set edildi
  17. // GPIO_ResetBits(GPIOD, GPIO_Pin_12);
  18. }
  19. }

 

Hatırlatma

Led yakma uygulamasında GPIO.C kütüphanesini kullandık,kütüphaneyi incelemenizi öneririm.

driver

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir