Forum: Mikrocontroller und Digitale Elektronik STM32F4 Timer1 Interrupt


von Dirk S. (duerk)


Lesenswert?

Hallo,

ich habe mir ein PWM Signal mit dem Timer1 erzeugt.

Kann ich mit dem Timer1, wenn dieser wieder von null anfängt zu zählen, 
einen Interrupt auslösen? In der startup_stm32f4xx.c kann man allerdings 
nur vier IRQ zum Timer1 auswählen:
1
void WEAK  TIM1_BRK_TIM9_IRQHandler(void);
2
void WEAK  TIM1_UP_TIM10_IRQHandler(void);
3
void WEAK  TIM1_TRG_COM_TIM11_IRQHandler(void);
4
void WEAK  TIM1_CC_IRQHandler(void);

Die passen aber nicht zu dem, was ich brauche.
Allerdings steht im Datenblatt, dass im Upcounting Modus, welchen in 
auch eingestellt habe, das Update interrupt flag gesetzt wird, wenn der 
Timer wieder bei null anfängt zu zählen. Ich verstehe nicht, warum ich 
darauf nicht reagieren kann bzw. warum ich nicht in eine Interrupt 
Service Routine springen kann. Also bei dem Timer2 geht das, aber da 
kann ich auch
1
void WEAK  TIM2_IRQHandler(void);

auswählen.

Vielleicht kann mir ja Jemand helfen.
Gruß Dirk

von Nils P. (ert)


Lesenswert?

das müsste gehen:
TIM_ITConfig(TIM1, TIM_IT_Update, ENABLE);

//Interrupt mit der höchsten Prio
NVIC_InitStructure2.NVIC_IRQChannel = TIM1_UP_TIM10_IRQn;
NVIC_InitStructure2.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure2.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure2.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure2);

void TIM1_UP_TIM10_IRQHandler(void)
{
uint32_t xxx, yyy;

TIM_ClearFlag(TIM1, TIM_FLAG_Update);

....
}

von Dirk S. (duerk)


Lesenswert?

Ah danke. Super genau das, was ich gesucht hatte.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.