Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

EXTI interrupt sorunu

Başlatan Mnemonic, 10 Kasım 2013, 00:16:24

Mnemonic

Arkadaşlar merhaba,
STM32F4 ile EX interrupt bir şey yazmaya çalışıyorum ama nedense ben C5 pini ile tetikleme yapmak istememe ramen kod A0 pini ile tetikleme yapıyor problem ne olabilir delirmek üzereyeyim. Sabahtan beri bununla uğraşıyorum yardımcı olurmusunuz ?


interruptu ayarladığım rutin
void IRQ(void)
{

	 RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);

	 SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC, EXTI_PinSource5);
     EXTI_InitStructure.EXTI_Line = EXTI_Line0;
	 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
	 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
	 EXTI_InitStructure.EXTI_LineCmd = ENABLE;
	 EXTI_Init(&EXTI_InitStructure);

	 NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
	 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;
	 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;
	 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
	 NVIC_Init(&NVIC_InitStructure);

}


interruptı çağırdığum rutin
void EXTI0_IRQHandler(void)
{
  if(EXTI_GetITStatus(EXTI_Line0) != RESET)
  {
bla
bla
bla
bla


   EXTI_ClearITPendingBit(EXTI_Line0);
  }
}


sizce hata nerede delirmek üzereyim cidden saat 12yi geçti

mistek

#1
Yapı olarak STM32F1 e benziyorsa eğer şurasını yanlış yazmışsınız.
EXTI_InitStructure.EXTI_Line = EXTI_Line0;


Doğrusu:
EXTI_InitStructure.EXTI_Line = EXTI_Line5;



Ayrıca interrupt adreside yanlış.
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;


Doğrusu:
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;



İnterrupt fonksiyon adını bu şekilde değiştirin. Bayrak silme kısımlarınıda düzenleyin.
void EXTI9_5_IRQHandler(void)
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R

Mnemonic

teşekkür ederim
hayat kurtardınız :)
delirmek üzereydim

Mnemonic

Dün akşamki  yanıtınız için tekrar teşekkür ederim
bütün günümü harcadıkdan sonra olayı çözdüm

bu arada bir şey daga sormak istiyorum anladığım kadarı ile pin 0lar için int EXTI_line0 pin1ler için EXTI_Line1 kullanıyoruz
o zaman portA üzerinde pin0'da interrupt aktif eder isem portB üzerinde pin0'da interrupt aktif edemezmiyim ?
her port'da ayrı pin numarası ile ayrı EXTI_line üzerinemi yönlendirmem gerekli doğrumu anlamışım ?
yada aynı portun sırası ile pinlerini kullanmam gerekli ?


mistek

Alıntı yapılan: Mnemonic - 10 Kasım 2013, 12:33:04
Dün akşamki  yanıtınız için tekrar teşekkür ederim
bütün günümü harcadıkdan sonra olayı çözdüm

bu arada bir şey daga sormak istiyorum anladığım kadarı ile pin 0lar için int EXTI_line0 pin1ler için EXTI_Line1 kullanıyoruz
o zaman portA üzerinde pin0'da interrupt aktif eder isem portB üzerinde pin0'da interrupt aktif edemezmiyim ?
her port'da ayrı pin numarası ile ayrı EXTI_line üzerinemi yönlendirmem gerekli doğrumu anlamışım ?
yada aynı portun sırası ile pinlerini kullanmam gerekli ?

Yardımcı olabildiysem ne mutlu.

Benzer soruları zamanında bende sormuştum.
Buyrun: https://www.picproje.org/index.php/topic,46475.msg361314.html#msg361314
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R

Mnemonic

bununla beraber tam süper anladım
teşekkür ederim