Jeśli zaczynasz zabawę - zacznij od Keila - nie będziesz miał problemów z konfiguracją. Potem możesz przesiąść na jakieś środowisko z Eclips - np. Atollin lub STM32open (AC6).
Operacje na zmiennych 64bitowych nawet na piechotę nie są koszmarnie wolne na 32bit prockach. Ja bym sie nie przejmowal tymi kilkoma instrukcjami... Typ 64bitowej zmiennej to (unsigned) __int64 . Long long mozna wpisać, ale zmienna i tak ma 32 bity...
Czy dotyczy to tylko tej struktury "TIM_TimeBaseInit"? Dotyczy to każdej zmiennej - to chyba oczywiste czytając komunikat błędu - "declaration" nie jest określone jakoś szczególnie, więc definitywnie chodzi o wszystkie deklaracje zmiennych. Ponownie podaję linka: http://lmgtfy.com/?q=error%3A+%23268%3A+...
A jakie to ostrzeżenia generuje kompilator i dlaczego w ogóle je generuje? Ja mam już swoją teorię nt. Twojego błędu - brak deklaracji zapowiadającej, na co narzeka kompilator. Zgadłem?
Trzeba zdefiniować STM32F10X_CL - zwykle jest to zrobione w pliku stm32<cośtamcośtam>_conf.h, ewentualnie w stm32f10x.h, ewentualnie (najlepsze rozwiązanie) po prostu podajesz to do kompilatora poprzez "-D". 4\/3!!
A się dziwisz, jak ta funkcja dosłownie nic nie robi.
Ten delay bez asm_volatile to dziala w ogóle, czy kompilator to pomija i wyrzuca?
Bufor masz źle zadeklarowany. Ma być uint8_t. Tak jak zadeklarowałeś to on się nawet do pamięci procesora nie zmieści. Jakieś ostrzeżenie kompilator chyba powinien wyrzucić.
(at)mariomario Zanim zaczną cię tu przekonywać do STM32 oraz Nucleo, odpowiem na pytanie: http://sdcc.sourceforge.net/
Aby było śmieszniej, dostaje błędy, projekt się kompiluję To nie są błędy kompilatora tylko indeksera z Eclipse. Właściwości projektu->Index->Freshen all files Właściwości projektu->Index->Rebuild Czasami trzeba jeszcze zamknąć projekt i go otworzyć ponownie, żeby mechanizmy indeksujące zadziałały poprawnie. Jeszcze musisz sprawdzić czy wszystkie flagi...
Nie wiem czy system ma tu coś do rzeczy... Sam mam Windowsa 7 64-bity i generalnie bez problemów - poza tym, że CoreUtils i kompilator powinny się znajdować w ścieżce w której nie ma nawiasów (czyli nie w "Program Files (x86)"). Możesz spróbować dorzucić uprawnienia administratora dla pliku sh.exe z CoreUtils, ale generalnie problem musi być gdzieś...
A czemu miałoby nie dać prawidłowego? Możesz sobie darować to rzutowanie, bo jest zbędne, a przy okazji odezwij się za kilka miesięcy i daj znać czy pamiętasz że pisząc ">> 1" chodziło Ci o dzielenie przez 2 (kompilator sam by na to wpadł) (; 4\/3!!
Wszystkim bardzo dziękuję za odpowiedzi i cenne uwagi. Jeszcze tylko jedno pytanie. Jaki najlepiej kompilator zainstalować aby się zapoznać z jego bibliotekami funkcji (kompilator oczywiście dla układów STM32)? Może niektóre kompilatory mają dobre wsparcie w postaci forum, rozbudowanego helpa itp ? Pozdrawiam
To świetnie, że o tym piszesz. A jakieś konkrety, z którymi masz problem ? Cytaty z zapierającego się nogami kompilatora ?
To się zgadza. Ale dobry kompilator powinien to zastosować także w pierwszym przypadku. Z ciekawości sprawdzę, jak będę miał cortexa na tapecie. Albert
No tak widać, że nie ma to jak soczysta ironia gdy ktoś ma problem... A ja tylko zapytałem czy ktoś się spotkał z taką sytuacją i nie miałem na myśli szukania błędów w kompilatorze.
Witam! Zainstalowałem najnowszego Attolic-a lite for stm32 i kompilator nie dołącza plików biblioteki, żadnych plików. Męczę się z tym juk kilka dni bez żadnego rezultatu. Czy jest możliwość ręcznego wskazania ścieżek z plikami biblioteki SPL? Ręczne wskazanie ale dla całego środowiska a nie tylko dla pojedynczego projektu.
dlaczego w SWfSTM32 kompilator nie rozpoznaje typu byte.. bo w C nie ma takiego typu [syntax=c]typedef uint8_t byte;[/syntax]
Pytanie dla znawców. Czy plik makefile wpływa na czas linkowania plików? U mnie czasami trwa to nawet 30sec (linkowanie dwudziestu paru plików). Kompilacja przebiega bardzo szybko. Problem jest w projekcie dla STM32 z kompilatorem CodeSourcery wersja q1-161, podobnej wielkości projekt na LPC linkuje się 10x szybciej. A może to Eclipse zwalnia wywołanie...
(at)adasniezgodka Widzisz, dopiero teraz podajesz problem tak jak ma być podany. Dobre podanie jest wiodące, punkty to tylko wodotrysk. Pakiety kompilatorów maja swoje sposoby uruchomienia kompilacji nie z GUI, a z command line (nie, nie wiem jak Keil)
przy debugowaniu, warto zmniejszyć poziom optymalizacji, nawet do -O0 Ogólnie doczytałem, że masz rację. (ciekawy artykuł znalazłem np. tu: Ciekawie się zapowiada. Korzystam z Atollic TrueStudio (oparty na Eclipse). Jak zmniejszyć poziom optymalizacji? Bo chyba się jeszcze w tym gubię ;) Właściwości Projektu->Settings->Tool Settings->MCU GCC Compiler->Optimization->Optimization...
Aha :D . Szczerze mówiąc myślałem, że ta funkcja "robi" coś innego. Napisałem gdzieś, że jest błąd w kompilatorze? W STM32 jestem dość początkujący.
jednak pojawiły się następne: "Error opening target connection" oraz "Failure opening target connection". Jeśli lampka na Nucleo miga zielono-czerwono jeszcze przed odpaleniem "Start" w STM Studio to znaczy że te komunikaty są jak najbardziej uzasadnione. Po prostu jakaś inna aplikacja (ST-LINK Utility, IDE z kompilatorem w sesji debugowania itp.)...
Jaką wersję GCC miałeś i jaką masz? Spróbuj starsze linaro (lub BET), tak aby wersja GCC się zgadzała. 4\/3!!
Procesor STM32F103ZET6 jest mikrokontrolerem ARM z rodziny Cortex M3, który jest taktowany zegarem o maksymalnej częstotliwości 72 MHz i zasilany napięciem +3,3 V z wyjścia stabilizatora napięcia LT1117-3.3 (oznaczony desygnatorem U10 ). Poniżej przedstawiam napisany przeze mnie kod pliku main.c na procesor STM32F103ZET6, który steruje steruje dwiema...
Można po prostu nie załączać do zródeł kompilowanych przez kompilator C, nagłówków zawierających składnię C++... Jeżeli chcesz używać generatora, po prostu cały kod używający konstrukcji C++, zamieszczasz w osobnym pliku, który będzie kompilowany przez kompilator C++ i wołasz z main.c jakąś funkcję, która została napisana w C++. Funkcja oczywiście...
Standard C nic nie mówi o kolejności zmiennynch w pamięci. Przyzwoity kompilator i linker będzie rozmieszczał dane w kolejności malejącego rozmiaru, a nieupywane będzei eliminował całkowicie. Chcesz mień znany rozkład danych - użyj struktury - kompilator nie ma prawa jej zoptymalizować, ale będzei stosował wyrównanie naturalne, czyli np. int32_t będzie...
Witam, Mam problem z poprawnym działaniem programu napisanego pod STM32. Wygląda jakby kompilator pomijał linię kodu: [syntax=c]if((tablica[0]=='x') && (zmienna=0))[/syntax] dla: [syntax=c]uint8_t tablica[10], zmienna;[/syntax] W debuger też przeskakuje nad tą linią. Czy w tym zapisie jest błąd? Pozdrawiam.
Dołączę się do tematu. Mam ten sam problem. Jednak korzystam z plugina, który tworzy makefile i niebardzo wiem w które miejsce wstawić LIBS = -lm Nie szukam rozwiązania typu stwórz samemu makefile bo mam średnie pojęcie o tym ;/
Tyle że skompilowane biblioteki z mojej stronki są do starej wersji kompilatora... (; 4\/3!!
Moim zdaniem po prostu brakuje jakiejś opcji kompilatora/linkera/objdump (ewentualnie zawartość skryptu linkera, ona też ma tu znaczenie), ponieważ w moich projektach w plikach .lss mam co trzeba: ... bytesWritten = {}; 225200:2500 movsr5, #0 225202:e7f0 b.n2251e6 <(anonymous namespace)::SerialHandle:...
Nie, nie zachodzi konwersja. Zachodzi jedynie rzutowanie typów. Po skompilowaniu to jest zwykłe przeniesienie do rejestru, dla tego że właśnie wszelkie wskaźniki są takiej samej długości jak uint32_t. O konwersji byśmy mówili wtedy gdyby przed przeniesieniem do rejestru na danych były by wykonywane operacje arytmetyczne i/lub logiczne. Tu pozostaje...
Z tego co wymieniłeś wszystko jest OK (zakładam, że 3. to wskaźnik na funkcję, a nie jakieś dziwne rzutowanie). Ja bym się jednak początkowo skupił na zainicjalizowaniu w main() wszystkiego co inicjalizuje Keil w startupie, czyli po prostu wywołaniem SystemInit() - jeśli to zrobiłeś to następnym krokiem będzie zastanowienie się, czemu kod w Keilu generuje...
Biblioteki czy plików nagłówkowych? Jak to drugie to: - www.st.com - Products → Microcontrollers → STM32 32-bit ARM Cortex MCUS → STM32F4 Series → STM32F407 - (po lewo) Software → STM32Cube -> (w nowo otwartym oknie) STM32CubeF4 - (na samym dole) Get Software → Download - w rozpakowanym archiwum: Drivers → CMSIS...
Wybrałeś stary uC, archaiczne i martwe środowisko, a do tego chcesz pisać jak na AVR. To jest trochę inaczej. Jeżeli chcesz mieć zewnętrzny kwarc, to podłączasz go to wyprowadzeń HSE, włączasz generator, czekasz aż będzie gotowy i przełączasz taktowanie. Standardem w wielu aplikacjach i płytach rozwojowych jest 8 MHz, czasami 25 MHz. 12 MHz jeszcze...
A co niby ma kompilator do wartości jakichkolwiek parametrów mikrokontrolera?
A, masz rację. Raczej kompilator (; Teraz powinieneś go oficjalnie przeprosić za "głupi" (; Uwierz, że algorytmy jakie pracują w kompilatorze żeby wykrywać m.in. takie rzeczy (generalnie algorytmy optymalizacji) są poza naszymi możliwościami pojmowania, bo to jest wyższa matematyka (; Np. http://en.wikipedia.org/wiki/Polytope_mo... 4\/3!!
Gdybym miał pojęcie jak WY to bym nie pytał tylko sam to napisał. Zapytać wolno i to nie wstyd, że człowiek czegoś nie wie. A czy koledzy na wszystkim się znają? Są dziedziny w których jesteście skazani na pomoc innych i zadajecie pytania i to na 100%:). W Microchipie w samym kompilatorze jest możliwość umieszczenia bootloadera na końcu czyli jakiś...
Jest i to o jakies okolo 2x w stosunku do |=, &= przynajmniej na tych kompilatorach co używałem i przy max stopniu optymalizacji (wiadomo nie ma co jednak generalizowac dokladnych roznic, ale jedno jest pewnie - nigdy nie dzialal wolniej niz R-M-W).
Specjalistą od SPL i stm32 nie jestem... ale C to C ->jeśli chcesz wypełniać pola struktury to musisz mieć obiekt tego typu :) Kompilator dobrze Ci mówi - nigdzie nie masz definicji "NVIC_InitStruct". Łoj. BlueDraco mnie ubiegł jak zagłębiałem się w Twój załącznik :cry:
To z rozmiarem rozumie i znalazłem. Uzupełnię ten wcześniejszy opis w poście #5, bo mi się wcisnął nie ten klawisz :oops: : Na początku swojego programu dajesz: Wychodzi na to, że moje obawy były uzasadnione (bałem się, że wpisując coś na chama do flash mogę naruszyć strukturę tego co tam docelowo ma być wgrane). Tam na mbed w pliku eeprom.c jest taki...
Możesz zamieścić wywołanie polecenia kompilatora? Tak by można było przejrzeć użyte opcje. Trochę piszą w internecie o tym błędzie.
Freddie, napisz, który procesor nie wyrównuje stosu!!! Ale to nie ma nic do rzeczy. Nawet jeśli takowych nie ma to nawet średnio rozgarnięty twórca kompilatora musi wziąć pod uwagę taką możliwość. Niezależnie od tego co Ty o tym myślisz. Bo w przeciwnym wypadku byłby to błąd kompilatora. Albert
Ja pracuję na Eclipse, który wcale nie jest wolny :wink:. Jest to bardzo dobre IDE które na początku może wydawać się trudne do ustawienia ale oferuje z kolei ogromne możliwości konfiguracji. W połączeniu z różnymi kompilatorami można tworzyć oprogramowanie nie tylko dla STM32 ale też innych rdzeni ARM, AVR oraz dla każdych innych dla których znajdziemy...
Pomijając płatne i nie płatne wersje kompilatorów C++ i problemy z tym związane, dodam coś od siebie: Z doświadczenia na AVR, ale to nie ma znaczenia bo sprawa w ARM wygląda bardzo podobnie. Jeśli coś piszesz w C, to inaczej konstruujesz kod. Nigdy nie napiszesz takiego samego kodu pisząc w C++ co w C i nie wynika to z faktu, że się nie da. To jest...
Bo globalnych stałych nie definiuje się w pliku .c Ale dobrze że podejrzewasz błąd kompilatora (; Już dawno nikt nie sugerował, że problemem jest kompilator (; 4\/3!!
Czy musisz koniecznie mieć tablice dwuwymiarowe? Może jednowymiarowa np: bmp[x+y*320] ? W końcu tablica dwuwymiarowa jest właściwie i tak dla kompilatora tablicą jednowymiarową.
Witam, Dzieki za pomoc. Jesli chodzi o brak konsekwencji to jest fragment wiekszej calosci, chcialem tylko pokazac jak inicjalizuje UARTy. Znalazlem blad. Robie funkcje dosc mocno generyczne i okazalo sie, ze inicjalizacji i przy wysylaniu/odbieraniu, mam funkcje translacji numeru UARTa na adres zamienilem ze soba parametry w definicji i deklaracji...
Atollic nie jest darmowy. Może spróbuj z CooCox? - na Eclipse, - darmowe i w pełni funkcjonalne, - ma dużo gotowych przykładów, drivery do różnych elementów zewnętrznych: LCD, TFT, SD, akcelerometry... - wbudowany SPL (jak ktoś lubi), - bez problemu współpracuje z ST-LINK V2, JTAG... - nie wymaga konfiguracji, a nadal oferuje pełną swobodę kształtowania...
Freddie Chopin korzystam z twojego startup'a oraz skryptu linkera, ale ładowanie Twoich projektów to też nie jest takie Plug&Play. http://obrazki.elektroda.pl/4345954200_1... Ale już się udało, dopisałem po prostu opcję -g w linii gdzie podaje się nazwę kompilatora.
U mnie pliki zajmują trochę więcej... Ponawiam pytanie o wersję kompilatora i dopytuje jakie zmiany zrobiłeś w projekcie? Assembling file: startup.S arm-none-eabi-gcc -x assembler-with-cpp -c -mcpu=cortex-m3 -mthumb -g -ggdb3 -Wa ,-amhls=out/startup.lst -MD -MP -MF out/startup.d -I. startup.S -o out/startup .o Compiling file: gpio.c arm-none-eabi-gcc...
Dla klarowności, wystarczyłoby bez tej sumy, ale ta suma nie ma znaczenia dla programu/kompilatora.
Myślałem że umieszczanie funkcji w kilku plikach to tylko ułatwienie organizacyjne dla piszącego program, natomiast dla kompilatora nie ma najmniejszej różnicy.
He, he, he... Patrz na to: while (1); Nic, co jest dalej, nie ma szans się wykonać, więc kompilator eliminuje zbędny kod. ...A ponadto masz błąd w inkrementacji wskaźnika. idx = (idx + 1) % BUFSIZE; - to najprostszy poprawny zapis tego, co masz zrobić, chociaż nie zawsze daje optymalny kod.
Bruce dał Ci dobrą radę, powywalaj to co trzeba i sprawdź co się dzieje. A co do consta - to tylko bardziej sprawa czystości kodu, niż "jak kompilator to zinterpretuje".
Skoro wiesz lepiej to po co pytasz? Bit jest "cały czas" ustawiony, bo cały czas coś odbierasz (nie wysyłasz stop), a dodatkowo jak pracujesz krokowo, to pomiędzy jednym krokiem a drugim po prostu układ odbiera dane, bo ma czas. Tak więc każda kolejna porada będzie taka sama. Przed odebraniem trzeba oczekiwać na odpowiednie bity. Po odebraniu trzeba...
Po kilkunastogodzinnych zmaganiach z wyrzucaniem programu do Default Handler Dzieje się to dlatego, że: 1. modyfikujesz stos, choć nie informujesz o tym kompilatora w sekcji "clobber" Twoich dyrektyw, 2. zostawiasz stos niewyrównany do 8 (na niektórych rdzeniach to nie jest problem, w sumie z STM32 domyślnie to jest problem chyba tylko na F1). Efekt...
To nie zadziała w ten sposób... W swoim main() używasz bezpośrednio funkcji z biblioteki FatFs - np. f_open() (zwróć uwagę na podkreślenie). Potem - wewnątrz funkcji VS1003PlayFile() używasz standardowej funkcji fread() (zwróć uwagę na BRAK podkreślenia), a do tego jeszcze zamiast standardowego FILE do funkcji przekazujesz FIL z FatFs... Proponowałbym...
Wątpię, by bez specjalnej deklaracji był tylko we flashu. W czystym C tego nie da się zażądać (może w jakiś niszowych dialetach) A jaka ona jest, zależy od kompilatora - a tego nam skąpisz
W Twoim działającym przykładzie do rejestru wpisujesz adres tablicy ("&" może być albo może go też nie być - również zadziała wg mnie), natomiast w przykładzie niedziałającym najpierw do funkcji podajesz adres tej tablicy, a potem jeszcze raz wyciągasz adres tego adresu - żeby zaspokoić Twoje potrzeby kompilator zmienną tab umieszcza gdzieś na stosie...
Trzeba właczyć w opcjach kompilatora długie skoki. Ewentualnie trzeba skakać do funkcji w RAM przez wskaźnik, bo to zawsze wykorzystuje długie skoki. P.S. Na Cortex-M3 funkcje z RAM działają WOLNIEJ niż z flasha, to nie ARM7. 4\/3!!
Mylisz bibliotekę (libm.a) z plikiem nagłókowym, który includujesz (math.h). Jedno z drugim nie ma za wiele wspólnego. Kompilator może ci wygenerować plik map i lss, w którym zobaczysz co i jak się dzieje. A może byś załączył kompletny projekt odtwarzający problem, żeby ktoś mógł to sprawdzić? Bo mamy już 36 postów i ciągle nic nie wiadomo (no poza...
Niewątpliwym plusem jest cena, do niskobudżetowego urządzenia o większym nakładzie zabawa ma sens, jak robimy dla siebie, to nadal wolę STM32 lub w przypadku mniejszych uC coś pokroju nowych Attiny/AVR, w obu przypadkach mamy wówczas darmowe i nienajgorsze środowisko wraz z kompilatorem.
Zacznij od przeczytania ostrzeżeń kompilatora i usunięcia ich - zwłaszcza w tej linii: lcd_chr(40,30,5,9,A9Bitmaps[45]); No i używaj spacji po średnikach, wokół operatorów, przed nawiasami otwierającymi i po zamykających - wtedy będziesz miał szansę, że ktoś przeczyta Twój kod.
http://www2.st.com/content/st_com/en/pro... http://www2.keil.com/stmicroelectronics-...
extern należy dodać wtedy gdy dołączamy ten sam plik .h kilka razy (zresztą kompilator nas o tym uprzejmie poinformuje). Wskaźnik jest zmienną wskazującą na dane w obszarze flash i jest umieszczony w RAM'ie'. Wskaźnik może wskazywać również na dane w RAM'ie.
Patrząc na liczbę tematów i problemów, chyba coś tam jest do poprawy. W ten sposób można śmiało stwierdzić, że AtMega 8 to najbardziej niedopracowany mikrokontroler, a GCC to najgorszy kompilator. 4\/3!!
jedynie Eclipsowe sprawdzanie składni krzyczy przy w konstruktorze Spróbuj zindekspowac projekt. Jak nic nie da to znaczy ze eclipse ma jakiś problem. Raczej kieruj się tym co wypluwa kompilator a nie IDE.
1. Tych plików nigdy nie dołącza się bezpośrednio - zawsze przez nagłówek danego układu, czyli np. stm32f4xx.h 2. Masz źle ustawione "include path" w opcjach kompilacji. ja niewiem co jest z tym kompilatorem i dlaczego ciągle i ciągle z uporem maniaka wywala mi błąd w 1 lini To nie kompilator - to raczej przypadek tak zwanego PEBKAC, więc odrobina autorefleksji...
Niestety żadnego takiego pliku kompilator nie wygenerował.
Witam serdecznie. Mam takie pytanie, czy istnieje możliwość pisania obiektowego w c++ pod stm32. Mam skonfigurowanego Eclipsa i kompilator gcc. Kod w czystym C kompiluje bez problemów, ale jak np próbuje dodać klasę: [syntax=cpp]class klasa{ public: klasa(); int c; }; [/syntax] dostaje komunikat: expected '=', ',', ';', 'asm' or '__attribute__' before...
Raczej to drugie, żeby uniknąć rzutowania typów przy nadgorliwym kompilatorze. Raczej to pierwsze, żeby kontrola typów kompilatora mogła programistę czasem uchronić od głupich błędów.
ja po prostu sprawdziłem wcześniej, wiec wiem o czym piszę, a Ty jak chcesz to hipotetyzuj dalej. Wszystkie swoje uwagi poparłem testami i zamieściłem ostrzeżenia kompilatora, jakie uzyskałem. Odniosłem się bezpośrednio do ostrzeżenia kompilatora, którą zamieścił Autor.
A co to jest BOOL? Toto jest przed rcvr_datablock i nie podoba się kompilatorowi, co Ci wyraźnie pisze. Albert
Marek_Skalski powiedz mi jeszcze, jakiego kompilatora używasz? Podobno Keila jest najlepszy....
Czyli odczytujesz... Odczyt to odczyt. To nie jest kwestia kompilatora, programu czy wyboru, tylko sprzętu. 4\/3!!
Jeśli chcesz pracować na procesorze STM32 to jest tam wszytsko co trzeba. Plugin siedzi w opcjach plugin ale dopiero jeśli otworzysz przykładowy projekt dla STM32 (po zainstalowaniu w folderze). Kompilator to arm-elf-gcc nie wiem czy da sie podłączyć zewnętrzny bo nie miałem takiej potrzeby. Kompilator jest też intalowany razem z Anlgią. Nic prócz wigglera...
oryginalny gcc z arduino identyfikuje sie jako: 7.3.0-atmel3.6.1, "dogrywany" : 2020-q4-major/v10.2. Przestaję rozumieć. Na początku piszesz o problemach z płytką STM32F101C8T6. Teraz podajesz jakąś wersję kompilatora dla AVR. Jaką wersję Arduino Core dla STM32 masz zainstalowaną w Arduino IDE? To w niej znajdują się definicje stałych dla oznaczenia...
Wrzuć cały projekt i podaj więcej szczegółów (kompilator, skąd są pozostałe pliki "bazowe", ...). 4\/3!!
Ok zmienię na bleeding-edge-toolchain i zobaczymy. Nawiasem nie bardzo chce mi się wierzyć, że z moim kompilatorem nikt nie miał problemów z tymi funkcjami.
Programista kombinatorstwo pozostawia hochsztaplerom a sam czyta komunikaty emitowane przez kompilator i inne programy toolchaina.
Obawiam się, że jeszcze dłuższa będzie, gdy mam pisać programy w ride7. Nie odpowiada mi ten styl, a nie widzę możliwości aby dało się coś gdzieś pozmieniać w tym edytorze. Co do kompilatora to jest dla STM32, ściągałem jako dodatek do Raisonance.
Sprawdzalem na kompilatorze przed wyslaniem i roslo mi tylko "Total ROM Size";)
JEST SZESNAŚCIE ZERO a 0:30 jako JEST TRZYDZIEŚCI ZERO JEST ZERO SZESNAŚCIE , JEST ZERO TRZYDZIEŚCI Niestety jak na razie niema filmu , gdyż matryca liter jest na razie wykonana z arkuszu papieru . Próbowałem to sfilmować , ale efekt jest mizerny , litery podświetlone zlewają się w jedną całość . Póki nie zagra wszystko to szkoda zamawiać wycięcia...
A po co nam dajesz źródła pliku C? Sprawdź co generuje kompilator w plikach wynikowych *.map. Tam masz cały kod z C przerobiony na assemblera i od razu widać co się dzieje. Tak jak kolega zauważył - jak kompilator coś za bardzo zoptmalizuje (np. funkcję delay, bo stwierdzi, że jej działanie nic nie zmienia w wyniku) to nagle się okazuje, że czasowe...
Jeśli zmienna nie będzie do niczego używana, to kompilator i tak to zoptymalizuje. Co do Twojego pomysłu, to wystarczy sprawdzić - nie jestem pewny, czy to da pożądany efekt, nie jest też specjalnie czytelne [; 4\/3!!
a jak to dokładnie jest z takimi bootloaderami, jak te co podesłałeś i prawdopodobnie te od Arduino? Czy one za każdym wgraniem projektu muszą być dokompilowane do mojego programu? Czy też siedzą sobie grzecznie w specjalnym zakresie pamięci i kolejne flashowania ich nie ruszają? Tak długo jak wgrywasz wsad "przez nie", nie musisz nic robić. Kompilując...
NAS powoduje tylko związanie z danym obiektem jednobajtowego identyfikatora przestrzeni, A ten idetyfikator to co generuje jak nie kompilator? Czyli jednak coś wie.
Rzeczywiście kompilator zwraca przy f_write warning. Jak to powinno się poprawnie zapisać? Należy użyć dokładnie takiego typu jakiego oczekuje funkcja, czyli UINT, a nie uint8_t. I bynajmniej nie chodzi o rzutowanie - należy zmienić typ zmiennej której adres jest przekazywany do funkcji. Zwrotne informacje z tych funkcji odbieram, ale nie chciałem...
Witam ! Przeczytałem z uwagą informacje zawarte w tym wątku, dołączam się do niego bo mój problem jest podobny. Wielkie dzięki Freedie za tutoriala, jest dla mnie bardzo pomocny. Mam pewne doświadczenia w programowaniu procesorów ARM7TDMI w środowisku komercyjnym. Teraz chciałbym sięgnąć po nowsze procesory na rdzeniu cortex_m3 (stary kompilator ich...
Dzięki, no właśnie teraz zobaczyłem na debuggerze, że kompilator umieszcza to właśnie tam gdzie chcę w ten sposób.
Kompilator mówi co jest nie tak. Dałeś bez sensu definicje -D-Dcośtam
Wtrącę swoje 2 gr. Używam STM32 w zasadzie od momentu jak pojawiły się na rynku w PL. Firmware piszę zawsze sam, bez SPL i bez HAL. Nigdy w życiu nie musiałem robić żadnego obejścia ze względu na jakieś problemy opisane w erracie. Nie mówię oczywiście o problemach typu "funkcjonalność X w układzie peryferyjnym Y nie działa i koniec", ale właśnie o jakichś...
a Ride7? a co to takiego ? :) http://www.mcu-raisonance.com/~ride7__mi... Darmowy kompilator C do STM32. Niestety obsługuje jedynie programowanie RLinkiem. Ale zawsze można hex'a wrzucać po RS'ie
Wszystko stanie się jasne, jak poznasz sposób na "czytanie" typów zmiennych. 1. Zaczynasz od nazwy 2. Idziesz do "końca" w prawo 3. Następnie do "końca" w lewo 4. Nawiasy mogą wyznaczać "lokalne końce". Tak więc Twoja zmienna const uint8_t *Tab[3] to trzyelementowa tablica wskaźników na stałe uint8_t Jak sam widzisz nie da się wyczytać, że sama tablica...
Witam wszystkich, W ostatni weekend wziąłem się za STMy. Przygotowałem sobie środowisko Eclipse do pracy z mikrokontrolerami STM32 wraz z kompilatorem CodeSourcery. Stworzyłem swój szablon projektu do mojego STMa utworzony na podstawie przykładu projektu [url=http://www.freddiechopin.info/index... kolegi...
ale teraz się zastanawiam (stąd ten post ) czy goście z CodeSourcery nie zrobili tego memcpy na DMA, bo czas kopiowania jest bardzo krótki. Nie zrobili, nie wszystkie uC maja DMA, poza tym kompilator nie ingeruje w żadne peryferia.
Przejrzyj aktualne oferty pracy to się dowiesz co teraz jest "na topie". Wszystko zależy od tego jakie dana firma ma narzędzia i od tego zależy na czym buduje swoje urządzenia. Czy to będzie 8051, AVR, PIC, STM32, FPGA czy jeszcze co innego zależy głównie od tego do czego są kompilatory kupione, programatory itp. Tu nie ma jednoznacznej odpowiedzi co...
Wywala błąd gdyż kompilator nie rozumie polecenia "nop();". Zastąp powyższe przez "asm volatile("nop")" albo dodaj include do pliku system.h w pliku delaya. W pliku system.h masz właśnie definicje nop() jako to co wyżej podałem, zajżyj do tego pliku.
Czy można używać kompilatora Keila, a pisać kod programu w Eclipse? Ktoś używa takiego rozwiązania?
stm32 nucleo kompilator stm32 kompilator linux bascom kompilator
power acoustik iveco schemat instalacji elektrycznej transformator ferrytowy
Mercedes V12 - Jak określić lewy rząd cylindrów? Schemat zasilacza BN44-00497B do telewizorów Samsung