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.

[STM32F407][Keil/C] Ostrzeżenia i błędy kompilacji

qqś 10 Cze 2012 16:11 2262 6
  • #1 10 Cze 2012 16:11
    qqś
    Poziom 11  

    Witam
    od roku bawię się prockami, do tej pory 8 bitowymi siliconami. Chciałem zacząć zabawę z STMami, lecz siedzę nad tym już ponad tydzień i nie mogę ruszyć do przodu. Kupiłem książkę Mikrokontrolery STM32 w praktyce, oraz zestaw STM32F4DISCOVERY, pobrałem próbną wersję Keila i próbuję coś wykombinować, ale wydaje mi się, że w książce jest zupełnie inaczej rozwiązane niż w nowych bibliotekach.
    Większość z nowych bibliotek jest zabezpieczona przez zmianami i żeby coś zainicjalizować wywołujemy funkcję z odpowiednimi parametrami, lecz tu pojawia się u mnie problem.
    Dodaję wszystkie pliki do grupy:
    main.c
    starup_stm32f4xx.s
    stm32f4xx_it.c
    system_stm32f4xx.c
    stm32f4xx_rcc.c
    stm32f4xx_gpio.c

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Po kompilacji wywala mi masę błędów i ostrzeżeń:
    main.c(3): warnig: #223-D: function "RCC_AHB1PeriphClockCmd" declared implicitly
    oraz kilkadziesiąt ostrzeżeń typu:
    stm32f4xx_rcc.c(302): warning: #233-D: function "assert_param" declared implicitly.
    i na końcu error:
    nowy.axf: Error: L6218E: Undefined symbol assert_param (referred from stm32f4xx_rcc.o)
    Target not created
    Ktoś wie o co w tym chodzi?

    Najlepiej jakby się ktoś znalazł spod Rzeszowa i mógł mi w ramach korepetycji wytłumaczyć takie podstawy, cena do uzgodnienia

    0 6
  • #2 10 Cze 2012 16:20
    mrh
    Poziom 18  

    Jak już to:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    albo:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #3 10 Cze 2012 16:39
    qqś
    Poziom 11  

    Ten drugi sposób co prawda działa (w tym pierwszym wywala mi błąd, że nie ma RCC_AHB1Periph_GPIOA zdefiniowanego), ale nie w tym tkwi problem, bo u mnie akurat to przechodzi.
    Chodzi i te ostrzeżenia "declared implicitly" i ten końcowy błąd, przez który cały program nie może się skompilować.

    0
  • #4 10 Cze 2012 16:53
    LordBlick
    VIP Zasłużony dla elektroda

    "declared implicitly" Google Translate ładnie tłumaczy...
    Kodem raczej się nie chwalisz zbytnio, czyli o wróżbę prosisz...
    A pliki nagłówkowe inkludujesz w ogóle ?
    Końcowy błąd wynika z wcześniejszego ostrzeżenia( oba w temacie "assert_param").

    0
  • #5 10 Cze 2012 19:11
    qqś
    Poziom 11  

    hymm czyli mój problem to brak includów? To co wkleiłem to mój cały dotychczasowy kod, chciałbym, żeby przynajmniej to mi się udało. Nie rozumiem co należy dawać do include a co dodawać do projektu jako nowy plik do kompilacji i czym to się będzie różnić. Takich podstaw niestety mi brakuje przez to pewnie wynikają takie błędy.
    Jakie pliki pownienem dodać do include w pliku głównym programu oraz do projektu do kompilacji jeżeli w przyszłości chcę wykorzystywać przerwania, I2C, USART?

    0
  • #6 10 Cze 2012 21:31
    LordBlick
    VIP Zasłużony dla elektroda

    qqś napisał:
    Jakie pliki pownienem dodać do include w pliku głównym programu oraz do projektu do kompilacji jeżeli w przyszłości chcę wykorzystywać przerwania, I2C, USART?
    Takie, jakie potrzebujesz. Jak wywala, ze coś jest niezdefiniowane to zapuszczasz szukarke po plikach, gdzie to jest zdefiniowanie i inkludujesz. Proste ?

    0
  • #7 10 Cze 2012 22:13
    qqś
    Poziom 11  

    Ok rozwiązałem problem, może nie najlepsze rozwiązanie ale działa, poustawiałem wszystko w opcjach tak jak w projekcie demonstracyjnym, oraz wrzuciłem wszystkie biblioteki do bibliotek Keila i teraz się kompiluje
    Można zamknąć temat, myślę, że dalej pownienem sobie poradzić, bo te biblioteki są dobrze opisane
    Pozdrawiam i dziękuję za zainteresowanie

    0