Stm32F429-Disco GPIO Led Yakıp Söndürme

Post on 16-Apr-2017

589 views 0 download

Transcript of Stm32F429-Disco GPIO Led Yakıp Söndürme

STM32F429 GPIO (Dijital Çıkış) İşlemleri (Hazırlayan : Çağatay KAYNAK | Elektrik – Elektronik Mühendisi | www.cagataykaynak.com ) Bu yazımda ARM tabanlı STM32F429ZIT6x mikrodenetleyicisine sahip olan STM32F429 Discovery

Deney kiti üzerinde basit dijital çıkış uygulamasının yapılışını anlatacağım. Bu uygulamayı yaparken

STM32 üzerinde GPIO ayarlarının nasıl yapıldığını ve GPIO kullanımını da kavramış olacaksınız.

Bu işlemi yaparken STM’in artık desteği yavaş yavaş kestiği Standart Periph. Library yerine HAL

Library kullanacağız. CubeMX desteği ile programımızın ana iskeletini oluşturacağız. Ve denememizi

yapacağız.

Bu uygulamayı yapabilmek için elimizde STM32 serisi bir deney kiti, Keil programı, CubeMX programı

olmalıdır.

Basamak basamak nasıl yapacağız anlatmaya başlıyorum.

1) Öncelikle CubeMX programını açın. New Project’e basın.

STM32F429-Disco deney kitinizin üzerine bakın.

LCD’nin arka yüzeyinde LQFP 144 kılıfına sahip 144

pinli bir mikrodenetleyici göreceksiniz. Üzerine

baktığınızda STM32F429ZIT6 yazdığını göreceksiniz.

Bu kit aslında üzerinde bazı modülleri barındıran

deneme aracıdır. Bizim esas amacımız bu kitin

üzerinde bulunan mikrodenetleyiciyi

programlamaktır. Bu sebeple kullanacağımız denetleyiciyi aşağıdaki ekranda görüldüğü şekilde

seçiyoruz.

2) Karşımıza aşağıda göreceğiniz pencere gelir. Burada denetleyicimizin tüm pin-out’unu ve içerisinde

bulunan modülleri(özellikleri) görebilirsiniz.

3) Kullanılan deney kitinin üzerinde kullanıcının programlaması için PG13 ve PG14 pinlerine bağlı 2

adet LED bulunuyor. Bu LED’lerden PG13’e bağlı olanı yakıp – söndürmek istiyoruz. Biliyorsunuz LED

yakıp söndürdükten sonra gerisi gelecektir

LED’in yanması için PG13 pininden çıkış yapılması gereklidir. Yani PG13 pininin çıkış(output) olarak

ayarlanması gerekir. Bunu şu şekilde ayarlayabiliriz. Öncelikle PG13 pininin üzerine tıklanır.

Biz çıkış(output) modunda kullanacağımız için buradan GPIO_Output’u seçeriz. Eğer başka bir

özelliğini kullanacak olsaydık buradan seçebilirdik.

4) Bu işlemi yaptıktan sonra denetleyicimizin çalışabilmesi için gerekli Clock ayarlarını yapmalıyız.

Denetleyicide dahili olarak 8 MHz kristal bulunuyor. Bu uygulamamızda dahili kristali

kullanacağımızdan Pinout sekmesinde herhangi bir ayar yapmıyoruz.

Clock configuration ekranına giriyoruz. Denetleyici içerisinde her bir modülün çalışması için farklı

clock üreteçleri vardır. Bu ekrandan bize gerekli olan modül/modüllerin çalışması için gerekli clock

konfigürasyonunu yapıyoruz.

Ayarlamaya ilk önce HCLK üzerinden başlayın. Daha sonra kırmızı ile belirtilen diğer ayarları da

yapın.

5) Böylece programımızın ana iskeletinde gerekli olan tüm ayarları tamamlamış olduk. Şimdi ise

Project menüsü altından “Generate Code”a tıklayın. Karşınıza aşağıdaki ekran gelir. Burada proje

adını yazın, projeyi kaydedeceğiniz konumu belirleyin ve kullanacağınız derleyiciyi seçin.

Eğer Keil 5 kullanıyorsanız : MDK-ARM V5, 4 kullanıyorsanız : MDK-ARM V4 seçin.

Tamamladığınızda OK’a basın. Kod derlenmeye başlar. Derlenme bittiğinde karşınıza gelen iletişim

kutusundan “Open Project”i seçin. Keil programında projemiz açılacaktır.

6) Projemiz açıldığında sol taraftaki ağaçtan Application/User altından main.c ‘yi seçeriz. Diğer

klasörlerdeki dosyalar, programı yazmamıza yardımcı olacak driver’ları içerir. Ancak programı

main.c’ye yazarız. Main’e çift tıklayarak açın.

7) Açtığınızda içerisinde USER CODE’lar yazan bir dosya göreceksiniz. Bu dosya tamamen CubeMX

tarafından sizin yaptığınız ayarlara göre oluşturuldu. Siz ayarları yapılmış bir dosya üzerinde kendi iş

yapan komutlarınızı yazarak, denetleyicinin istediğiniz şekilde çalışmasını sağlayacaksınız.

Gerekli olan komutları görebilmek için kullanacağımız modülün Driver dosyasını açmamız gerekir.

GPIO modülünü kullanacağımıza göre soldaki ağaçtan gösterilen dosyayı 2 kez tıklayarak açıyoruz.

8) Dosyayı açınca içerisinde “How To Use This Driver” yazan kısmı görürsünüz. Bu kısımda adım adım

bu özelliği program içerisinde nasıl kullanacağınızı, hangi komutları kullanmanız gerektğini size anlatır.

1.adımda HAL_GPIO_Inıt(); komutunun çalıştırılması gerektiğini söylemiş. Resimde görebilirsiniz.

9) main.c dosyasına geri döndüğümüzde programın başında MX_GPIO_Init(); fonksiyonunun

çalıştırıldığını görüyoruz. Programdaki fonksiyona inip bakıldığında zaten HAL_GPIO_Inıt();

komutunun çalıştırılmış olduğunu görüyoruz. Bu sebeple bu komutu yazmayacağız.

10) stm32fxx_gpio.c driver dosyamıza geri dönüp “How To” kısmına bakmaya devam edelim.

Baktığımızda dijital çıkış işlemleri için; HAL_GPIO_WritePin(); ve HAL_GPIO_TogglePin();

komutlarının kullanılacağını anlattığını görüyoruz. Şimdi bu komutları programımızda uygulayalım.

11) HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_SET); => PG13 pinini Lojik-1 yapar.(LED

yanar.)

HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_RESET); => PG13 pinini Lojik-0 yapar.(LED

söner.)

Kodumuzu yazdıktan sonra F7 tuşu ile programımızı Build ediyoruz. Build işlemi hatasız tamamlanmış

ise, STM32F429-Disco kitimizi USB ile bilgisayarımıza bağlıyoruz ve F8’e basarak kodumuzu

yüklüyoruz. Eğer STM32F429-Disco kiti kullanıyorsanız, programı yükledikten sonra kitin üzerindeki

Reset tuşuna basıp-bıraktığınızda, kit üzerindeki LED’in yanıp söndüğünü göreceksiniz

İyi çalışmalar dilerim.

Çağatay KAYNAK

Elektrik-Elektronik Mühendisi

cagataykaynak@gmail.com

http://www.cagataykaynak.com