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ć ?
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,...
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;
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.
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...
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...
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...
(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.
Witam, pozwolę sobie na wykopaliska archeologiczne, ale myślę, że to może się jeszcze komuś przydać. Większość przypadków Hard Fault podczas działania DMA w STM32F1 powstaje przez błędną konfigurację kanału DMA przy użyciu biblioteki standardowej. Błędny fragment kodu: hlayer.c:167:43: warning: assignment makes integer from pointer without...
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
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...
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,...
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...
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...
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...
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 volatile ). Np. nie działa: [syntax=c] this->p_adc->CR |= ADC_CR_ADDIS; this->p_adc->CR &= ~ADC_CR_ADEN; [/syntax] ale to już działa (mimo, że jest wołane w tej samej...
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...
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...
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...
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;...
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...
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...
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....
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...
ż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ę...
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...
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...
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ą...
Freddie Chopin, FIFO jest dobrym rozwiązaniem, myślałem, że uda się to zrobić w prostszy sposób. Niestety muszę przebudować wszystkie funkcje z tym związane, bo chcę zamienić aktualne rozwiązanie czyli dwie zmienne tablica i licznik danych w buforze na strukturę z tablicą, wskaźnikiem na ostatnio odczytany element i licznikiem danych w buforze. Mam...
W jaki sposób debugujesz? Po wystąpieniu błędu wykonanie programu nie ląduje u Ciebie w HardFault_Handler? To standardowa funkcja z HALa. Gdyby lądowało to wtedy w oknie podglądu debuggera widać byłoby "skoki". Nie dam głowy, że zawsze tak musi być przy błędzie, ale parę razy korzystałem z tej "naturalnej" pułapki. W niektórych miejscach zaczynasz kopiowanie...
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...
Mam dziwny problem ze wskaźnikiem na funkcję. W kodzie jak poniżej pole initDriver nie jest inicjowane adresem funkcji (0x0800ecd0), tylko jakby popsutym (0x8800ecd1). Wygląda jakby coś niepotrzebnie ustawiało dwa bity w adresie, najmłodszy i najstarszy. Jakie może być wytłumaczenie? [syntax=c] drv = (struct at_ble_drv_t*) ble_memalloc(sizeof(struct...
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...
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...
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....
https://obrazki.elektroda.pl/6710486900_... Każdy, kto zaczyna swoją przygodę z Arduino, zwykle na samym początku staje przed dylematem w jaki sposób prosto i przejrzyście zarządzać zadaniami, które uruchamiane powinny być w określonych i najczęściej różnych interwałach czasowych. Jest to problem tzw. harmonogramowania zadań. W niniejszym...
wskaźniki struktury wskaźnik struktury struktury krzemowe
przeprowadzić kalibracja bateria pralka blokada polar technics stałe napięcie wyjściu
Ford Mondeo MK3 kombi – zamek klapy bagażnika działa nieregularnie, przewody, mikrostyk, siłownik Opel Vivaro U059E (i059e) – błąd komunikacji z czujnikiem NOx, AdBlue, objawy i diagnostyka