Skocz do zawartości

[C] [STM32] Obsługa przerwań


ArczerMX

Pomocna odpowiedź

Witam,
próbowałem wykonać ćwiczenie z kursu STM32. Po przepisaniu kodu i przystosowaniu go dla mojej płytki (STM32F446RE) otrzymałem coś takiego:

#include "stm32f4xx.h"

void EXTI15_10_IRQHandler()
{
if (EXTI_GetITStatus(EXTI_Line13)) {
	if (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == 0) {
		GPIO_SetBits(GPIOA, GPIO_Pin_5);
	} else {
		GPIO_ResetBits(GPIOA, GPIO_Pin_5);
	}

	EXTI_ClearITPendingBit(EXTI_Line13);
}
}

int main(void)
{

GPIO_InitTypeDef gpio;
EXTI_InitTypeDef exti;
NVIC_InitTypeDef nvic;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);

GPIO_StructInit(&gpio);
gpio.GPIO_Pin = GPIO_Pin_5;
gpio.GPIO_Mode = GPIO_Mode_OUT;
gpio.GPIO_OType = GPIO_OType_PP;
GPIO_Init(GPIOA, &gpio);

gpio.GPIO_Pin = GPIO_Pin_13;
gpio.GPIO_Mode = GPIO_Mode_IN;
gpio.GPIO_OType = GPIO_OType_PP;
gpio.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_Init(GPIOC, &gpio);

   SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC, EXTI_PinSource13);

EXTI_StructInit(&exti);
exti.EXTI_Line = EXTI_Line13;
exti.EXTI_Mode = EXTI_Mode_Interrupt;
exti.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
exti.EXTI_LineCmd = ENABLE;
EXTI_Init(&exti);


nvic.NVIC_IRQChannel = EXTI15_10_IRQn;
nvic.NVIC_IRQChannelPreemptionPriority = 0x00;
nvic.NVIC_IRQChannelSubPriority = 0x00;
nvic.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&nvic);

while (1)
{
}
}

Program poprawnie się uruchamia, lecz nic poza tym się nie dzieje. Płytka nie reaguje na naciśnięcie przycisku.

Co trzeba zmienić w programie aby zaczął poprawnie działać i zapalać/gasić diodę za każdym naciśnięciem przycisku? Nie wiem gdzie może być błąd 😕

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.