Stm32F429-Disco GPIO Led Yakıp Söndürme
-
Upload
cagatay-kaynak -
Category
Technology
-
view
588 -
download
0
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
http://www.cagataykaynak.com