Dokąd zmierza świat?
-
Autor tematu - Lider FORUM (min. 2000)
- Posty w temacie: 15
- Posty: 9454
- Rejestracja: 26 lut 2011, 23:24
- Lokalizacja: mazowieckie
Re: Dokąd zmierza świat?
Chcę rozwiązać problem, a nie go ominąć.
Oczywiście procedura obsługi przerwania ma swój adres w pamięci, więc można zrobić tak jak mówisz, ale ja chcę się dowiedzieć dlaczego nie działa to co powinno.
-
- Lider FORUM (min. 2000)
- Posty w temacie: 14
- Posty: 2381
- Rejestracja: 25 kwie 2016, 11:58
- Lokalizacja: Jodlowa
- Kontakt:
Re: Dokąd zmierza świat?
Kod: Zaznacz cały
extern "C" void TIM1_UP_IRQHandler(void) {
if (TIM1->SR & TIM_SR_UIF) {
TIM1->SR &= ~TIM_SR_UIF; // Wyczyść flagę
}
}
-
Autor tematu - Lider FORUM (min. 2000)
- Posty w temacie: 15
- Posty: 9454
- Rejestracja: 26 lut 2011, 23:24
- Lokalizacja: mazowieckie
Re: Dokąd zmierza świat?
Już tego próbowałemdrzasiek90 pisze: ↑01 cze 2025, 22:28Kod: Zaznacz cały
extern "C" void TIM1_UP_IRQHandler(void) { if (TIM1->SR & TIM_SR_UIF) { TIM1->SR &= ~TIM_SR_UIF; // Wyczyść flagę } }
Kod: Zaznacz cały
/root/.arduino15/packages/STMicroelectronics/tools/xpack-arm-none-eabi-gcc/14.2.1-1.1/bin/../lib/gcc/arm-none-eabi/14.2.1/../../../../arm-none-eabi/bin/ld: /root/.cache/arduino/sketches/2BC163F6C542CC480C7C3C122E542D51/libraries/SrcWrapper/HardwareTimer.cpp.o: in function `TIM1_UP_IRQHandler':
HardwareTimer.cpp:(.text.TIM1_UP_IRQHandler+0x0): multiple definition of `TIM1_UP_IRQHandler'; /root/.cache/arduino/sketches/2BC163F6C542CC480C7C3C122E542D51/sketch/STM32-Baremetal-Qencoders.ino.cpp.o:STM32-Baremetal-Qencoders.ino.cpp:(.text.TIM1_UP_IRQHandler+0x0): first defined here
collect2: error: ld returned 1 exit status
exit status 1
Compilation error: exit status 1
-
- Lider FORUM (min. 2000)
- Posty w temacie: 14
- Posty: 2381
- Rejestracja: 25 kwie 2016, 11:58
- Lokalizacja: Jodlowa
- Kontakt:
Re: Dokąd zmierza świat?
To znaczy, że HardwareTimer (z biblioteki STM32Duino) już ma własną wersję obsługi tego przerwania, i Twój kod ją duplikuje.
Opcja 1: Nie używaj HardwareTimer
Opcja 2: Nie twórz własnego TIM1_UP_IRQHandler
Opcja 1: Nie używaj HardwareTimer
Opcja 2: Nie twórz własnego TIM1_UP_IRQHandler
-
Autor tematu - Lider FORUM (min. 2000)
- Posty w temacie: 15
- Posty: 9454
- Rejestracja: 26 lut 2011, 23:24
- Lokalizacja: mazowieckie
Re: Dokąd zmierza świat?
Przecież to Ty utworzyłeś własny TIM1_UP_IRQHandler używając extern "C"...drzasiek90 pisze: ↑01 cze 2025, 22:41To znaczy, że HardwareTimer (z biblioteki STM32Duino) już ma własną wersję obsługi tego przerwania, i Twój kod ją duplikuje.
Opcja 1: Nie używaj HardwareTimer
Opcja 2: Nie twórz własnego TIM1_UP_IRQHandler
Jak masz dawać takie rady, to lepiej idź się wyspać.
-
- Lider FORUM (min. 2000)
- Posty w temacie: 3
- Posty: 2456
- Rejestracja: 29 lis 2015, 00:38
- Lokalizacja: Bielsko-Biała
Re: Dokąd zmierza świat?
Nie wiem, jak jest na STMie, ale w AVR ISR to nie jest żadna funkcja. Robi się np. tak:
Lub jak coś ma być:
I gotowe. Jeśli nie ma tego wektora określonego, to program się wywali jak w niego wejdzie. A ja tu widzę, że jakieś funkcje piszecie.
Oczywiście mogę być w głębokim błędzie, stmy to widziałem tylko w sklepie.
Kod: Zaznacz cały
EMPTY_INTERRUPT(TCD0_OVF_vect)
Kod: Zaznacz cały
ISR(TCE0_OVF_vect)
{
}
Oczywiście mogę być w głębokim błędzie, stmy to widziałem tylko w sklepie.
-
- Lider FORUM (min. 2000)
- Posty w temacie: 14
- Posty: 2381
- Rejestracja: 25 kwie 2016, 11:58
- Lokalizacja: Jodlowa
- Kontakt:
Re: Dokąd zmierza świat?
Czytasz czasem jakie głupoty piszesz?
Nie przeanalizowałes sam co ci wyrzucił kompilator więc dostałeś ode mnie informację gdzie i w czym jest błąd.
Podałem ci dwie możliwe opcje.
Do obsługi przerwania musisz mieć jego obsługę.
Więc albo utwórz swoją (pokazałem ci jak bo nie wiesz jak, ale wtedy nie używaj biblioteki która już to samo implementuje) albo nie twórz swojej i skorzystaj z tej którą już masz w bibliotece.
A jak nie potrafisz takich prostych rzeczy to zajmij się malowaniem albo jaka inna sztuką - ty byś zapewne takiej rady udzielił.
Ale i tak tego nie zrozumiesz.