Bardzo wiele zostało już powiedziane (bardzo dobre porady). Moim zdaniem krokiem zero jest jako tako umieć programować w C na PC (jak przebiega proces kompilacji, kod źródłowy podzielony na pliki *.c i *.h, organizacja pamięci i wskaźniki, struktury i wskaźniki do nich, słowa kluczowe register, volatile, static, etc., preprocesor, makefiles i make,...
http://obrazki.elektroda.pl/9377221800_1... W dziale mikrokontrolery ARM znajdziecie bezpłatny (do osobistego użytku edukacyjnego) poradnik STM32 przygotowany przez szczywronek . Materiał dostępny jest w temacie: techekspert: Do kogo kierowany jest poradnik, jakie podstawy powinien mieć opanowane czytelnik? Czy znajomość określonej...
Witam, Po pierwsze. Chciałbym przenieść całą strukturę do pamięci flash: typedef struct { unsigned char state; unsigned char input; unsigned char nextstate; } MENU_NEXTSTATE; typedef struct { unsigned char state; unsigned char *pText; unsigned char (*pFunc)(unsigned char input); } MENU_STATE; Czy możecie mi wyjaśnić...
Czy do funkcji HAL_UART_Receive_IT na pewno powinien być przekazywany adres wskaźnika do struktury UART_HandleTypeDef?
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.
Jak już korzystasz z bibliotek ST to masz chociażby funkcje: FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data) i FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data) Operując na wskaźnikach możesz tam zapisać zmienne dowolnego typu, czy całe struktury.
Mam głupie pytanie: Jak można się wskaźnikiem poruszać wewnątrz struktury po komórkach tablicy ? Jak to napisać ?
Skompilowane! ale jeszcze nie wgrane. inicjalizacja NVIC po zmianie: NVIC->IP [5] |= 0x00000010; /* set priority lower than SVC */ NVIC->ISER[0] |= (1 << (USB_LP_CAN1_RX0_IRQn & 0x1F)); "Trochę na ślepo walczysz" - nie powiem, że nie. Błąd error: lvalue required as left operand of assignment kompletnie...
A masz namiar na prostą bibliotekę parsującą NMEA? Najlepiej taką, która jako parametr wejściowy oczekuje wskaźnika do bufora z ramką z modułu oraz wskaźnik do jakiejś struktury, w której będą rozkodowane dane.
Za bardzo kombinujesz. Albo Pisz w C++ albo w C i przekazuj do funkcji wskaźnik do tej struktury. Możesz oczywiście wywoływać funkcje przez wskaźnik i jako parametr dać wskaźnik na wywołująca go strukturę. Tylko po co. Albo pisze się obiektowo w języku obiektowym, albo proceduralnie w języku proceduralnym. Wymyślanie protez obiektowych nie ma sensu
(at)KryQ A jesteś w stanie zobaczyć jak wyglądają struktury pod debugerem w wersji działającej i niedziałającej? Nie wrzuciłeś kodu gdzie inicjalizowany jest wskaźnik base.
Cześć, przejrzałem kilka tematów Freddy'ego w tym temacie sprzed kilku lat i dalej nie potrafię wymyślić jak zmusić kompilator do przechowywania stałych w ROM-ie. Wykombinowałem tak: :arrow: [syntax=c]class Foo { public: const char* Name; }; Foo foo; int main() { foo.Name = "asdfg"; //coś tam dalej }[/syntax] To załatwia mi przechowywanie tekstu we...
siedziałem nad tym kilka dni.. przyczyną okazała się nowa biblioteka, w której dodano funkcję "FSMC_AsynchronousWait".. niby standardowo jest disabled, ale po włączeniu program się zawieszał na zapisywaniu do pamięci :) podczas konfiguracji w strukturze należy dodać FSMC_NORSRAMInitStructure.FSMC_Asynchron... = FSMC_AsynchronousWait_Disable;
Z tym rzutowaniem to wolę jednak "ręcznie" to robić....jakoś tak wydaje mi się bezpieczniej. U mnie akurat sizeof zawsze będzie mniejsze niż 256 gdyż jest to po prostu ilość bajtów do zapisania jednej zmiennej/tablicy/struktury i nie zamierzam robić większych :wink:. Biblioteki z ST są zakręcone..niestety. Zaletą mojego pomysłu jest to że struktura...
Coś naplątałeś... Aby uzywać malloca bez dziwnych errorów, musisz zadeklarować odpowiednią ilość miejsca na stertę . Co z tego, ze twoje zmienne zajmują niewiele ramu, skoro najpewniej ustawiles sobie parę kB sterty, i gdy przekroczysz te pare kB, program ci sie natychmiast wykrzaczy, bo oczywiście najpewniej nigdy nie sprawdzasz, czy malloc przypadkiem...
(at)Bluedraco Po drugie (stanleyst) nikt nic nie przeoczył pisząc bibliotekę. Przeoczył programista pisząc błędną wartość w podstawieniu. A co z polami struktury DMA init? przecież tam są miejsca nie na wskaźnik ale na zwykłego inta, to, że to ma akurat taką samą długość, to inna sprawa.
i również przekażę ją do funkcji przez wartość to kompilator może mi ją zoptymalizować i całą tablicę odłożyć na stos? Tablic nie możesz przekazać przez wartość w C tylko przez wskażnik. Tylko struktury i unie (abstrahując od typów podstawowych) są przekazywane przez wartość w C. Więc jak polem struktury będzie tablica to przekazując tę strukturę -...
Korzystanie z tej biblioteki poza tym mają również inne wady: 1) Struktury inicjalizacyjne marnują pamięć. Te struktury są spakowane, więc dostęp do bitów w tej strukturze jest utrudniony. Co modyfikacja bitfielda kompilator musi uzywac instrukcji BFI,AND,ORR,BIC. Marnuje to sporo czasu, zamiast DWOCH instrukcji LDR,STR. Odczyt zawartości struktury...
To API jest bez sensu więc nie ma co szukać o tym informacji. Dlaczego uważasz, że jest bez sensu? To według Ciebie lepiej pisać odwołując się bezpośrednio do rejestrów? Korzystanie z tej biblioteki poza tym mają również inne wady: 1) Struktury inicjalizacyjne marnują pamięć. Te struktury są spakowane, więc dostęp do bitów w tej strukturze jest utrudniony....
Zgadza się, są rozbieżności w tej bibliotece z dokumentacją. Ten FatFS pochodzi z CubeMX. Już sobie to ogarnąłem za pomocą wskaźnika na bufor LFN. Wykorzystałem wskaźnik znajdujący się w strukturze opisującej katalog, tylko czemu wskaźnik bufora LFN podpina do struktury katalogu zamiast do struktury samego pliku? Trochę dziwne. Poniżej struktura katalogu...
hohoh Tymon, szczerze to nie czytałem całego tego dokładnie, ale na pierwszy rzut oka to czy to nie jest "przekombinowane" jesli chodzi o nasz problem? ;p Zajmuje to dość trochę pamięci, tworzenie jakichś tablic wskaźników do struktur w takim przypadku to też dość nieciekawa sprawa. Szczerze mowiac to zrozumienie twojego kodu zajmuje troche czasu :D...
Szkoda tylko, że timer nie jest jedynym przykładem na świecie. Spójrz sam do swojego własnego kodu i popatrz w main.c na zmienne takie jak InjectionConfig, MultiModeConfig, adc_trigger_config i pewnie jeszcze kilka innych. Tak, w STM32 jest sporo RAMu i są szybkie, ale to jeszcze nie znaczy, że koniecznie wszyscy muszą stale marnować RAM i czas ze względu...
Witam wszystkich. Przenosze kod z STM32 L 053 na STM32 F 030 Ruszylo mi prawie wszystko czyli: RCC GPIO SPI Pracuje na kodzie dostarczonym przez ST pod pewien moduł radiowy. Kod jest oparty o HAL generowany z Cube. Mam problem z DMA. Problem ten jest wynikiem nie wykonywania się jednej linijki kodu. Zamiast wskaznika (adresu funkcji) wpisywane jest...
https://obrazki.elektroda.pl/4402957600_... Damien George zaprezentował MicroPythona w wersji 1.20. W przygotowanym wydaniu dodano między innymi obsługę nowych płytek, w tym Raspberry Pi Pico W, lekkiego menedżera pakietów o nazwie mip, a także usprawnienia, pozwalające na zmniejszenie rozmiaru dzięki zastosowaniu struktur typu skompresowanego...
Bazowałem właśnie na tym samplu tworząc swój projekt. Z racji braku czasu dopiero teraz powróciłem do tego tematu. Doszedłem do przyczyny lądowania procesora w Hard Fault, otóż w pliku ethernetif.c zdefiniowałem globalny wskaźnik do struktury netif i widzę, że zaraz po inicjalizacji stosu dane z pod tego adresu ulegają uszkodzeniu. Następnie funkcja...
Hej, mam następujący problem. Napisałem niewielką klasę opakowującą ADC1 dla STM32L4 (tak, piszę w C++ ;) ). Jako, że chciałbym aby była dość ogólna, wskaźnik do adc przechowuję jako pole Z trudem mogę sobie to wyobrazić. Na góralski rozsądek takie tworzenie zachodzi raz i nigdy nie jest ziemieniane. Słowa "ustawiane w konstruktorze" pachnie mi tym...
Problem rozwiązany :) "Wystarczy" stworzyć na początku takie oto dwie zmienne: [syntax=c]char time_zone[]="TZ=CET-1CEST,M3.5.0/2,M10.5... extern char* __env;[/syntax] time_zone ma wartość odpowiednią dla polski. Jeśli będą chętni to wyjaśnię co robią poszczególne "znaczki". Po tym zabiegu na początku main dajemy takie coś: [syntax=c]__env = time_zone;...
No, chyba właczam te porty: Chyba nie. Konfigurować to może i je konfigurujesz, ale ich nie włączasz. Nie wierzysz to sprawdź debuggerem czy zmienia się wartość jakiegokolwiek rejestru odpowiedzialnego za GPIO. Możesz sobie nawet spróbować ją zmienić ręcznie. Słowo daję, działało mi na STM32L Nie ma takiej opcji - musiało być dodatkowe włączanie portów,...
Czy ktoś zmusza Cię bronią do używania tej biblioteki? Przecież żeby wystartować transfer trzeba (z tego co pamiętam) wykonać JEDEN zapis do JEDNEGO rejestru, a ty chcesz wywoływać 3 funkcje... To już szybciej będzie te dane ręcznie kopiować... Tutaj masz np przykładową PEŁNĄ konfigurację dwóch kanałów DMA do SPI (brak oczywiście konfiguracji SPI, czy...
Witam, bez niepotrzebnych wstępów przechodzę do sedna sprawy: - Środowisko pracy Ride7 + programator debuger Rlink - Mikrokontroler STM32F103T8U6 - Projekt - przykład startowy z książki USB dla niewtajemniczonych - Cel - zamiganie diodami na porcie PB0 i PB1 - Źródła - biblioteki STM i kod dostarczony do książki http://obrazki.elektroda.pl/1724449400_1...
Napisałem więcej punktów więc może pomieszałem. W tej strukturze będą znajdować się bufory w formie tablicy 100 bajtów, oraz spora ilość flag pomiędzy wątkiem głównym a przerwaniami i różne zmienne pomocnicze. Taki sposób jak zaprezentowałem ma pewną zaletę: łatwo debagować, bo w dowolnym momencie mogę podejrzeć całą strukturę, wszystkie bufory itd....
Wydaje mi się, że to forum elektrody jest używane głównie przez amatorów lub okazyjnych programistów . ..Bullshit. Jesli wszyscy byliby tutaj dorywczymi lub poczatkujacymi programistami, to kto by pomagał w rozwiązywaniu problemów? "pomagał głuchy ślepemu". Racz zauwazyc, ze na tym forum wypowiadają się ludzie, którzy pracują już w zawodzie związanym...
Przegryzienie się przez ponad 1000 stronicowego manual'a i "ogarnięcie" procesora jest procesem dość długotrwałym i żmudnym, stąd też następuje próba przeskoczenia tematu za pomocą gotowych bibliotek. Nigdy jakoś nie miałem okazji "przegryzać się" przez ten 1000 stron Reference Manual. Od razu przechodzę do Register Descriptions, bo ile to razy można...
Co to jest "bt_vector_read"? Zamiast 1 dodaj 4 i po problemie. Swoją droga to problemem jest cały sposób, bo można to zrobić 100x prościej i wygodniej... Stwórz sobie strukturę zawierającą dwa wskaźniki na te dwie funkcje, następnie stwórz stałą poprzez zrzutowanie adresu twoich wektorów na typ tej struktury. Albo po prostu nazwy funkcji ustaw jako...
Powracam z nowym pomysłem, którym są template'y Może na wstępie napiszę po co mi to w ogóle jest. Otóż mam taką fanaberię, żeby stworzyć "framework" do ARMów w C++. Wszystko byłoby fajnie, gdyby nie trudności z przechowywaniem danych w pamięci FLASH. Otóż taka na przykład klasa Pin dla Cortex-M3 (STM32) wymaga dwóch wskaźników - na komórkę pamięci odpowiedzialną...
Adres rejestru danych zapisałeś tak: Tutaj akurat USART3_BASE jest liczbą, która dopiero później w nagłówku jest używana jako część definicji struktury USART3, więc problemu nie ma. Poza tym konfiguracje peryferiów razem z tymi wielkimi strukturami przenieś do oddzielnych funkcji, niech te struktury nie będą zmiennymi globalnymi! Przecież nie są globalne...
że programuje AVR w ASM Nie jest to szczególna chwała. Zacytuj mi chociaż jeden post w którym dostałem odpowiedz na pierwsze pytanie, bo Ty widzisz 5x, a ja nigdzie Tłumaczono Ci to wielokrotnie. Ale na razie poziom Twojej wiedzy jest zbyt niski zby to zrozumieć. tak jak pisał (at)Freddie Chopin - naucz się C na poziomie choćby elementarnym. Weź książkę...
Twoich plików nie używałem. Szczerze mówiąc jestem raczej początkujący jeśli chodzi o mikrokontrolery. Do tej pory wystarczało mi: -konfiguracja mC i peryferiów i napisanie jakiegoś algorytmu obliczeniowego. Zarządzanie pamięcią nawet się nie tykałem (stosy, sterty itp). Jeśli chodzi o problem to zwiększyłem rozmiar stosu dwa razy i wygląda na to, że...
https://obrazki.elektroda.pl/9151185000_... Autor poniższego zestawienia jest inżynierem i konsultantem wsparcia dla systemów wbudowanych. W swojej karierze poznał on szereg różnych architektur mikrokontrolerów, różniących się wydajnością, wyborem peryferii, poborem zasilania etc. Wybór odpowiedniego układu stanowi zawsze o sukcesie...
Optymalizator nie z wszystkim sobie poradzi. Dodałbym - trochę z doświadczenia - że optymalizator w ogóle nie działa dla "prawdziwych funkcji" a dla "nieprawdziwych" (inline) zwykle nie działa gdy parametr jest przekazywany przez referencję (wskaźnik, adres, jakkolwiek to ktoś chce nazwać). No a przecież w SPL WSZYSTKIE funkcje (włącznie z najgłupszymi...
Recensione Miałem okazję być na tym evencie, więc słów kilka... Konferencja prowadzona była przez firmy Computer Controls (PL) oraz LDRA (UK). Na początku miała miejsce prezentacja działalności obu firm. Następnie poruszone zostały zagadnienia związane z bezpieczeństwem w embedded - było pokrótce o procesie tworzenia oprogramowania, testów, oraz ogólnie...
wskaźniki struktury wskaźnik struktury struktury krzemowe
menadżer urządzenie szukać czarne kyocera demontaż odkurzacza zelmer
hisense telewizor kospel podgrzewach
Hyundai Elantra 2011 – brak napięcia na rozruszniku, przekaźnik START, bezpieczniki, diagnoza EBnauer grubościówka – demontaż silnika krok po kroku, narzędzia, porady, bezpieczeństwo