Home Stm32 Stm32 EXTI Uygulaması

Stm32 EXTI Uygulaması

by onurnp

Merhabalar arkadaşlar Bugün sizlerle External İnterrupt konusunu işleyeceğiz iyi güzelde tam olarak neydi bu exti yahu dediğinizi duyar gibiyim Arduinocularda ışık görmüş tavşan gibi bakıyor tabi 🙂 (genelde pek kullanmazlar hatta pek çoğu bilmezler) hadi bakalım biraz açıklayalım acaba nasıl birşey bu EXTI…

Günün yoğun teleşı içerisinde sürekli günlük işlerinizi yapıyorsunuz ancak durumlar değişti ve çok daha öncelikli işleriniz var bunlarıda unuttunuz yada göz ardı ettiniz.. Hemen patron soruyor XXXX sen şu bizim işi ne yaptın ve bizde (external) dış tetiklemeyi aldık ve hemen elimizdeki işi kenara koyup patronun verdiği işi yaparız teslim ederiz ve kalan işimize kalan yerden devam ederiz. İşte EXTI yam olarakta budur. Şimdi kafamızda canlandığına göre teknik olarak açıklamaya geçelim.

Tarama Yöntemiyle I/O Denetimi (Normal İnput Yöntemi):

  • Mikrodenetleyici bağlı bulunan I/O aygıtların durumlarını sürekli denetler.
  • İstek olduğunda ilgili ayıta hizmet eder ve tekrar taramaya devam eder.
  • Mikrodenetleyici tarama işlemi ile sürekli meşguldür,
  • Belirli bir sıra ile tarama yapılır, başka işlere sınırlı zaman kalır.

Kesme Uyarmalı I/O Denetimi (EXTI kesme):

  • Hizmete gereksinimi olan aygıt istek hattı ile Mikrodenetleyiciden istekte bulunur.
  • Mikrodenetleyici yaptığı işi uygun noktada keser ve aygıtın isteğini yerine getirir.
  • Mikrodenetleyici isteği yerine getirdikten sonra serbesttir başka işlemler yapabilir.

Kesme Servisini Çalışma Algoritması(EXTI)

stm32 exti
stm32 exti

Bu kadar teorik bilgi yeterli diye düşünüyor ve uygulamaya geçiyorum.. şimdi CubeMX imizi açalım kesmeli bir buton atayacağız ve bu buton ile ledimizi yakacağız..

External crystal açıyoruz,Serial wire açıyoruz,birtane output ayarlıyoruz.

Stm32 Exti butonu

Stm32 Exti butonu
Stm32 Exti butonu
Stm32 Exti butonu
Stm32 Exti butonu
Stm32 Exti butonu

Şimdi ise PA1 sağ tıklayıp GPIO_EXTI1 Seçiyoruz.ve ayarlarından EXTI aktif edip rise edge Triggering seçeceğiz.

PA1 Buton Ataması
PA1 Buton Ataması

Rise edge Triggering: Yükselen kenar algılama yani tuşa bastığımız an.
Falling Edge Triggering: Düşen kenar algılama Butona bastık bir şey yok çektiğimizde tetikler.

Kesme Servisi aktivasyonu
Kesme Servisi aktivasyonu

Ve kodlarımızı Generate edelim Keil aşamasına geçelim.

Keil açtık artık Kesme servisini çağırıp ledimizi yakacağız.User code begin 4 ün içine aşağıdaki fonksiyonu yapıştıralım.

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) // kesme hizmetini çağıran fonksiyonumuz
{
	if(GPIO_Pin== GPIO_PIN_1) //Kesmeye girecek butonun durumunu şartladık
{
		HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); // butona 1 basınca yanacak 1 basınca sonecek toggle fonksiyonumuz
	} else{
	__NOP();// buton basık değilse kesmeyi kapatır.
	}
}

Evet arkadaşlar Bu projemizle de Kesme servislerine giriş yaptık aynı mantıkla birçok kesme işlemini yapacak kadar bir kıvılcım oluşturduğumu düşünüyorum Soru ve önerileirniz için lütfen yorum yapınız. İyi Çalışmalar.

You may also like

Leave a Comment