Przeniosę to przerwanie i tablice do plików .c. Ale wtedy w pliku głównym .c mam includować plik przerwania .c? Myślałem, że tam inkluduje się tylko pliki .h Nie musisz include'ować pliku .c, a nawet nie powinieneś. W Makefile dopisz go tylko do plików źródłowych (SRC = $(TARGET).c przerwanie.c inny_plik.c itd.) a linker odwali resztę roboty. Zostało...
void LCD_WriteText(char * text) 1. Ta funkcja jako argument ma wskaźnik ty podajesz jej wartość. 2. działa ono poprawnie dla napisów czyli tablic z ostatnim elementem = 0 (słownie ZERO) Lepiej wykorzystaj funkcję LCD_WriteData();
M.in. nie tak jest to: eeprom_read_byte((uint8_t*)czas); Ta funkcja przyjmuje jako argument wskaźnik na int. Ty wymuszasz konwersję typów, ale w ten sposób, że otrzymujesz wstakźnik na int o wartości równej zmiennej czas. Podczas, gdy chcesz mieć wskaźnik na czas, a więc powinno być &czas. Podobnie masz przy zapisie.
VC6 to strasznie muzealny zabytek - co cię przy nim trzyma? WINAPI to też nie jest coś w czym wygodnie się cokolwiek piszę, zaprzyjaźnij się np. z Qt. Znalazlem, ze musze skorzystac z funkcji i utworzyc nowy watek, uzyc "czekajacych" funkcji. Tak, w twojej funkcji CADlg::OnOK tworzysz wątek i uruchamiasz wątek (który będzie pobierać twoje dane), a sama...
czy mógłby mi ktoś wytłumaczyć czym jest pierwszy argument - nie wiem jak działa takie połączenie wskaźnika i referencji ? Nie rozumiem dlaczego jest tam & a nie sam wskaźnik do obiektu typu Lista ? Dziwny zapis, ale zakładając że to działa, to wygląda na to że taki zapis jest jakby referencja do wskaźnika. Niby mógłby być tylko wskaźnik, ALE w przypadku...
1) spoko, szkoda że nie działa 2) no akurat to najważniejsza rzecz, gdy funkcja od metody różni się trochę. metoda jako pierwszy argument dostaje wskaźnik na obiekt this to niejawny argument, nie widać go. Nie da się stworzyć metody bez argumentów. Każda funkcja która jako pierwszy argument ma wskaźnik na obiekt może być nazywana metodą. dopisanie static...
https://obrazki.elektroda.pl/3221612800_... Witajcie moi drodzy. Zapraszam na relację z postępów prac nad otwartym firmware dla BK7231T. Temat ten napisany będzie w formie tutoriala, przedstawię tu krok po kroku jak opracowałem własny, wieloplatformowy (działający na Windowsie i BK7231T) mini-serwer HTTP, system konfiguracji pinów...
(at)osctest1 spokojnie, człowiek się dopiero uczy. Na dodatek częściowo nie masz racji. W działających przykładach Chana f_mount jest nagminnie wywoływane z pustym stringiem. WTF? Zaglądamy do źródeł :-> Funkcja get_ldnumber otrzymuje wskaźnik na argument path f_mount, który już jest wskaźnikiem. A więc przytoczony kawałek get_ldnumber nie sprawdza...
Nie można było tak od razu? Teraz przynajmniej mogę Ci powiedzieć dlaczego działa. Deklarując te 8 tablic i wkładając je do tablicy liczb całkowitych, dokonujesz niejawnego rzutowania z wskaźnika na tablicę (którym jest nazwa tablicy) na liczbę całkowitą. Potem jak wkładasz kolejne elementy tablicy tab do funkcji rejestr to dokonujesz znowu konwersji...
To działa dokładnie tak samo jak w funkcjach ReadFile lub WriteFile z WinAPI. Trzeci argument to wskaźnik na WORD, ponieważ funkcja zwraca ile bajtów faktycznie odczytano właśnie poprzez tą zmienną. Może być tak, że chcesz czytać 1024bajty (btr=1024) a funkcja odczyta tylko 1000 bajtów (z dowolnego powodu, np. address out of range). I jak inaczej ma...
ad. 2. W asmemblerze MC68k :], a co? jak dowolny, to dowolny :] (asm x86 nie znam za bardzo) Założenia: argument funkcji podawany jest przez stos (wskaźnik stosu - rejestr A7, stos rośnie w dół) Wartość (wskaźnik) zwracana jest w rejestrze D0. Reszta rejestrów pozostaje niezmieniona. Za obsługę stosu odpowiada funkcja wywołująca, więc po powrocie z...
Wyrażenie unsigned aLiczby return aLiczby[3] && true ; jest błedny! Funkcje w c++ mogą zwracać przez nazwe tylko jedną zmienną, może to być tablica danych,bądz cokolwiek innego ale nigdy nie można zwrócić dwóch lub więcej zmiennych przez nazwe funkcji tak jak Ty to robisz. Nie rozumiem czemu kompilator pozwala na takie wyrażenie, zawsze jest...
Error[Pe167]: argument of type "FIL volatile *" is incompatible with parameter of type "FIL *" Obawiam się że to wina kompilatora, bo przykład jest zaczerpnięty z ksiązki w której autor używał kompilatora Eclipse. Czy jest na to jakis sposób? :/ Jasne, od razu wina kompilatora. Kompilator poprawnie się zachowuje. Jeśli...
krzyfn : Jeśli funkcja potrzebuje miejsce na zmienne lokalne, to zaraz po skopiowaniu ESP do EBP zmniejszasz ESP np o 16 - zostanie przydzielone 16 bajtów lub inaczej mówiąc 4 DWORD'y dostępne przez Dodano po 14 Co do przekazywania wskaźnika - nie wiem w czym problem. Wskaźnik to nic innego jak zmienna zawierająca adres. Tak więc musisz pobrać ze stosu...
Tzn, że program może działać dalej poprawnie a debuger wskazuje na to, że jesteśmy w np HardFaultHandlerze ? Mógłbyś nieco rozwinąć myśl ? Czasem może być jakiś problem sprzętowy/programowy/systemowy, który może spowodować wywalenie się debuggera, który będzie np. uparcie twierdził, że jesteśmy wciąż w jakiejś linii, choć mikrokontroler sobie wtedy...
W moim odczuciu funkcja biblioteczna jest nieadekwatnie zaplanowana. Wypowiadam się o tyle, że nie rozumiem "co poeta miał na myśli". Wg mnie funkcja biblioteczna powinna miec cechy uniwersalności, a klient (kod wywołujący) ma dostosować się w razie niestandardowego użycia. Może być, że autor tego kodu ma rację (wydajność w/s ram), ale to w szerszym...
No tak, ale funkcja zwraca wskaźnik na funkcję, a ta ten wskaźnik ma mieć ten sam typ, co wskaźnik na funkcję, która go zwraca. W sensie ma być możliwe to: [syntax=C] [typ]* ple(void*) { return(&ple); } [/syntax] Freddie Chopin: argument jest po prostu zwykłym wskaźnikiem na void. Cały problem rozbija się o fakt, że funkcja ma zwracać wskaźnik na typ...
Witam, zająłem się ostatnio wskaźnikami i chyba sporą ich część już ogarnąłem co do zasady ich działania. Teraz doszedłem do momentu kiedy zacząłem zadawać sobie pytanie czy jest coś takiego jak przekazanie jako argumentu funkcji wskaźnika ale w sytuacji kiedy używam wskaźnika do tej funkcji. I przy tej okazji drugie pytanie, jakie są zalety stosowania...
https://obrazki.elektroda.pl/4024708700_... Witajcie moi drodzy. Przedstawię tu pierwszy na świecie tutorial programowania modułu WiFi WB2S, czyli BK7231. Moduł ten występuje w wielu urządzeniach smart home, a w internecie panuje opinia, że nie można stworzyć dla niego własnego firmware. Nic bardziej mylnego - pokażę tu krok po kroku...
https://obrazki.elektroda.pl/3570276400_... Pokażę tutaj jak przyśpieszyłem programową komunikację SPI służącą do obsługi pamięci Flash. Sprawdzę jak dużo kodu może kryć się za warstwą abstrakcji GPIO BK7231 a potem spróbuję operacje na pinach zredukować tak, by działały bezpośrednio na rejestrach. Ile cykli procesora tracone jest...
Natomiast pierwszej części wypowiedzi nie zrozumiałem dokładnie. Co robi w emulatorze funkcja OUT(nr. portu),A ? Czy jest przypisana do konkretnego numeru portu ? Czy dla każdego numeru portu robi coś innego ? Przecież w Cobrze OUT(1B) powinien uruchomić standardową procedurę BEEP, a OUT(FF) standardową procedurę tworzenia zapisu na taśmie magnetofonu,...
Witam. Odbieram w przerwaniu poprzez UART odpowiedzi z modemu. Używam komend AT. W przerwaniu dane z modemu umieszczane są w buforze (pamięć mikrokontrolera) czyli tablicy typu uint8_t. Stworzyłem funkcję którą wywołuję tylko raz w mainie i która posiada w sobie nieskończoną pętlę while. Funkcja ta jako argument otrzymuje wskaźnik na bufor. W pętli...
Sprzęt dla ułomów co nie wiedzą nic o życiu, Bardzo mi miło za ocenę mojej skromnej osoby. Mam jak to nazywasz "ogryzka" od kilku lat już (wciąż tego samego i wcale nie młodego) i działa. Telefon z założenia i nazwy ma być telefonem - a tę funkcję spełnia świetnie. Jak chcesz mieć dodatkowo setkę innych funkcji to musisz się liczyć z tym, że mogą się...
Cześć, Próbuję napisać bibliotekę obsługującą kilka układów MCP23S17 po SPI niestety zatrzymałem się w momencie przekazania przez wskaźnik lini csPin sterującej konkretnym ekspanderem. Poniżej umieściłem kod, obrazujący problem. Jako że funkcję "EXP_WriteOutput(&expand);"w pętli MAIN chcę mieć jedną, problem pojawia się jak w funkcji "EXP_SetRegister"...
(...) dzinie dużych modeli językowych znacząco wpłyną na to, jak będziemy projektować systemy wbudowane w przyszłości. Ta perspektywa jeszcze nie nadeszła, ale może być znacznie bliżej, niż chce się sądzić. Artykuł źródłowy: https://www.embedded.com/7-expert-tips-f... Z przyjemnością zajmę się Twoimi pytaniami....
Spróbuj to zmienić tak, aby nie używać zmiennej globalnej. Funkcja esp_ipc_call() może przyjmować argument w postaci wskaźnika do void. Dziękuję za Twoje uwagi. Faktycznie `esp_ipc_call()` umożliwia przekazanie argumentu do funkcji, która zostanie wywołana na innym rdzeniu. Możemy skorzystać z tej funkcjonalności, by przekazać wskaźnik do zmiennej,...
Mam pewien problem z wskaźnikami do dynamicznej tablicy. Tablicę tworzę tak: [syntax=c] int **tablica; //n - kolumny, m - wiersze tablica = (int**)malloc(n * sizeof(int*)); for(i=0; i<n; i++){ *(tablica+i)=(int*)malloc(m*sizeof(int))... } [/syntax] Następnie chcę utworzyć wskaźnik do tej tablicy i wywołać funkcję (wypelniajaca tablice zerami)z tym...
Kompilator w funkcji która wywołuje funkcję LCD_WriteText rezerwuje na stosie miejsce dla tej tablicy i przekazuje wskaźnik do tej tablicy funkcji itoa. Dopiero po wyjściu z tej funkcji obszar pamięci przeznaczony dla tej tablicy zostaje zwolniony na stosie. Funkcąj wywołujacą LCD_WriteText() jest w main(). Ale kompilator wie tylko że funkcja ta przyjmuje...
Ale w powyższym przykładzie: const uint32_t delta = b*b-4*a*c; zmienna nie znajdzie się we FLASH, gdyż jej wrtość nie jest znana na etapie kompilacji, chyba, że gcc zoptymalizuje wywołanie funkcji i stworzy jej klona - wyspecjalizowaną wersję dla określonych wartości argumentów. Ale niezależnie od tego nie będzie miało znaczenia, czy jest w FLASH, czy...
W obu przypadkach to tablica ale czy przypadkiem kompilator nie dokłada sobie automatycznie znaku '\' w pierwszy sposób? W obu przypadkach kompilator automagicznie dopisuje '\0' na końcu. co się stanie jeśli np moja funkcja: void odczyt_IMEI(char * IMEI) otrzyma jako argument wskaźnik na element char* o mniejszej wielkości niż odczytany/ skopiowany...
Z dodatkowych rzeczy, które mógłbyś poprawić to: - stosowanie wielkich liter dla makr for . Mamy 21 wiek i stosujemy co najmniej "-std=c99", więc nie ma potrzeby deklarowania wszystkich zmiennych na początku funkcji enum i stosować zmienne i argumenty tego typu, np: enum class , który wprowadza zakres widoczności, ale musiałbyś wtedy zmienić język z...
bo jak zrobię wskaźnik uint8_t to mi obetnie dane, a jak zrobię wskaźnik uint16_t to mi go funkcja nie przyjmie. Przyjmie, ale kompilator da Ci ostrzeżenie w stylu: warning: passing argument xx of 'blaaarg' from incompatible pointer type Tym niemniej: [syntax=C](uint8_t*)&zmienna16Bit[/synta...
Witam, Korzystam czasem z przekazywania wskaźnika do funkcji, w postaci argumentu do innej funkcji mp: void fun(void) { //ciało funkcji } a następnie np tak: uint8_t get_kbd( uint8_t key, void (*fun)(void) ) { if (key) { fun; return 1; } else { return 0; } } int main(void)...
dzieki za odpowiedzi, na spokojnie sprawdzę kod i poprawię. Co do poszczególnych fragmentów: LED5W W pierwszym przypadku odczytywana jest wartość zmiennej c i kopiowana do argumentu funkcji foo. Funkcje działają na kopii, więc nawet, jeśli wartość c się zmieni podczas wykonywania foo, ta funkcja nic o tym nie będzie wiedzieć. W drugim przypadku kopiowany...
Witam; jestem początkującym, więc proszę nie śmiejcie się z pytania. Ale ledwo co w miarę dobrze zrozumiałem pojęcie wskaźników i zaczełem je używać a teraz chciałbym zrozumieć wskaźniki na funkcję. Tyle tylko, że kompletnie nie mogę zrozumieć ich sensu, do czego służą, kiedy się przydają. Czy mógłby któryś kolega podać mi jakiś uproszczony przykład...
Funkcje mają parametry, a to co do nich przekazujemy (konkretne wartości) to są argumenty. Nie żebym się czepiał, ale fajnie jest wiedzieć o czym ktoś do Ciebie mówi. Btw tworzysz wspaniałe opisy słowno-muzyczne, ale ja trochę ich nie kumam :) Jednak super by było gdybyś wspomagał swoje słowa jakimiś przykładami kodu. Np z tego: Mamy funkcję, która...
Dzięki za odpowiedź ale nie o to mi chodzi. Wiem że mogę zdefiniować wcześniej w programie stałą, ale chciałbym to obejść. Mogę zrobić też osobną funkcję obsługującą takie przypadki ale nie tędy droga. Ogólnie funkcja ma przyjmować argument przez wskaźnik bo w 90% przypadków przekazywana będzie tablica. Definiowane 'tymczasowej zmiennej' ( o ile w C...
Jak czytać tablice, to ja wiem, zrobiłem przecież na AVR (Atmega i Xmega) z tablicą fonty 8x8, na ARM też zrobiłem, ale jak juz chce się użyć w programie kilka krojów/rodzajów czcionki i łatwo tym zarządzać - to jest mój problem. IMHO tablica z fontami to średni pomysł i niepotrzebny. Jeśli zrobisz tak jak w ostatniej strukturze, tzn. opis fontu zawiera...
Czy ktoś z forumowiczów mógłby rozwiać moje wątpliwości na które nie potrafię znaleźć jednoznacznej odpowiedzi? Chodzi o tablice i struktury tworzone w C. Czy jeżeli stworzę je lokalnie w ramach jakiejś funkcji a nie globalnie to one będą widoczne i ich wartości pamiętane nawet jak wyjdę z tej funkcji? A jeżeli je przekazuję jako argument do jakiejś...
Program pobiera z pliku dwa dane do dwóch zmiennych - int N i char X. Tworzy tablicę N- elementową, potem alokuje tablicę N wskaźników na struktury i umieszcza je w tej tablicy. Struktura skłąda się z pola int i, char c oraz float f. Pole int jest losowane w zakresie -1000 do 1000, pole char to losowy znak wielkiej litery z zakresu od B do X, pole typu...
char i unsigned char to w tym wypadku ten sam typ (domyślnie AVR Studio kompiluje z -funsigned-char). Jak już to w takich wypadkach kompilator zgłasza ostrzeżenie, a nie błąd. Błąd zgłasza np w przypadkach, gdy funkcja wymaga wartości, a dajemy jej wskaźnik lub odwrotnie, czyli beznadziejnych. O sensie (lub jego braku) podawania jako argument funkcji...
Nie rozumiem do końca chyba, tzn. co jeszcze trzeba dodać w funkcji LCD? Dane wysyłają się za pomocą void USART_Transmit, są odbierane w char USART_Receive kolejno w pętli do zmiennej i zmienna ta idzie do wyświetlenia - LCD_WriteText(odczyt); To właśnie widzę, że brakuje Ci podstaw C. Umiesz programować w jakimkolwiek języku, czy zaczynasz totalnie...
Witam wszystkich serdecznie. Mam parę pytań dotyczących takich programów: 1. Kalkulator RPN (jest to plik źródłowy modułu): [syntax=c]#include "rpn.h" int push(elem** stos, int dana) { elem* pom =(elem*) malloc(sizeof(elem)); pom->dana=dana; pom->nast=*stos; *stos=pom; } int pop(elem ** stos) { int a=(*stos)->dana; elem* pom=(*stos)->nast;...
Funkcja jest poprawnie wywoływana, to ostrzeżenie mówi tylko o tym, że przekazując wskaźnik zrzucasz z niego atrybut progmem. Poprawić to możesz definiując jako argument nie uchar * lecz np. prog_char *, lub stosując jawną konwersję, co jest jednak mniej eleganckie. Przy okazji - przekazujesz wskaźnik na tablicę bajtów, dlaczego więc nie zdefiniować...
Nie zrobię tak: [syntax=c]mask = 1 << _bit;[/syntax] bo nawet z optymalizatorem ustawionym max. szybkość funkcja ze switch działa o kilka cykli szybciej :) sprawdzone debugując w avrstudio... Twoja propozycja zadziała jeśli mask będzie zmienną w kodzie programu głównego i zmienna będzie rejestrze...a nie w pamięci SRAM w dodatku wewnątrz funkcji...
Prosiłbym o wspólne przeanalizowanie tego kodu i poprawienie mnie w miejscach gdzie się mylę. Kod napisany przez gaskoin : [syntax=c] typedef struct Blower Blower; typedef struct { void (*handle)(Blower*); } BlowerState; struct Blower { int power; BlowerState *state; }; void blower_idle_state_handler(Blower*); void blower_mega_state_handler(Blower*);...
1. Mówimy o F103, nie o innych rodzinach. W tej rodzinie tak się składa, że te bity "są być prawidłowe" 2. Te symbole u8 i u32, to z którego standardu wziąłeś? Stare czasy SPL na STM32. Po prostu przywykłem do tego, i tak mi zostało. Imho zmienną w kodzie winno się tworzyć ad hoc, a nie wciskać shift minus, i jeszcze 't' na koniec. Zresztą, Qt również...
Przecież w tej funkcji nie zwracasz wartości przez wskaźnik .... zwracasz typ double. A to nie wskaźnik.... Pewnie chodzi ci o to czy modyfikacja struktury przekazanej przez wskaźnik jako argument funkcji jest poprawna ? - pewnie że poprawna. Ale to tylko modyfikacja argumentu (obojętnie czy typu wskaźnikowego czy nie) .....
Bez przerwań, z aktualizacją w czasie rzeczywistym opisów pozycji menu, dowolny poziom komplikacji menu można rozwiązać za pomocą dwóch prostych rzeczy: wskaźnika i wskaźnika na funkcję. Każda pozycja menu powinna zostać zapisana jako jedna struktura. Struktura taka posiadała by 3 wskaźniki na inne struktury tego samego typu (pozycja nadrzędna (tj powrót...
Funkcja printf zapisuje dane do strumienia wyjściowego (standardowego). Zamiast niej spróbuj użyć sprintf(), która zapisze dane do bufora (musisz podać jako argument wskaźnik na bufor, a dalej jak w printf()). Następnie bufor wysyłasz przez uart...
(at)lelekx Przekazuj port przez adres. Tylko to mnie zmusza do zrobienia trzech definicji na każdy IO, osobno do zapisu PORTx, DDRx i odczytu PINx. Chciałbym: - w pliku .h miał zdefiniowane wejścia/wyjścia za pomocą jednej linii (np. #define GPIO_Jakis_Coś Port, Pin) - żebym mógł wywołać z tym 3 różne funkcje: zmiana kierunku wejście<->wyjście,...
Chciałbym aby moja moja funkcja przyjęła jako argument jednowymiarową tablicę z dowolnym typem danych i zwróciła liczbę elementów tablicy To nie zadziała - na podstawie wskaźnika nie dowiesz się jak duża jest tablica. Wskaźnik wcale nie musi być tablicą. Sizeof wskaźnika to 4 albo 8 bajtów, obojętnie na co wskazuje.
funkcja argument wskaźnik funkcji argument funkcji argument
oświetlenie lodówka samsung patriot viper blackout symbian kontakty
adapter przejsciowy gniazdko zarowka luźny napinacz rozrząd
Niebieskie prostokąty na ekranie iPada - jak usunąć? Najtańszy laptop dotykowy do pracy zdalnej – Lenovo IdeaPad Flex 3, Slim 3i Chromebook, Acer Spin 3 X360