Nie zauwazylem zadnej struktury dla SysTicka poza tymi definicjami. Zajrzyj do core_cm3.h , tam jest gotowa funkcja z CMSIS SysTick_Config(uint32_t ticks) i tam też znajduje się odpowiednia struktura w tym headerze. SysTick jest dostarczany z rdzeniem przez ARM. Dlatego konfigurację NVIC, ITM czy SysTick nie szukasz na stronach producenta mikrokontrolera...
Nie znam tej biblioteki, pół minuty temu pobrałem jej źródła, ale z tego co patrzę, to struktura FILINFO zadeklarowana jakoś tak: [syntax=C]// FatFS R0.08b, ff.h typedef struct { DWORDfsize; /* File size */ WORDfdate; /* Last modified date */ WORDftime; /* Last modified time */ BYTEfattrib; /* Attribute */ TCHARfname[13]; /* Short file name (8.3 format)...
Moze trochę nie w temacje, ale kolega Kaczor90 prosił o proste rozwiązanie dla debouncingu, a tu co niektórzy chyba popsują się swoimi umiejętnościami programistycznymi, przekombinowywując jak się tylko da. Prosty przykład obsługi przycisków z uwzględnieniem z możliwością określenia mininalnego czasu wciśnięcia przycisku: [syntax=c] #define BUTTON_DEBOUNCE_TIME...
Każdy z nas widział lub korzystał kiedyś z Arduino. Wszyscy hobbyści bardzo je lubią i nie ma co się dziwić - moduły te bardzo łatwo jest opanować i nawet ktoś, kto nigdy nie miał do czynienia z systemami wbudowanymi, może w chwilę nauczyć się je programować i zbudować w oparciu o Arduino coś na prawdę ciekawego. Ekosystem Arduino pozwala w prosty i...
Struktura zawiera pola dla czasu i daty więc zmiana dnia z pewnością sama się nie zrobi. Jak dla mnie najmniej upierdliwą metodą jest trzymanie alarmu w programie w formie timestampa a przy programowaniu alarmu jego przeliczanie do HALowskiej struktury przy użyciu time.h
Przydałoby się jeszcze 2 rzeczy: 1. zmniejszyć FLASH o odpowiednią wartość, tak aby na siebie nie najeżdżały - możesz od LENGTH odjąć ile tam potrzeba ... LENGTH = 128k - XXX 2. Dodać profilaktycznie } > VAR AT > VAR Tym sposobem skrypt linkera będzie w 100% poprawny. Jeśli nadal będą jakieś błędy, to już nie po stronie linkera. Jeśli dalej coś nie...
Dziękuje Panowie za odpowiedź, o to mi właśnie chodziło, korzystam z procesora STM32L4 i tak jak wspomniał kolega (at)korteksik ma on możliwość inwersji sygnału ustawianą z poziomu cube mx, nie zwróciłem na to uwagi przy konfiguracji: https://obrazki.elektroda.pl/6055110800_... Mam jeszcze pytanie do kolegi (at)zdziwiony i (at)korteksik...
Ja tego używam, bo to mój kod. Struktura z HAL jest przygotowana dla CAN extended z maską, wówczas masz ID low/high oraz to samo dla maski. W innych trybach wykorzystywane są te same pola, mogliby zrobić jakąś unię dla czytelności, ale nie zrobili. Dla standardowego CAN z 11 bitami adresu, przy filtrowaniu z listą, w jednym banku możesz ustawić cztery...
https://obrazki.elektroda.pl/2451334200_... Rozpocznijmy odpowiedź na to pytanie od spojrzenia wstecz na epokę programowania "bare-metal". Czym jest tego rodzaju programowanie? W informatyce "gołe urządzenie" odnosi się do procesora wykonującego instrukcje bezpośrednio na fizycznym sprzęcie logicznym bez interweniującego systemu operacyjnego....
Cześć, dotychczas podczas programowania wykorzystywałem jakieś IDE i automatycznie generowane projekty. Postanowiłem iść krok dalej i napisać własnego Makefile'a. Na razie wykorzystuję jeszcze skrypt linkera i plik startowy z IDE. Struktura projektu wygląda następująco: ├── Ac6LinkerScript.ld ├── Ac6Startup_stm32.s...
zamiast "__packed" trzeba zastosować coś na styl "__attribute__ ((packed))", ewentualnie jakieś #pragma cośtam 4\/3!!
Ja zmiennych globalnych staram się nie używać. Mój pierwszy projekt to mnóstwo externów. Jak zacząłem się w tym gubić to stwierdziłem, że to chyba nie tędy droga. Teraz każda para plików c i h odpowiada za konkretną rzecz. Ewentualnie includuje inne i odpowiada za większą konkretną rzecz. Każdy mój plik ma dwie zmienne typu static. Pierwsza to numer...
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.
Mam problem z kolejkowaniem przerwań i wywłaszczaniem w STM32 Cortex M3. Otóż mam 2 timery, TIM6 oraz TIM12 o tym samym priorytecie (jeśli się wykonują, nie mogą się wywłaszczać, dlatego ten sam priorytet). Czasem używam globalnego wyłączenia przerwań i w tym czasie zgłaszają się oba, z tym że pierwsze ( po włączeniu IRQ) wywołuje o niższym numerze,...
(at)toch88 Nie ma powodów, aby nie stosować takiego zapisu. Np. Atmel w swoich nagłówkach dla ARM daje możeliwość korzystania z pól bitowych, lub składania wartości z masek i przesunięć. Przy czym jeśli korzystasz z pól to wygodnie jest użyć compund literals: http://mikrokontrolery.blogspot.com/2011...
Witam, sprawa się wyjaśniła. Problemem była obsługa EndPoint0, ponieważ było dużo dyrektyw #ifdef i to one powodowały problem w Atollicu (trochę dziwne - ale nie chce mi się tego testować, co było powodem). Po usunięciu ręcznym nie potrzebnych elementów, ruszyło i działa bez zastrzeżeń. Na Eclipsie dyrektywy były poprawnie rozpoznawane, natomiast problem...
Doskonale wiem co to struktura danych. Natomiast szukam metody aby móc w sposób klarowny napisać kod do np. załączonego powyżej przykładowego kawałka dokumentacji... Tak jak pisałem nie mogę zmienić znacząco diagramu programu.
gaskoin, ale piszemy o różnych rzeczach. Czym innym jest struktura procesora a czym innym struktura wiedzy czy nabywania wiedzy o nim. Instrukcja obsługi nie musi mieć struktury procesora. Przytoczony fragment: "The timer clock frequencies are automatically fixed by hardware. There are two cases: 1. if the APB prescaler is 1, the timer clock frequencies...
Odgrzebię. Obecna struktura programu wygląda mniej więcej tak: "Symbol 'Const' could not be resolved." Trochę mnie to drażni. Nie do końca jestem pewien czy to rozwiązanie jest do końca poprawne. Prosiłbym bardziej doświadczonych w C++ kolegów o spojrzenie i sugestie, co można by poprawić/napisać lepiej.
Witam, Realizuję projekt z wykorzystaniem STM32F103VET6 (programowany w Keil uVision 5.24.2.0). Do magistrali SPI2 dołączyłem dwa urządzenia (LCD i RFID), które mają różne ustawienia CPOL/CPHA, więc przed ich obsługą trzeba te ustawienia zmieniać. Problem w tym, że w takim przypadku urządzenia nie działają. Jeśli usunę z programu obsługę jednego urządzenia...
Nie chciałem zakładać nowego tematu bo wiem z doświadczenia, że jest to męczące dla zaawansowanych użytkowników i sprawia problemy w późniejszym szukaniu. Otóż. Posiadana przeze mnie płytka to nie Discovery, ale Nucleo F429ZI. niestety jestem początkujący ;( a za zadanie dostałem opracowanie połączenia LAN za pomocą socketów w układzie kompuer PC <->...
(at)ghost666 Z mojego podwórka to wygląda trochę inaczej. Nikt nie pyta o rodzinę mikrokontrolerów czy procesorów, ponieważ praktycznie wszystko robi się albo w LabView, albo w FPGA. Jeżeli masz certyfikat TI dla LabView, to masz pracę. Jeżeli potrafisz projektować strukturę układu do potrzeb i pisać w VHDL czy innym Verilog'u, to masz pracę. Na początku...
po tym wszystkim (to działa mi na komputrze) wygląda to tak że ta struktura posada jeszcze jedna strukutre ;] związaną z funkcjami, które są rejestrowane do każdego wykrycia ciągu znaków np register_func(tprs, motor, "Silnik"); rejestruje funkcje motor(TPARSER *tprs) o nazwie Silnik czyli jeżeli już wszystko jest ładnie pocięte, to przy porównywaniu...
Witam, Na chwile obecną posiadam sterownik klimatu na mikrokontrolerze Atmega. Z racji rozbudowy systemu chcę przejść na sterowniki PLC. Z racji tego, ze na rynku coraz więcej jest sterowników PLC i jest ciężko wybrać odpowiedni, poproszę o pomoc w doborze odpowiedniego sprzętu. Do projektu potrzebuje następujące wymagań: - najlepiej aby PLC można...
Zanabyłem jakiś czas temu płytkę jak w temacie. Ostatnio postanowiłem wreszcie sie tym pobawić, ale skończyło się to totalnym failem. Ściągnąłem najnowszą wersję IAR Embedded Workbench for ARM (6.21). Juz pomijając fakt, że nie da się skompilować exampli dostarczonych przez ST, bo są dla jakiejś starożytnej wersji IAR'a, to nie da się nawet połączyć...
Posiadam płytkę STM32F4 Discovery Disco z wyświetlaczem LCD-TFT. Na płytce zaprojektowałem już wcześniej inny projekt, do którego teraz chciałem dołączyć obsługę wyświetlacza. Znalazłem bardzo ciekawy tutorial, w którym mowa o wykorzystaniu bibloteki STemWIN http://en.radzio.dxp.pl/stm32f429idiscov... Tak więc poczyniłem...
Witam wszystkich serdecznie, Chciałbym prosić o pomoc w analizie błędów inicjalizacji i komunikacji z zegarem RTC, który wszyscy znają. Chciałbym przedstawić kod, który nie działa - opisać objawy i spytać o parę rzeczy, które mnie nurtują. A więc do rzeczy. Najpierw Kod: [syntax=c] #define PCF8583_ADDR ((uint16_t)(0x50)) #define I2C_SCL GPIO_Pin_6 #define...
Choć dopiero zaczynam przygodę z STM32 to po mojemu nadpisujesz strukturę i dlatego zawsze działa Ci ostatnie zdefiniowane przerwanie.
Nie ma co narzekać na Keila - anonimowe struktury i unie to rozszerzenie języka C. Co prawda większość współczesnych mopilatorów to obsługuje, ale widać nie wszystkie :)
[syntax=c] int i; int suma_af = 0; const unsigned char * p = (const unsigned char *)&data for (i = 0; i < sizeof(my_type)l i++) { suma_af += p[i]; } [/syntax] Zakładam, że struktura jest upakowna ;)
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.
Czy do funkcji HAL_UART_Receive_IT na pewno powinien być przekazywany adres wskaźnika do struktury UART_HandleTypeDef?
Są makra tylko struktura nazywa się SysTick a nie STK
Ale mój post nie miał do niczego przekonywać. Jak ktoś chce używać C++ to niech używa. Jednak jak już się zdecyduje to może sprawdzić różnice w ten sposób że samą funkcjonalność napisze w C i w C++ (z użytymi template, przeciążonymi operatorami, intefejsami itp) i niech zobaczy jak wygląda to w ASM. Ja nie widzę jakiś super ficzerów które posiada C++...
W sumie możliwe, że nie wszędzie jest taka sama konwencja nazywania folderów. W każdym razie chodzi mi o zestaw plików umożliwiający współpracę z konkretnym prockiem i ewentualnie systemem operacyjnym. W używanej przez Ciebię książce na pewno były tam pliki cc.h i cortex-m3.h czy jakoś tak. Polecam też ściągnąć appnoty stma albo jakieś przykładowe projekty...
Wydaje się że trzeba ustawić bity MSK0, MSK2 i MSK3, bit MSK1 wyzerować. Jak to się przekłada na HALowe maski i struktury? To już musisz sobie znaleźć sam w dokumentacji (czyli zapewne w kodzie źródłowym).
(at)wojlej 1. sizeof char jest zawsze równe 1 więc jest tu zbędne 2. Dwa razy kopjuesz dane. Najpierw do tablicy a później do struktury. Szybciej będzie bezpośrednio odczytywać do struktury tak: [syntax=c] char *tab = (char*)&Struktura_odczytana; for(i = 0; i < size; i++) { tab[i] = Read_EEPROM_BYTE(1+i); //Adres względny - sektor 7 } [/syntax]...
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:
włączenie MOSFET-a oznacza, że wy. uC daje potencjał masy Nie całkiem: przy braku zasilania pin VCC jest prawie na potencjale masy, dioda pasożytnicza przewodzi od pinu I/O do VCC (ona jest spolaryzowana zaporowo, gdy pin I/O ma ujemne napięcie względem VCC), więc na pinie I/O jest około 1V. Zrobienie tak, by nie było tych diod pasożytniczych oznacza...
Zacznij od określenia protokołu transmisji - w jaki sposób będziesz przesyłał te dane (znakowo/binarnie), jaka jest ich długość, po czym program może je rozpoznać, czy i jak sprawdzać poprawność transmisji. Zastanów się nad strukturą oprogramowania - same przerwania, RTOS, czy (w ostateczności) jakaś pętla zdarzeń? Potem dopiero planuj programową obsługę...
Przykładów można szukać w SPL - można się w ten sposób dowiedzieć, w których rejestrach i co trzeba wpisać. Powoli szykuję tutorial do STM32 bez biblioteki, ale to jeszcze trochę potrwa. Kłopoty z bibliotekami są wielorakie. Ostatni kłopot - to to, do czego nas zachęcają przykłady z użyciem bibliotek, czyli deklarowania struktur jako zmiennych i pracowitego...
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...
gaskoin - pytam dlatego, bo gdzieś kiedyś czytałem że w procesorach 32 bitowych dla każdego char itp. kompilator i tak rezerwuje całą komórkę 32 bit, nie używając po prostu reszty. Z tego wynika że adresowane są nie słowa 32 bit, ale pojedyńcze bajty, jeżeli dobrze rozumiem? Adresować możesz poszczególne bajty, a korzystając z bitbandingu - w ograniczonym...
1) Czy dla zmiennych o rozmiarze poniżej 32bity zawsze przydzielane jest 4 bajtowy rozmiar pamięci? To nie ma nic wspólnego z 32 bitami :) Masz wyrównywane adresy do 4 bajtów, dlatego kompilator dodał Ci w środku tablicę 3 bajtową. Jeżeli chcesz żeby taka struktura miała 9 bajtów to musisz jej nadać atrybut packed. 2) Czy stosowanie zmiennej 8 bitowej...
Udało mi się napisać kod, niestety z jakiś powodów nie działa. Nie wysyła ramek. Prawdopodobnie jest coś z inicjalizacją źle. Mógłby ktoś sprawdzić dlaczego? [syntax=c]#include "stm32f10x.h" #include "misc.h" #include "stm32f10x_can.h" #include "stm32f10x_rcc.h" #include "stm32f10x_gpio.h" int i; CanTxMsg TxMessage; CanRxMsg rx_message; uint8_t TransmitMailbox...
Nie bardzo wiedziałbym jak tego użyć. Chyba że jakiś przykład miałby ktos, kto to już robił. A może tak: [syntax=c] #include <time.h> ... struct tm * loctim ; // struktura zawiera pola typu tm_year czy tm_min time_t tt ; // odczytywanie licznika tt = RTC->CNTH; tt = tt << 16; tt = tt | RTC->CNTL; loctim = localtime(&tt) ; ......
Przecież podłączasz do procka wejścia układów cyfrowych - tam nie płyną duże prądy, bo zasadniczo podłączasz się do baz (czy bramek) tranzystorów w strukturze IC.
No w sumie nic dziwnego/pamięciożernego tam nie znalazłem, includuje sobie parę funkcji z arm_math i tabele do FFT .
Nie odpowiem, dlaczego to działa w C, a nie działa w C++, ale pamiętaj, że to wyrażenie musi obliczyć linker, nie kompilator. To wyrażenie oblicza w każdym wypadku kompilator - nawet jeśli generuje zły kod. Wygląda na to, że jeśli w wyrażeniu inicjującym występuje operator "->" kompilator ignoruje const. Sprawdzone do wersji 4.5.0 20090816 (experimental)....
Proponuje strukture debugujaca, do ktorej wpisujesz sobie zmienne, rejestry itd. A na koniec programu, czy tez w odpowiednim momencie wysylasz zawartosc struktury na UART.
stm32 struktura wskaźnik struktura projekt tablica struktura
pilot thomson wieża mikrofon podłączenie jacka rozkodowa radio grundig
skasować citroen skasować citroen
Kocioł Beretta Kompakt II 24 e.s.i. Turbo nie uruchamia się po letniej przerwie Przyciąganie magnesów: Bieguny różnoimienne