Hallo zusammen, mal wieder eine Frage zum STM32F4, diesmal geht es um die Flags. Ich möchte mit einem Timer die Dauer zwischen einer rising-edge und falling-edge bestimmen. Hierfür habe ich zwei inputcaptures angelegt. Wenn ich nun in dem Interrupthandler TIM3_IRQHandler auf die entsprechenden Ereignisse reagieren möchte benötige ich die entsprechenden Flags. Wo liegt da der Unterschied zwischen: •TIM_FLAG_Update & •TIM_IT_Update bzw. •TIM_FLAG_CC1 & •TIM_IT_CC1 Muss ich unbedingt beide behandeln oder reicht es nur die IT-Flags abzufragen und zurückzusetzen? Viele Grüße, Florian
Kann mir niemand den Unterschied zwischen den Flags erklären, bzw. wofür ich welche Flags benutze...
Gast
#3710107
Florian K. schrieb: > Kann mir niemand den Unterschied zwischen den Flags erklären, bzw. wofür > ich welche Flags benutze... TIM_IT_Update ist das Update-Flag, und TIM_IT_CC1 ist das Capture/Compare flag. Siehe Reference Manual S. 423, die gezackten Pfeile im Diagramm.
Dr. Sommer schrieb: > Florian K. schrieb: >> Kann mir niemand den Unterschied zwischen den Flags erklären, bzw. wofür >> ich welche Flags benutze... > TIM_IT_Update ist das Update-Flag, und TIM_IT_CC1 ist das > Capture/Compare flag. Siehe Reference Manual S. 423, die gezackten > Pfeile im Diagramm. Vielen Dank für die Antwort, mich interessierte aber eher der Unterschied zwischen: TIM_FLAG_Update & TIM_IT_Update Also mir ist schon klar, dass das IT für Interrupt steht, aber was fange ich dann mit dem TIM_FLAG_Update an? Also das TIM_IT_Update kommt wenn ich Interrupts aktiviert habe und der Timer überläuft und TIM_FLAG_Update ist gesetzt wenn der Timer überlauft unabhängig vom Interrupt. Wenn ich eins zurücksetze, wird dann automatisch auch das andere Flag zurückgesetzt und der Timer resettet? Bzw. meine eigentliche Frage bezieht sich vielleicht eher auf diese Frage: Wenn ich Interrupts aktiviert habe für den entsprechenden Timer, kann ich dann komplett alle abfragen und "FLAG-resets" auf das TIM_IT_Update beschränken oder muss ich auch das TIM_FLAG_Update handeln?
schau doch einfach im Quellcode nach wie es programmiert ist hier das reseten vom "TIM_FLAG_Update"
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
und hier das reseten vom "TIM_IT_Update"
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
wie man sieht machen beide Funktionen das gleiche es gibt nämlich nur ein einzelnes Flag für "TIM_UPDATE" die Funktion "TIM_GetFlagStatus" ließt direkt dieses Bit aus die Funktion "TIM_GetITStatus" prüft noch zusätzlich ob der Interrupt aktiviert war es reicht also in der ISR das Flag zu prüfen per "TIM_GetITStatus" und falls gesetzt per "TIM_ClearITPendingBit" zu reseten Gruss Uwe
Oh, damit hätte ich jetzt nicht gerechnet. Vielen Dank für die Information hierzu! Gruß, Florian
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.