elektrik port üyelik servisleri elektrik port üyelik servisleri

STM32F103C8 ile Standart Peripheral Library Dersleri|
4. Bölüm

Standart Peripheral Library Derslerimizin 4. bölümünde kesme komutunu inceleyeceğiz. Detaylar yazımızda.



A- A+
17.06.2020 tarihli yazı 11015 kez okunmuştur.
Artık GPIO birimini nasıl kullanacağımızı daha iyi biliyoruz. Hayal edelim ki GPIO birimi  üzerinde kullandığımız bir giriş pini hayati öneme sahip. Yani burdan aldığımız bilgiye göre mikrodenetleyicimiz  yaptığı işi bırakıp çok hızlı cevap vermeli ve ya işlem yapmalı. Tam bu nokta da Interrupt(kesme) birimi yardımımıza koşar ve programın işlemesini bırakarak istediğimiz komutların çalışmasını sağlar.


INTERRUPT(Kesme) Nedir?

Interrupt yani Türkçe anlamı kesme birimi donanımıza dahili ve ya harici tetikleme ile devreye giren , program devam ederken devreye girdiği anda programı kesip alt programı çalıştıran birimdir. Kesme birimine ihtiyacımız her profesyonel sistemlerde mutlaka vardır. Çünkü sistemimiz herhangi bir anda yalnız bir işlem yapabilir. Bir işlem üzerindeyken donanımımız belki dışardan müdahaleyi görmeyebilir ve bu sistemde hata meydana çıkarabilir.


 

Özellikle hayati öneme sahip  (Acil stop butonu, haberleşme protokolünden gelen veri vs.) durumlarda kesme ile devam eden program durdulur. İşlemci programda kaldığı yeri kayıt  eder.  Kesme için yazdığımız alt program çalışır. Alt programın bitiminde programımız kaldığı yerden devam eder. Bugün mikrodenetleyicimiz ile beraber harici kesmeleri öğreneceğiz. Şimdi hep beraber ST firmasının bizim için hazırladığı Reference manual yardımı ile kesmeleri nasıl kullanmamız gerektiğini inceleyelim.
 

STM32F103 için Kesmeler

Öncelikle kesmelerimizi kullanabileceğimiz yöntemlerden bahsedelim. Burada karşımıza 3 mod çıkmaktadır.

Rising Mode

Bu modumuz bize yükselen kenarda çalışacağını ifade eder. Normalde lojik sıfır olan pinimize yükselen kenar tetikleme geldiğinde kesmemiz aktif olur ve alt programı çalıştırır.


Falling Mode

Bu modumuz ise düşen kenar geldiğinde aktif olmaktadır.

Rising-Falling Mode

Bu modumuz kullanığımız pinde hem yükselen hem düşen kenarda devreye girmektedir. Yani herhangi bir anda pin üzerinde lojik seviye değişikliği olduğunda kesmemiz aktif olmaktadır.

STM32F103 mikrodenetleyimizde 80 GPIO üzerinde bahsedilen bu 3  mod istediğimiz gibi harici kesme olarak kullanılabilir.
 
İncelememiz gereken diğer bir nokta ise hangi pinler hangi line üzerinden kontrol edildiğidir. Yine reference manuel üzerinde vektör tablomuzu incelersek buradan;



EXTI0 - EXTI Line0 interrupt
EXTI1  - EXTI Line1 interrupt
EXTI2  - EXTI Line2 interrupt
EXTI3  - EXTI Line3 interrupt
EXTI4  - EXTI Line4 interrupt
EXTI9_5 - EXTI Line[9:5] interrupts
EXTI15_10 - EXTI Line[15:10] interrupts
 
 bilgilerine ulaşabiliriz.


Bu tablo bize şunu anlatır ; GPIO portlarımızın 0. pinlerini EXTI Line0 üzerinden, 1. pinlerini EXTI Line1 üzerinden, 2. pinlerini EXTI Line2 , 3. pinlerini EXTI Line3 , 4. pinlerini EXTI Line4 , 5 ile 9 arasında ki pinlerini EXTI Line[9:5] ve 10 ile 10 arasında ki pinlerini EXTI Line[15:10]  üzerinden kullanabiliriz. Şimdi  bilgilerimiz nasıl kullanacağımızı öğrenebiliriz.

 

STM32F103 ile Interrupt Kullanımı

“stm32f103_exti.h” kütüphanemizi incelediğimiz de tanımlamız gerekenleri görebiliriz.
 
typedef struct
{
  uint32_t EXTI_Line
  EXTIMode_TypeDef EXTI_Mode
  EXTITrigger_TypeDef EXTI_Trigger;
  FunctionalState EXTI_LineCmd
}EXTI_InitTypeDef;

Burada gördüğümüz EXTI ayarlarımızı ,NVIC ayarlarımızı ve GPIO ayarlarımız örnek proje üzerinde uygulama ile görelim.     
 

Örnek Proje







Burada GPIO pinimizi belirledikten sonra EXTI ve NVIC tanımlamaları ile kesmemizin nasıl çalışacağını tamamlayıp alt program yazmak için uygun ortam oluşturabildik. Bir sonraki dersimizde görüşmek üzere…



Kaynak:

►st.com



Yazar: Yasin Tekin


Aktif etkinlik bulunmamaktadır.
ANKET
Endüstri 4.0 için En Hazır Sektör Hangisidir

Sonuçlar