STM32F407VG Driver Geliştirme – 5 (EXTI.h)
Bu yazımızda Kesmeler(Interrupt)’ları göreceğiz. Basitçe anlatmak gerekirse;
1- Gelen interrupt hangi pin ve port’dan gelecek. [SYSCFG ile]
2- Gelen interrupt işlemi aktif edilecek. [ECTI ile]
3- Aktif edilen interrupt’ı yapılandıracağız. (Yükselen kenar, yazılmsak tatikleme vs.) [EXTI ile]
Yukarda yazılanları bir bir yapacağız ama daha öncesinden bir konuyu sizlere izah edeyim.
Bu görselde EXTICR1 Registerı görülmekte , fakat dokumanı incelerseniz EXTICR2 ,EXTICR3 ,EXTICR4 Regsiterlarını da göreceksiniz. Bu görselde EXTI1,EXTI2,EXTI3 ve EXTI4 bulunurken diğer ETXI hatları diğer registerlar üzerinde kalıyor. Mesela EXTI12 ;EXTICR4 Registerında.
EXTI0 : LINE0: PIN0
EXTI1 : LINE1 : PIN1
EXTI2 : LINE2 : PIN2
.
.
.
EXTI15: LINE15: PIN15
Görüldüğü gibi sonuç olarak bizim pin numaralarımız hem LINE(x) hemdeEXTI(x) olarak adlandırılıyor.
Bu bilgiler ışığında;Mesela EXTI3 yani PIN3 üzerinden bir kesme(interrupt) alacağız. peki hangi PORT üzerinden bunu alacağız?
Görseli dikkatlice incelersek ;
0000 : PA[x] pin
0001 : PB[x] pin
0010 : PC[x] pin
.
.
kısmında hangi porta yazılacağını seçebiliriz .
Port C ‘yi seçtik . Port C nin verisini seçmiş olduğumuz EXTI3’ün üzerine yazdık bu sayede C Portunun 3. pininden gelen veriye Kesme(interrupt) özelliği kazandırdık.
!!! Tüm işlemleri böyle ‘0’ ve ‘1’ ile sürekli olarak elimizle yazmak hem hammalık hemde olmaması gereken bir durumdur, işte bu yüzden tüm bu Register ve Register üzerine yazılacak verileri daha kolay ve daha okunaklı bir hale getirerek işleme alacağız.
Yukarda görüldüğü gibi #define komutu ile hepsini okunabilir bir yapıda tanımladık ve başlarına geçen (uint8_t) ise Registerlar 8 bitlik bu yüzden bizlerde sağlıklı bir tanımlama olsun diye cast işlemi uyguluyoruz.
Exti Hatının gerekli ayarlarını oluşturacağımız fonksiyonu EXTI.h ‘a tanımlıyoruz ve ardından işlemleri yapmak için EXTI.c ‘ye geçiyoruz.




