logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[STM32] STM32F103C8T6 - różnice w obsłudze timerów w porównaniu do Arduino Mega

Juni[]r 15 Sty 2017 14:52 1212 15
REKLAMA
  • #1 16201170
    Juni[]r
    Poziom 16  
    Posty: 459
    Ocena: 25
    Witam mam napisany program dla arduino mega z wyświetlaczem TFT 3,5". Problem w tym iż wyświetlanie na tym wyświetlaczu jest strasznie powolne. Postanowiłem więc zmienić procesor na 32-bitowy. Padło na STM32F103C8T6. Wykonałem test migania diody czyli przez program arduino konwertuje łączy i ładuje. Wiem że są pewne niuanse w pisaniu dla STM. I o to mój pierwszy problem. Jaka jest różnica w pisaniu obsługi timerów ?

    Mam prosty timer:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    lecz ciągle wywala mi błąd składni... Może ktoś podpowiedzieć co i gdzie dla STM trzeba zmienić ?
  • REKLAMA
  • REKLAMA
  • #4 16201398
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2206
    @Juni[]r Jak już jesteś w Arduino to kup Arduino Zero, z 32-bitowym ARMem i wtedy mniej więcej będzie dało się wykorzystać koncepcję programu z Arduino. Albo tak jak koledzy piszą, trzeba cały kod przepisać od zera.
    BTW, jak masz podłączony LCD z MCU? Bo jeśli przez SPI i w dodatku programowe SPI, to nic dziwnego, że jest to ślamazarne. Jeśli masz dobrze napisaną obsługę SPI, to sama zmiana na ARM nic nie zmieni, bo przecież taktowanie SPI nie wzrośnie (chociażby dlatego, że sterownik LCD ma limit). Jeśli magistrala równoległa, to tym bardziej należałoby się zastanowić co w programie jest skaszanione...
  • #6 16201602
    Pituś Bajtuś
    Poziom 28  
    Posty: 934
    Pomógł: 137
    Ocena: 10
    Juni[]r napisał:
    Myślałem że zmieniam płytkę, wgrywam nowy bootloader i działa tak samo jak inne arduino. Wykonywałem procedurę z tego linku https://geektimes.ru/post/277928/

    Będzie "działać tak samo" o ile ograniczysz się do kodu arduino bez odwoływania się bezpośrednio do sprzętu specyficznego dla danego MCU (jak chociażby timery w podanym przykładzie).
    Swoją drogą ten temat do doskonały przykład jakie spustoszenie sieje ideologia arduino.
  • #8 16201695
    tronics
    Poziom 38  
    Posty: 5082
    Pomógł: 359
    Ocena: 845
    Wszystkie funkcje arduino-embedded powinny działać. Czyli obsługa i2c, 1wire, spi, uart, operacje na pinach gpio. Dlaczego? Bo chociaż czasem przez różne rejestry to w zasadzie robią to samo więc można wysokopoziomową funkcją "przykryć" różnice sprzętowe. Proste rzeczy jak PWM, input capture itp. też powinno się dać, natomiast liczników jest całe mnóstwo i to różnych (np. ARMy mają zazwyczaj 16 i 32bit, a AVR 8 i 16bit, różne opcje preskalerów i źródła zegara, opcje łączenia kaskadowego itp.)
  • REKLAMA
  • REKLAMA
  • #12 16208131
    Konto nie istnieje
    Konto nie istnieje  
  • #14 16208341
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    A konkretnie, to czego z kodu inicjowania timera nie rozumiesz po przeczytaniu rozdziału o timerach z Reference Manual? Masz tam obrazki, opisy działnia i szczegółowo rozrysowane i opisane rejestry sterujące.
  • #16 16208458
    Konto nie istnieje
    Konto nie istnieje  

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik przenosi projekt z Arduino Mega na STM32F103C8T6, aby poprawić wydajność wyświetlania na TFT 3,5". Zauważa, że obsługa timerów w STM32 różni się od Arduino, co prowadzi do problemów z błędami składniowymi w kodzie. Odpowiedzi wskazują na różnice w architekturze, rejestrach oraz przerwaniach. Użytkownicy sugerują, że kod Arduino może działać, ale wymaga dostosowania do specyfiki STM32. Wskazówki dotyczące korzystania z dokumentacji libmaple oraz Reference Manual są podawane jako pomocne źródła informacji. Użytkownik prosi o pomoc w przepisaniu kodu timera.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA