Skocz do zawartości

STM32F410RB przerwanie od timera SPL


Pomocna odpowiedź

Napisano

Używam nucleo na z rdzeniem F4 i z użyciem bibliotek SPL próbuję uruchomić przerwanie od timera. Docelowo zależy mi na uzyskanie stałej szybkości próbkowania ADC, ale obecnie próbuję w ogóle zrobić z tym cokolwiek (zapalać i gasić diodę).

Przerobiłem kod z kursu dot. F1, ale coś mi nie działa. Nie wiem, w czym jest kłopot.

#include <stdbool.h>
#include "stm32f4xx.h"

void TIM5_IRQHandler()
{
   if (TIM_GetITStatus(TIM5, TIM_IT_Update) == SET)
   {
       TIM_ClearITPendingBit(TIM5, TIM_IT_Update);

       if (GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_5))
           GPIO_ResetBits(GPIOA, GPIO_Pin_5);
       else
           GPIO_SetBits(GPIOA, GPIO_Pin_5);
   }
}

int main(void)
{
GPIO_InitTypeDef gpio;
TIM_TimeBaseInitTypeDef tim;
NVIC_InitTypeDef nvic;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOC, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);


GPIO_InitTypeDef GPIO_InitDef;
GPIO_InitDef.GPIO_Pin = GPIO_Pin_5;//LED1 (LD2) zielona pod RESET-em
GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitDef.GPIO_OType = GPIO_OType_PP;
GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitDef.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_Init(GPIOA, &GPIO_InitDef);

TIM_TimeBaseStructInit(&tim);
tim.TIM_CounterMode = TIM_CounterMode_Up;
tim.TIM_Prescaler = 50000 - 1;
tim.TIM_Period = 100 - 1;
TIM_TimeBaseInit(TIM5, &tim);

TIM_ClearITPendingBit(TIM5, TIM_IT_Update);
TIM_UpdateRequestConfig(TIM5, TIM_UpdateSource_Regular);
TIM_ITConfig(TIM5, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM5, ENABLE);

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

while (1) {
                ;
 }
}

Dioda nie zapala się, nie gaśnie. Jeśli kod z przerwania wrzucam do while'a (z dodanym opóźnieniem), dioda ładnie mruga.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...