Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

STM32 - Zasady poprawnego programowania

mfriedrich 22 Maj 2013 09:47 1206 2
  • #1 22 Maj 2013 09:47
    mfriedrich
    Poziom 15  

    Zaczynam zabawę z STM32F0 Discovery.
    Zacząłem od manuala i analizy różnych przykładów z sieci. Niestety każdy konstruuje projekty na swój sposób i przebrnięcie przez niektóre przykłady doprowadza niemal do szału. Każdy gdzie indziej obsługuje przerwania, konfiguruje przerwania i peryferia,... Do tego jedne przykłady są z użyciem SPL, inne bez, inne mieszane a do tego jeszcze niektórzy mieszają w to bezpośrednie podstawianie wartości numerycznych do rejestrów.
    Czy istnieje jakaś utarta metoda poprawnego pisania programów? Chodzi mi o to, żeby sugerując się przykładami nie wyrobić sobie złych nawyków. Np. czasem procedury obsługi przerwań wpisywane są wewnątrz includów a czasem są tam tylko umieszczane ich wywołania. Jeśli tylko wywołanie, to lepiej tą procedurę umieścić w main czy gdzie indziej. Do tej pory pracowałem tylko w asemblerze na AVRkach i już tam wyrobiłem sobie złe nawyki, które utrudniały mi modyfikacje w moich programach, gdy wracałem do nich po kilku miesiącach. Teraz zabieram się za C i mam szanse wyrobić dobre nawyki.
    Wiem, że może może to być trudne do opisania ale wystarczyłyby mi linki do wzorcowych kodów.

    0 2
  • #2 22 Maj 2013 09:57
    stanleysts
    Poziom 27  

    Nie wiem czy znajdziesz coś takiego jak wzorcowy kod :D

    0
  • #3 22 Maj 2013 10:15
    BlueDraco
    Specjalista - Mikrokontrolery

    Parę miesięcy temu wrzuciłem tutaj parę sztuk "wzorcowych" programów dla Cortex-M (STM32F05x). To oczywiście mój własny wzorzec struktury programu, ale myślę, że dość rozsądny i wygodny w użyciu - prosta i przejrzysta inicjalizacja wszystkiego w jednym kawałku poprzez strukturę danych (bez instrukcji podstawień i wywołań procedur inicjujących), brak pętli zdarzeń, obsługa przerwań w konwencji automatu, całkowity brak opóźnień programowych (poza kodem inicjującym). Jeśli to nie wystarcza - należy zaprzyjaźnić się z jakimś systemem operacyjnym, np. FreeRTOS.

    Jak dobrze pójdzie - seria takich moich przykładów wkrótce ukaże się w druku.

    W praktyce używam takiej struktury w programach liczących do kilku tysięcy linii i do kilkunastu plików źródłowych.

    W plikach nagłówkowych NIGDY nie należy definiować niczego, co jest emitowane do pamięci - zmiennych ani procedur. Jedyny wyjątek od tej reguły - to funkcje z atrybutem inline. Jeśli gdzieś widzisz kod z danymi lub procedurami w plikach .h - omijaj go z daleka.

    0