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ć ?
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...
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...
(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.
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,...
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
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...
(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.
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...
na podstawie kursu języka C Wskaźnik na unie i strukturę Podobnie, jak na każdą inna zmienna, wskaźnik może wskazywać także na unie lub strukturę. Oto przykład: typedef struct { int p1, p2; } Struktura; int main () { Struktura s = { 0, 0 }; Struktura *wsk = &s; wsk->p1 = 2; wsk->p2 = 3; return 0; } Zapis wsk->p1...
Bardziej mi chodziło jak ogarnąć te dane z tego adresu z payload. A o wskaźnikach i typach danych i strukturach nie omieszkam na pewno :)
Kompilowało się na AVR, a tutaj nie, to fakt. Nie ma takiej możliwości, żeby kod niepoprawny składniowo się kompilował gdziekolwiek. Porada o podstawach C jest wbrew pozorom całkiem sensowna, bo ja niezbyt wiem w czym tu jest problem - toć to nie jest żadna wiedza tajemna... Zadeklaruj sobie strukturę ze znakiem (dane, rozmiar, szerokość, wysokość),...
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...
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...
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;...
Witam Przepraszam, że tak późno (brak czasu), ale może jeszcze się przyda... Proponuję uruchomić układ w debugu. Potem, gdy USB jest już skonfigurowane, zatrzymać wykonanie programu (przez breakpoint) na funkcji Storage_init z pliku usb_storage_msd.c. U mnie jest inicjacja karty jak w poniższym kodzie: [syntax=c]int8_t STORAGE_Init (uint8_t lun) { SD_Error...
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...
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...
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...
Tak podejrzewałem, czyli zostawiam w przerwaniu, i już odebrane dane wrzucę do kolejki. Póki co zmagam się z innym problemem, bo pomimo tego, że teoretycznie wszystko działa i urządzenie przechodzi enumerację, mogę się z nim połączyć i coś do niego wysłać i poprawnie odczytać, to próba wysłania czegoś do komputera kończy się stadem nulli w terminalu...
Dla przykładu ja lubię taką formę: https://github.com/marcinszajner/Half-br... Idealnie tutaj to praktycznie kopia z exampla od ST z ich z zestawu STM32Cube_FW_G4, ale dobrze pokazuje że w embedded zamiast klasy, struktura nadaje się wyśmienicie. What? Temat o C++17 a Ty wrzucasz najzwyczajniejszy kod w C z...
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ą...
Witam BusTurnAround mam na 1 a AddrSetup i AddrHold, zmieniałem od 0 do 5. Problem jest tylko wtedy gdy robię tak np: Zapisuje sobie jakieś dane w 1000 strukturach JakasTablica, Wiem jakie są w niej liczby a potem je tylko czytam i przesuwam wskaźnik o długość struktury [syntax=c]typedef struct { unsigned int Dane1; unsigned short Dane2; unsigned char...
Wpisałem asmem z przyzwyczajenia. Co do przepełnienia stosu to niemożliwe gdyż wszystko działa tylko ta funkcja umiera. Użycie wskaźnika to ze względu na to, iż szybciej się przerabia kod na wiele struktur(urządzeń) Zmieniłem już na bezwskaźnikowe z dostępem przez '.' To co mówiłem przed zbieżnością nazw zabezpieczam się strukturami (nigdy nie stosuję...
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...
Hm...zobaczmy..wchodzi 32 sztuki wartości real w tablicy jednowymiarowej. Wychodzi...no zobaczmy w dokumentacji: http://www.keil.com/pack/doc/CMSIS/DSP/h... w Description, pod grafami podana jest struktura tablicy output...wychodzi na to że dwuwymiarowa, więc [32][2], ale przecież... funkcja arm_rfft_fast_f32 jako output przyjmuje:...
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...
Integracja SPX3819 z STM32 dla ulepszonych rozwiązań USB do rozpoznawania linii papilarnych Pamięć flash USB jest jednym z tych narzędzi, których często używamy w naszym codziennym życiu i pracy. Pomaga nam przechowywać i kopiować ważne pliki i dane. Jest mały i łatwy do przenoszenia, ma dużą pojemność, jest niedrogi i działa niezawodnie. Rozmiar dysku...
Witam, Głowię się od jakiegoś czasu jak rozwiązać następujący problem. Piszę program na procesor STM32F4, który miałby po RS232 wysyłać dane zawarte w strukturze: [syntax=c]struct rs232_data { int a; int b; int c; }; struct rs232_data dane; dane.a = 12; dane.b = 34; dane.c = 76;[/syntax] Póki co to przykładowa struktura, która ma na celu wyłącznie przetestowanie...
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,...
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...
Tworzenie aplikacji użytkownika w C++ ma wiele zalet, więc nie jest zaskakujące, że język ten staje się coraz bardziej popularny wszędzie, w tym w systemach opartych na małych mikrokontrolerach. Projekt „mbed” jest w pełni skoncentrowany na tym języku. Wiele RTOSów zapewnia warstwę kompatybilności z C++, ale w przeciwieństwie do „dużych”...
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...
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....
Nieco podłamany tematem kol. (at)PiotrLenarczyk postanowilem jednak napisac jednak trzeci krótki prosty mikro poradnik dotyczący startupu. Wszystkie dywagacje będą dotyczyć C i najbardziej popularnego wśród hobbystów i nie tylko gcc. Standard C wymaga aby zgodny (nieco upraszczając) ze standardem toolchain ma: 1. Zapewnić obserwolną zgodność działania...
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źnik struktura wskaźnik struktura tablica stm32 tablica wskaźnik
linux puppy pralka blokada polar naprawa drukarki brother
phanick pegasus pomiar indukcyjności
Zmywarka Electrolux ESI - funkcje i usterki Jak zwiększyć przyczepność paska w turboszczotce odkurzacza?