teraz postanowiłem uruchomić timer 2 i w żadnych plikach nie widzę funkcji do tego timera. To poszukaj dobrze - musi być w pliku w którym jest tablica wektorów, być może jest to ten sam plik w którym jest startup.
Jeśli tablica jest zainicjowana, to jej wartość początkowa musi być we Flash. Jeśli nie ma atrybutu const, to jest kopiowana z Flash do RAM przy starcie programu. Jeśli ma const - zostaje we Flash. Proste?
1. Tak. 2. Nie bezpośrednio, można kombinować np. tak: struct S { typ costam; typ tab[1000][16]; };
Gdzie tu się zmieniają parametry? Częstotliwość jest stała, amplituda jest stała. Spróbuj zrozumieć jak działa ta funkcja generująca po 512 próbek dla 16 (NoteMax = 16) różnych kanałów dźwiękowych na podstawie sampli w czasie rzeczywistym na STM32F746. Próbkowanie z częstotliwością 48 kHz. [syntax=c]void dds_generator(uint16_t len) { for(uint8_t NoteIndex=0;...
Teraz pozostało mi przenieść projekt z stm32 na lm3s, ponieważ zajmuję się tym w wolnym czasie od pracy, to efektem podzielę się pewnie za kilka dni. To naprawdę nie jest dużo roboty, generalnie (pomijając detale typu zmiana nazw plików czy nazwy projektu) trzeba zrobić mniej więcej "aż" tyle: 1. poprawić tablicę wektorów (to i tak byś miał kiedyś...
Cześć, Nie dawno zacząłem przygodę z STM32. I mam duży problem nad którym siedzę już parę dni. Chciałem stworzyć prostą komunikację z komputerem gdzie przez terminal odpowiednimi komendami będzie można gasić i zapalać diody i w drugą stronę przesyłać które diody są zapalone. nie wiem gdzie jest tu błąd więc Ustawienie GIPO void GPIO_Conf(void) { GPIO_InitTypeDef...
Witam , Wracam do tematu . Zegar skończony i przetestowany . Podziękowania dla autora za pomoc . Kilka krótkich filmów z pracy zegara wykonane telefonem . https://filmy.elektroda.pl/11_1551555088... https://filmy.elektroda.pl/90_1551555174... https://filmy.elektroda.pl/15_1551555225... https://filmy.elektroda.pl/89_1551555287... Jedna z dwóch gier...
Cześć, mam problem z funkcją sscanf(), stworzyłem kod, który przypisuje mi do tablicy konkretną linię $GPRMC i za pomocą funkcji sscanf() chciałbym wyciągnąć z tej tablicy konkretne zmienne odpowiadające za m.in. długość i szerokość geograficzną, jednak nic mi z niej nie może znaleźć w celu przypisania do zmiennych ( a tablica w debuggerze działa prawidłowo),...
Jedną ze strategii szybkiego wdrażania nowych produktów wbudowanych na rynek jest wykorzystanie zunifikowanych platform. Mając plan działania identyfikujący rozwiązania, które zostaną wpuszczone do obiegu, np. w ciągu najbliższych kilku lat, można z powodzeniem stworzyć ww. ujęcie. Ponieważ różni klienci chcą nieco innych funkcji, konfiguracji i dostosowań,...
Sin czy Cos zazwyczaj się robi na LookUpTable, czyli tablica w pamięci - STM32 zazwyczaj mają jej dość sporo :)
Witam Chciałem umieścić tablice pod stałym adresem w pamieci flash, ale nie na koncu flasha. Do tej pory robiłem to tak: wycinek z pliku linkiera dla GCC [syntax=c] MEMORY { rom (rx): org = 0x08000000, len = 192k var (rx) : org = 0x08030000, len = 64k ram (rwx): org = 0x20000000, len = 64k } .... SECTIONS { .dane : { KEEP(*(.dane)) *(.dane*) } >var...
Ale wav to jest tablica bajtów... Chodzi Ci o zapis w formie kodu źródłowego?
Poza tym Zrobienie takiego man-in-the-middle, może być trudniejsze niż się na początku wydaje, a atiny nie jest też demonem prędkości, a nie ma sprzętowego licznika do obsługi enkoderów. Co ty opowiadasz... Mamy enkoder, który generuje max kilka impulsów na sekundę i to ma być problem? No, niby tak, ale robienie man-in-the-middle z attiny i enkodera...
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...
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
Witam, jestem świeży na forum. Od miesiąca zajmuję się rodziną STM32. W zasadzie bez większych problemów. Na razie tylko zdalna komunikacja z użytkownikiem (serwer HTTP przez sieć i/lub USB) i proste zarządzanie wbudowanym sprzętem. Niestety projektowane urządzenie ma działać w zasadzie w sieci i wgrywanie aktualizacji nie może być przez "standardowe"...
Aby wyjaśnić Ci Twój problem, podaję Ci metodę "czytania" typów zmiennych, który wyjaśnia wszystko. Jest kilka zasad: 1. Czytanie zaczynamy od nazwy zmiennej 2. Czytamy w prawo dopóki nie dojdziemy do "końca", po osiągnięciu "końca" czytamy w lewo od nazwy zmiennej 3. Obowiązują nawiasy, które są "lokalnymi końcami" Tak więc: const char * const l_wartosc[]...
Ustaw Mode na Circular. Potem w main wykonaj następujący kod: HAL_ADC_Stop_DMA(&hadc); HAL_ADC_Start_DMA(&hadc, (uint32_t*)&ADC_Val[0],7); ADC_Val to tablica uint_16. 7 to liczba odczytów z ADC do poszczególnych komórek w tablicy. Powyższy kod pompuje tą tablicę odczytami z siedmiu zaznaczonych w kreatorze przetworników ADC. W moim przypadku było to...
Trzeba zmienić PROGRAM. Domyślnie w STM32 tablica wektorów znajduje się w flash, a to skąd uruchamiasz program czy jak jest skompilowany nie ma żadnego znaczenia. Manual: Boot from the embedded SRAM: SRAM is accessible only at address 0x2000 0000. Note: When booting from SRAM, in the application initialization code, you have to relocate the vector table...
Witam serdecznie, Poszukują gruntownych, wyczerpujących informacji na temat sposobu implementacji tablic funkcji do pamięci FLASH. Chodzi Ci o to, żeby trafiły do pamięci FLASH, a nie RAM? Jeśli tak to wystarczy zapis: [syntax=c] const int tablica={ 8, 7, 6, 5, 4, 3, 2, 1, 0 }; // tablica idzie do FLASH int funkcja(int argument) { return(tablica[argument]);...
Witam, Mam pewne pytanie dotyczące zmiennej globalnej wyspecyfikowanej jako const. Taka zmienna nie może zostać zoptymalizowana i jest trzymana w sekcji nazywanej .rodata, która to znajduje się w pamięci FLASH. (W mikrokontrolerach stm32) W takim razie jeżeli zadeklaruje np. tabelicę: [syntax=c]const uint8_t tablica[1000]; [/syntax] to oznacza, że taka...
Nie używam Keila ale coś takiego powinno wystarczyć [syntax=c]const unsigned char tablica[] = {dane}; const unsigned char *pointer pointer = tablica;[/syntax]
Ja nie wiem co tu kogo dziwi. Tablicę do której formatujesz dane masz na stosie w przerwaniu. Tablicę tą przekazujesz do nieblokującej funkcji, która rozpoczyna transfer przez UART. Następnie wychodzisz z przerwania, tablica przestaje istnieć, a UART sobie dalej z niej odczytuje dane... Dodano po 30 Nie wiemy nic o typie uC. Jeśli nie jest to Cortex-M4,...
Po prostu przechodzę z avr a tam przy pustej main bylo nieco ponad 100 bajtów. Bez sensu to Twoje porównanie. To przecież dwa różne światy. Sama tablica wektorów przerwań w F103 to 200bajtów (ok. 50 wektorów * 32 bitowy adres). Plus inicjalizacja rejestrów i samego C, plus ustawienie zegara. Wychodzi 1k, jest bardzo dobrze. Nie ma się co tym przejmować,...
Musisz sobie utworzyć coś w rodzaju wskaźnika do tablicy. Może to być np int, który będzie wskazywał na kolejne indeksy w tablicy. Wpisujesz zmienną do tablica[indeks] i zwiększasz indeks.
Masakra... Tysiąc-elementowa tablica struktur alokowana na stosie i "czemu nie działa?"... 4\/3!!
Optimized CRC-8-CCITT calculation. Zapomnieli tylko dopisać, że "optimized for small size", bo na pewno nie zoptymalizowany pod względem wydajności czy wygody używania. Do generowania kodu liczącego różne CRC polecam po prostu https://pycrc.org/ . Jak ktoś chce kod który jest szybki, to wybiera algorytm "table driven" - tablica o wielkości `sizeof(crc_t)...
Po drugie jakie to ma znaczenie jak to jest zrobione w tym przypadku? Chyba poprzednik miał na myśli ilosc kodu. Jak by nie patrzył, tablica z const to dla mnie najlepsze rozwiazanie
Co będzie błędne, bo pierwszą rzeczą jaką robi Twój program jest jednak Reset_Handler, a nie to co przypadkiem trafiło na początek sekcji .text. Co nic nie zmieni bo i tak tablica wektorów jest zapisana "na sztywno" w większości projektów. Tak naprawdę jest to wartość ignorowana jeżeli tablica wektorów jest zrobiona tak jak w większości projektów -...
Sprawdzałem u mnie na symulatorze i wszystko ok. Dodałeś stdlib? Jakieś warningi?
Po prostu za mało pamięci dla tablic rezerwujesz. Pamiętaj że jak chcesz przechować 4 znaki to tablica powinna mieć 5 elementów (ostatni znak: NULL - \0 )
Ok dzieki. Czyli jesli kasujemy lub zapisujemy flasha wykonujac procedurę z pamięci flash, to nawet jesli handlery przewan sa umieszczone w RAM tak samo jak i tablica przerwan, to zadne przerwanie w RAM sie juz nie wykona do czasu skonczenia operacji na flash.
A tak na serio, to mnie najbardziej interesowałaby opcja opisana na ostatniej stronie jako "najbardziej interesująca", a więc wykorzystanie startupa i skryptów linkera (i tylko tych plików) dostarczanych razem z biblioteką (w połączeniu z "pierdołami" typu sbrk, malloc itp itp) No ale tu nie ma co opisywać, bo to będzie generalnie identycznie jak w...
Racja, tablica przed pierwszą transmisją zawiera zera. DMA zakończy po 99 znakach, pytanie, który to znak będzie ten 99-ty? GPS wysyła dane cyklicznie, a rekordy mają różne długości.
po skoku do Aplikacji z Bootloadera pojawia się dziwne zachowanie: zaczyna się wykonywać kod main() który jest przerwany i widzę w debugerze wykonywanie konstruktorów obiektów globalnych. Możesz pokazać jak to wygląda w debuggerze? Te konstruktory wykonują się jakby z main() czy jakby z przerwania? W Bootloaderze przed skokiem, robię __disable_irq(),...
1. blink led jest funkcją która przyjmuje parametr typu wskaznik void a zwraca wskaznik do typu void. 2. task jest tablica wskaznikow do funkcji (dokladnie tych o ktorych mowa w pkt 1).
Musiałbyś sobie przejrzeć kod malloc() z którego korzystasz - zapewne newlib, to dowiesz się czemu akurat na dzień dobry chce aż tyle. Przypuszczalnie rozchodzi się o to, że malloc() z newliba ma dwojaki mechanizm alokacji - małe obszary alokuje ze specjalnej tablicy małych obszarów, duże - normalnie, poprzez listę i sbrk(). Po pierwszym wywołaniu zapewne...
Wszystko fajnie, pod warunkiem, że chce się używać STM32. Dodanie podstawowego wsparcia dla innych układów jest porównywalne z postawieniem projektu na FreeRTOSie - ot po prostu musisz mieć tablicę wektorów i skonfigurowane rozmiary/adresy pamięci i dokładny typ układu. We FreeRTOSie przecież wsparcie dla STM32 czy dla LPC tak samo nie istnieje - tablicę...
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...
Witam! Tworzę projekt, który polegać ma na bezprzewodowym połączeniu STM32F303 Discovery i HC-05 z ELM327 (wersja bluetooth). Jestem bardzo początkujący, jeśli chodzi o programowanie a zależy mi na tym projekcie, dlatego postanowiłem zwrócić się o pomoc. Korzystam z STM32CubeMX oraz Eclipse z wbudowanym rozszerzeniem „System Workbench for STM32”....
Jeszcze nie pracowałem na procesorach STM32 (co zmieni się jutro), ale z tego co już wyczytałem, to: - w pamięci PMA (widocznej przez okno zaczynające się od 0x40006000) musi znajdować się tablica BTABLE oraz bufory na dane - (ad3) wartość wpisana do BTABLE to offset wewnątrz pamięci PMA, pod którym zaczyna się tablica deskryptorów buforów. EPnTxAddr...
He he racja nie zauważyłem tego :) Swoją drogą trochę szkoda że np strukturze nie da rady w jakiś sposób zdefiniować tablicy. Oczywiście tablicę da się zdefiniować w strukturze. To o co ci chodzi to zapewne tablica bitów? To można zrobić przez strukturę w strukturze. Zobacz jak zrobił to Atmel dla swojej rodziny ARMów, masz tam wszelkie możliwe wariacje...
Przykro mi, ale nie rozumiem co napisałeś. Co to są wartości naturalne? Wielokrotności 1 Hz? Jeżeli odwzorowanie sygnału jest bliskie 0, to znaczy, że ten sygnał został pominięty. Chyba nie o to chodzi :/ Widzę tutaj dziwne liczby jak na programowanie: 400 i 2PI. Coś tu chyba wymaga poprawy w algorytmie. Tablica o wielkości będącej potęgą liczby 2 jest...
Witam! Od jakiegoś czasu pracuję na stm32 - ucząc się o protokołach I2C współgrając z modułami magnetometru i ciśnieniomierza. Chciałbym dołączyć do tego moduł GPS jednak obsłużyć go przy pomocy UART'a. Sensor to NEO-7, wraz z podłączeniem zasilania GPS wysyła dane *żyje swoim życie*. Próbuję zrealizować to w następujący sposób i niestety nie wiem gdzie...
Istnieje szansa że tak - program po prostu postarał się przypisać adresom odpowiadające im rozkazy no i wyszedł taki oto mix [; Widać tutaj, że tablica wektorów raczej jest dobra, teraz podejrzyj Reset_Handler, a konkretnie adresy które ładuje on do "czyszczenia" .bss i inicjalizacji .data - wg pliku map Reset_Handler był pod adresem 0x08015128 4\/3!!
Niestety nadal nie pokrywają mi się wyniki. Oczywiście brałem wartość począrkową jako 0xFFFF FFFF. A jeżeli chodzi jeszcze o ustawianie DMA + CRC. W takiej knfiguracji ustawiam transmisję memory to memory, gdzie adresem docelowym jest CRC->DR. Jako Peripheral (DMA2_Stream4->PAR) jest tutaj adres w pamięci gdzie jest zapisana tablica z danymi. Inkrementowany...
Jak na razie algorytm się wyrabia w założonym czasie o ile symulacja mówi prawdę. Fakt trochę się naciąłem z tym wyborem sprzętu. Cortexa czy innego stm32 albo dsp niestety nie znam i właśnie dlatego wybór padł na atmege. Kod pokazałem praktycznie cały bo na tym w sumie polega program. Serdecznie dziękuję wszytkim za pomoc!
Ta tablica nie jest potrzebna - ona jest tylko do celów demonstracji (jak zwykle w przypadku ST bardzo głupiej). Nieprawda. Tablica ta jest kluczowym elementem przy przepisywaniu zmiennych z jednej strony FLASH do drugiej, gdy pierwsza z nich jest już pełna. Procedura EE_PageTransfer() musi wiedzieć apriori ile najbardziej aktualnych wartości zmiennych...
Praktycznie wszystkie te pliki są konieczne, a właśnie to co jest w /inc już nie, bo to jest potrzebne Twojej aplikacji... Pliki konieczne: Makefile startup skrypt linkera tablica wektorów + chyba wymagany jest jeden z plików hdr_..., bo jest zainclude'owany w startupie. Jeśli bawi Cię tworzenie od zera czegoś co już jest gotowe, to proszę bardzo -...
Tak naprawdę jak dla mnie jedyna trudność jaką miałem to ogarnięcie środowiska i plików początkowych (startup ,linker, makefile, tablica vektrów) i nadal lekkie problemy mi one czasami nastręczają. No i wiadomo zrozumienie organizacji mikrokontrolera. Jak to się już zrozumie to obsługa konkretnego peryferia to żadem problem większość peryferii (timery...
stm32 tablica wskaźników tablica adresem stm32 stm32 tablica wskaźnik
łożyska chińskie pralka makita dc18sd zwalnia komputer
Wzmacniacz Unitra WS432 - buczenie i przygasanie Toshiba Satellite L750 - Błędny czas ładowania baterii