Daha önceki yazılarımızda Stm için Standart Peripheral Library kullanmıştık. Stm'in hal kütüphanesini desteklemesi ve bundan sonra da bu kütüphaneyi kullanacak olması ister istemez bizleri de hal kütüphanesini kullanmaya mecbur kılmıştır. Bu yazıda basit bir şekilde STM32CubeMx derleyici kullanarak hal kütüphanesi ile nasıl proje oluşturulur ve 16x2 LCD nasıl kullanılır hakkında bahsedeceğiz.
Öncelikle STM'in kendi sitesinden STM32CubeMX programını indirin. Programın kurulu olduğunu var sayarsak, başlangıçta yukarıda bulunan:
File -> New Project yaparak yeni bir dosya oluşturmamız gerekiyor.
Akabinde bizi aşağıdaki gibi bir pencere karşılayacak:
Kırmızı çizgi içinde kalan yerden direkt olarak kullanacağımız Stm işlemcisini seçebiliriz, ya da onun altında bulunan kısımdan da hangi işlemciyi kullanacağımızı belirleyebiliriz. Biz STM32F407VG'yi seçiyoruz, çünkü discovery boardımızda bu işlemci bulunmaktadır. Pencerinin sağ alt tarafında bulunan MCUs/MPUs List kısmında STM32F407VG yazan satıra çift tıklıyoruz ve karşımıza aşağıdaki gibi bir ekran gelecek:
Burada öncelikle kristal ayarımızı yapalım. Bunun için sol tarafta bulunan System Core kısmını seçeceğiz. Hemen altında bir pencere açılacak oradan da RCC sekmesine tıklayalım, orda da hemen yana bir pencere açılacak ve karşımıza aşağıdaki gibi bir ekran görüntüsü oluşacaktır.
Sağ taraftaki kırmızı ile çizilen yerde Crystal/Ceramic Resonator seçeneğine tıklayacağız. Böyleye kristal seçimini tamamlamış olduk.
Daha sonra yine sol yanda bulunan System Core kısmından SYS sekmesine tıklayalım. Burdan da yine hemen yana bir pencere açılacak ve karşımıza aşağıdaki gibi bir ekran görüntüsü oluşacaktır:
Sağ taraftaki kırmızı ile çizilen yerde Debug kısmında Serial Wire seçeneğine tıklayacağız. Bu program atarken kullanacağımız yöntemle alakalı. Biz Program atarken SWD pinlerini kullandığımız için bu seçeneği seçmemiz gerekiyor. Belki STM32F4 discovery board da sıkıntı çıkarmaz ama daha farklı işlemciler kullandığımızda bu seçeneği yapmazsak program atarken işlemcinin NRST pinini kendimiz manuel olarak gnd'ye çekip bırakmamız gerekecek ve sıkıntı oluşacaktır. Zaten bu kısmı yaptığımızda sağ tarafta aşağıdaki gibi bir görüntü oluşacaktır.
Kırmızı ile işaretlenen yerlerden 1 yazan yer kristal seçtimiz için oluştu. 2 ile işaretlenen yer ise Serial Wire seçtiğimiz için oluştu. Zaten SWCLK ve SWDIO pinleri de program atma pinleridir.
Bu kısımlar her projede yapmamız gereken ayarlardır. Şimdi sırada LCD için ayar yapmaya geldi. Öncelikle LCD için kurulum yapmamız gerekiyor. Kendi yazmış olduğum kütüphane de var ancak aşağıdaki vereceğim linkteki LCD kütüphanesi çok iyi olduğu için onu kullanacağız. İnternetten bulduğum kütüphaneyi nereden indirdiğimi hatırlamadığım için orjinal linki veremiyorum. Ama dediğim gibi kütüphane bana ait değildir, indirdiğim sayfayı hatırlasam kaynak olarak gösterecektim, o yüzden bu yazıyı okuyan birileri o sayfayı bulursa ve buraya yorum olarak yazarsa daha sonra kaynak olarak o sayfayı göstereceğim.
Kütüphane Linki: https://yadi.sk/d/j7lnlMGXzUgCXA
Yukarıdaki linkten kütüphane dosyalarını indirin. Şimdilik kenarda dursun daha sonra bu kütüphaneyi proje dosyamıza ekleyeceğiz.
Şimdi LCD için kullanacağımız pinleri seçelim. Seçeceğimiz pinlerin aynı portta olmasına dikkat edelim. Çünkü kütüphane pinleri aynı portta olduğu kabul edilmiştir. Yani A portu ise bütün pinleri A portunda seçelim ya da B ya da, ya da C.. Kütüphanede LCD kurulumu için hem 4 pin hem de 8 pin kullanarak yazılmasına izin verilmiştir. Ben burada data pinlerini 4 pin olarak kuracağım. İsteyen data pinlerini 8 pin olarak da kurabilir. İki şekilde de sıkıntı olmayacaktır. O halde pinleri seçmeye başlayalım. Pencerenin sağ tarafında bulunan işlemci görselinden PA4 pinine tıkladığımızda yine hemen üstünde bir pencere açılacaktır. Bu ufak pencere bu pinin işlevinin ne olarak kullanmak istediğimizi belirttiğimiz kısım. Mesela input, output, ADC girişi veya harici kesme vb birçok özellik bulunmaktadır. Biz output olarak kullanacağımız için GPIO_Output seçeneğine tıklayacağız. Görsel aşağıdaki gibi olacaktır:
Ayarı yaptığımızda pin rengi yeşile dönecektir. Sırasıyla PA4, PA5, PA6 ve PA7 pinlerini de çıkış yapalım. Son görsel aşağıdaki gibi olacaktır:
Şimdi de LCD nin RS ve Enable pinlerini ayarlayalım. Sırasıyla PA1 ve PA2 pinlerini de çıkış yapalım. Son görsel aşağıdaki gibi olacaktır:
Ayarları yaptık şimdi ise Clock Configuration kısmını yapalım. Programın üst kısmında bulunan Clock Configuration sekmesine tıklayalım, karşımıza aşağıdaki gibi bir pencere çıkacak:
Burada da işlemcimizi çalıştırmak istediğimiz hızı ayarlayacağız. İşlemci 168Mhz hız desteklediği için 168MHz yapacağız. Siz isterseniz daha düşük hızlarda da ayarlayabilirsiniz. Aşağıdaki resimdeki gibi sol tarafta kırmızı işaretli yere 8, sağdaki kırmızı işaretli yere 168 yazın ve entere basın.
Bu kısmı ayarladıktan sonra yine üst tarafta bulunan Project Manager sekmesine tıklayın. Karşınıza aşağıdaki gibi bir pencere çıkacaktır:
Karşınıza çıkan pencerede kırmızı ile işaretli 1 yazan yere proje ismini yazın. 2 yazan yere projenizi kaydedeceğiniz klasörü seçin ve 3 yazan yerde de Keil kullanıyor iseniz MDK-ARM seçeneğini seçin. Diğer hiçbir yeri değiştirmenize gerek yoktur. Daha sonra sağ üst kısımda bulunan GENERATE CODE yerine tıklayın. Eğer daha önceden CubeMX i kurmuşsanız dosyalar zaten yüklü olduğu için direkt olarak size aşağıdaki gibi bir pencere gelecektir.
Buradan Open Project derseniz keil programı açılır ve konfigürasyon dosyaları otomatik olarak oluşturulmuş halde gelir. Eğer CubeMX için gerekli olan dosyalar daha önce yüklü değilse size bir uyarı verir ve yukarıdaki resim gelmeden önce o programı yüklemeyi gösteren pencere açılır oradan indir derseniz dosyaları otomatik olarak kurar. Bilgisayarınız internete bağlı olması gerekmektedir dosyaları yüklemek için. Yüklü ise internete ihtiyacınız yoktur.
Proje açıldığında aşağıdaki gibi gelmektedir. Sol tarafta kırmızı ile işaretli olan yerden LCD_Ornek yazan yerin solundaki + işaretine tıklayın daha sonra Application/User yanındaki + işaretine tıklayın ve en son main üzerine çift tıkladığınız zaman main dosyası açılmış olacaktır.
Şimdi sıra daha önce verdiğim linkten indirmiş olduğunuz kütüphaneyi projemize dahil etmeye geldi. Bunun için indirdiğimiz kütüphane klasöründeki STM_MY_LCD16X2.h dosyasını kopyalayın ve projeyi oluşturduğumuz klasörün içindeki -- Inc -- klasörünün içine yapıştırın. Daha sonra yine indirdiğimiz kütüphane klasörü içindeki STM_MY_LCD16X2.c dosyasını kopyalayın ve projeyi oluşturduğumuz klasörün içindeki -- Src -- klasörünün içine yapıştırın.
Daha sonra keil programına gelin ve sol tarafta bulunan Application/User yazan yere çift tıklayın ve açılan pencerede proje klasörünün içine kopyaladığımız Src klasöründeki STM_MY_LCD16X2.c dosyasını seçin ve tamam deyin. Aşağıdaki gibi görsel gelecektir :
Daha sonra main.c dosyasındaki
/* USER CODE BEGIN Includes */
#include "STM_MY_LCD16X2.h" // bu yazılacak araya
/* USER CODE END Includes */
görsel aşağıdaki gibidir:
Artık kodumuz hazır. LCD kurulumu yapıp lcd ye yazı yazabiliriz. LCD kurulumu için main fonksiyınunun içinde aşağıdaki yere lcd konfigürasyon fonksiyonunu yazacağız.
/* USER CODE BEGIN 2 */
LCD1602_Begin4BIT(GPIOA,GPIO_PIN_1,GPIO_PIN_2,GPIOA,GPIO_PIN_4,GPIO_PIN_5,GPIO_PIN_6,GPIO_PIN_7); araya bu fonksiyon yazılacak
/* USER CODE END 2 */
Burada LCD1602_Begin4BIT fonksiyonunu kullandık çünkü başta da dediğimiz gibi data pinlerini 4 pin olarak kullanacağız.
Artık LCD ye yazı yazdırabiliriz.
Örnek olarak:
LCD nin birinci satırında NE MUTLU yazacak,
ikinci satırında ise TURKUM DIYENE yazacak.
LCD1602_1stLine();
LCD1602_print("NE MUTLU");
LCD1602_2ndLine();
LCD1602_print("TURKUM DIYENE");
Programı derleyin ve kartınıza yükleyin.
Kütüphanede işinize yarayacak bir çok fonksiyon bulunmaktadır. İncelemeleriniz yaparsınız.
Takıldığınız yerde aşağıya yorum yaparak soru sorabilirsiniz.
İYİ Çalışmalar.