Ja mam tak: __attribute__ ((section(".bootloader&... int program_page(unsigned short *data, unsigned int adr) {... } i linker: .bootloader 0x08000000+128K-1K : { *(.bootloader) } i działa
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...
Zainkluduj plik nagłówkowy <string.h>, tam masz prototyp tej funkcji.
bez apelacyjne operator extern powinno się tam znaleźć. To zleży jak przebiega proces kompilacji. Jeżeli kompilujemy wszystkie pliki na raz to w sumie ta dyrektywa o której wspominasz działa tak jak oczekujesz i rzeczywiście zmienna jest zadeklarowana tylko raz. Natomiast jak kompilujemy każdy plik źródłowy osobno do postaci pośredniej i później linkujemy...
Problem został rozwiązany. Leżał on w wywołaniu funkcji putch(), która wysyłała dane na USART'a. Zamiast niej z rozpędu pisałem putchar(), która jest procedurą systemową. Jednakże dlaczego program się wykrzaczał już na samym początku? Powinien dojść do wywołania tej funkcji.
ARM7, Cortex-M3 to - powiedzmy - "handlowe nazwy" architektur, odpowiednio ARMv4 i ARMv7-M. Oczywiście nowsza jest ARMv7 czyli własnie Cortex. ARM7 jest już nieco przestarzały, a układ LPC2106 to w ogóle antyk - NXP od czasu tego układu wypuściło bardzo wiele fajnych układów z tym rdzeniem, dokładnie chodzi o rodziny LPC23xx i LPC24xx - LPC2106 to chyba...
Funkcje ta masz jedynie w skompilowanej postaci. Jest ona częścią libgloss, która jest częścią newlib (biblioteka standardowa w Twoim toolchainie): https://github.com/bminor/newlib/blob/dd...
Tę tablicę alokujesz na stosie, a jego rozmiar jest zapewne nie za duży. Albo alokuj statycznie, albo powiększ stos w ustawieniach projektu.
BTW. Jest to trochę mylące, tworzy się projekt C++ i nie działa od razu. Trzeba ręcznie zmienić na .cpp. Typ projektu nie definiuje, że odtąd wszystkie pliki w nim są w C++. Jeśli by tak było, to jakim cudem w projekcie zrobiłbyś assemblerowy startup? Próbowałem też zrobić w pliku c++ funkcję i ją wywołać z main.c - też nie działa. https://isocpp.org/wiki/faq/mixing-c-and...
Nic nie wiemy o typie mikrokontrolera. Poszczególne serie STM32 mają różne możliwości programowania (16/32/64 bity). Nie pokazałeś deklaracji zmiennych, a od tego wiele zależy. Podejrzewam problem ze zmienną Address.
A jakie to ostrzeżenia generuje kompilator i dlaczego w ogóle je generuje? Ja mam już swoją teorię nt. Twojego błędu - brak deklaracji zapowiadającej, na co narzeka kompilator. Zgadłem?
Dla pierwszego razu jest zaprogramowana, dla następnych już nie, a Ty próbujesz to DMA uruchamiać w pętli, co uda się tylko jeden raz. Przepraszam, cały czas nie mogę przestawić myślenia na STM32F1xx, z którym nie mam (na szczęście) do czynienia. Strasznie dziwne to układy i niepodobne nawet do nowszych serii STM32. Tyle dywagacji, teraz pora na pokazanie...
Po skonfigurowaniu środowiska yagarto zgodnie z instrukcją wyskakiwało mi: DescriptionResourcePathLocationType Type 'uint16_t' could not be resolvedmain.c/PRJ_Color/srcline 26Semantic Error więc zobaczyłem jak to jest zdefiniowane i wstawiłem typ z definicji
Witam, wszystko wynika z koniecznosci szybkiego przeniesienia czego z ardunio na STM'a. Oczywscie ze moglem popelnic bledy dlatego zwrocilem sie o pomoc z wyjasnieniem. Arduino ide 1.8.19, LiquidCrystal to standardowa biblioteka: https://www.arduino.cc/reference/en/libr... Doinstalowane: https://github.com/rogerclarkmelbourne/A...
Korzystam z Sourcery CodeBench Lite i nie mogę znaleźć pliku nagłowkowego w ktorym znajdowałaby się deklaracja dtostrf.
Rachel załamujesz mnie :D __IO uint32_t AFR[2] to deklaracja tablicy dwuelementowej a w C indeksuje się je od 0 :)
Co do pól bitowych to mam Je odbierać i wysyłać więc nie mam wyboru. To nie jest prawda. Odbierane i wysyłane są bajty, odczyt i zapis zazwyczaj realizuje się poprzez maskowanie wartości i przesunięcia (czyli operacje bitowe a nie pola bitowe) Chciałem ułatwić rzycie osobie która nie jest programistą w składanie ramki do wysłania. Po to się tworzy...
Sposobem Freddiego + tablica długości miesięcy można to załatwić w 3 linijkach - łacznie z deklaracją tablicy. Albert
Witajcie Próbuję się w końcu nauczyć tego C i jednocześnie STM32, no ale... Deklaracja zmiennych: uint8_t Tim = 230; uint8_t Tim_Poprzedni = 230; uint8_t C = 0; uint8_t R = 0; Program (wielkie słowo :D): while (1) { HAL_Delay(1000); Tim++; R = Tim - Tim_Poprzedni; if (Tim - Tim_Poprzedni >= 10) { Tim_Poprzedni = Tim; C++; } } Póki Licznik Tim się nie...
Dziękuję koledzy za odpowiedzi. Zapomniałem dodać plik h w którym są deklaracje, wstawię go po pracy:)
Cześć przerobiłem kod kol. Szczywronka i postanowiłem zmodyfikować fo dla stm32f0discovery oto kod [syntax=c] //Załączenie pliku nagłówkowego #include "stm32f0xx.h" //Deklaracja funkcji //void gpio_pin_cfg(GPIO_TypeDef *port_ptr, uint32_t pin, uint32_t mode_cnf_value); int main(void){ //Włączenie zegara dla GPIOC RCC->APB2ENR = RCC_AHBENR_GPIOCEN;...
Błąd w deklaracji wskaźnika - powinno być: volatile cBufElem* pWrite;
Sprawna wersja: http://obrazki.elektroda.pl/8007651200_1... Niesprawna: http://obrazki.elektroda.pl/2176426700_1... Wygląda na to ze bit ovr jest ustawiony tylko dlaczego. Nie zmieniam nic poza deklaracją zmiennej
Wtedy nie byłoby warninga. Zresztą nawet wtedy umieszczanie w nagłówku deklaracji ze słówkiem "static" jest bez sensu.
1. Zbędny atrybut volatile w deklaracji AdcVal. 2. Czy AWD jest jedynym źródłem przerwania ADC? 3. Kasować bit zgłoszenia przerwania należy na początku procedury obsługi przerwania. nie wiem, aj to jest W STM32, ale w wielu innych Cortexach Zgłoszenie przerwania nie zdąży się w takiej sytuacji skasować i powtórnie wejdziesz w obsługę przerwania.
Zobacz, co masz w pliku startup. W różnych środowiskach wygląda i nazywa się on różnie. Sprawdź, czy jest tam w ogóle nazwa SysTick_Handler i czy jest tak samo pisana, jak u Ciebie - być może trzeba ją wpisać w tablicy wyjątków (jeśli nie ma deklaracji weak w startup).
Co do Twojego problemu deklaracji typu układu - typ ten zdefiniowany jest w Makefile (MD, HD, CL, ...) Jeśli używasz przerwań, to ustaw jakąś wielkość stosu dla przerwań w skrypcie linkera (domyślnie jest 0, bo nie ma przerwań w przykładach). 4\/3!!
kompilator to arm-none-eabi-gcc a komenda -DSTM32F4XX -I"C:\workspaceSTM\usb\base&quo... -I"C:\workspaceSTM\usb\usb\dev\... -I"C:\workspaceSTM\usb\usb\dev\... -I"C:\workspaceSTM\usb\usb\otg\... -O0 -Wall -std=gnu99 -Wa,-adhlns="$(at).lst" -c -fmessage-length=0 -mcpu=cortex-m4...
Problem rozwiazany nalezy odkomentować jeszcze jedna linijke w pliku naglowkowym z deklaracja procesora. Przechodze z avr i troche to dla mnie wszystko dziwne i nie jasne, myslalem ze ktos mi to na forum jakos lopatologicznie wyjasni... Dla osob, ktore spotkaly sie z podobnym problemem, screen: http://obrazki.elektroda.pl/1660484600_1...
Czy dotyczy to tylko tej struktury "TIM_TimeBaseInit"? Dotyczy to każdej zmiennej - to chyba oczywiste czytając komunikat błędu - "declaration" nie jest określone jakoś szczególnie, więc definitywnie chodzi o wszystkie deklaracje zmiennych. Ponownie podaję linka: http://lmgtfy.com/?q=error%3A+%23268%3A+...
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...
Skoro tak to rezystory wyrzuciłem. BOOT0 i BOOT1 są na masie. Oto fragment kodu rozruchowego: void RCC_Configuration() { ErrorStatus HSEStartUpStatus; RCC_DeInit(); RCC_HSEConfig(RCC_HSE_ON); HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS) { FLASH_PrefetchBufferCmd(FLASH_Prefet...
A pamiętasz o odwoływaniu się w źródłach C++ do deklaracji z plików C z dodatkiem extern "C" ?
Uruchomienie biblioteki stm32 z moimi przykładami sprowadza się do dodania folderów źródeł, nagłówków i jakichś wymaganych deklaracji. Z FreeRTOSem pewnie będzie tak samo... [; 4\/3!!
po takiej deklaracji w sekcji .ssitag lądują wskaźniki do tej tablicy, a nie sama tablica, jak wymusic żeby całosć tam wylądowała? Musiałbyś albo w tablicy umieścić nie napisy ("...") tylko po prostu wskaźniki do tych napisów (osobnych obiektów), z których każdy miałby również ten atrybut. Druga opcja to zrobienie tablicy tablic (obecnie masz tablicę...
Problem generalnie polega na tym, że funkcja KBD_ReadKey (w mojej bibliotece) nie zwraca wartości. Takie problemy rozwiązuje się generalnie zmieniając deklarację i definicję funkcji z typu void na dowolny inny ;-) Albert
Sprawdziłem to co zaproponowałeś i wyniki są następujące. Wykomentowałem linijkę, w której flaga jest resetowana (flag=0) w procedurze przerwania od timera. Czyli jawnie w kodzie nie ma żadnego miejsca gdzie flaga byłaby zerowana. Efekt - bez zmian. Na wyjściu z przerwania od EXTI widzę 1. Na wejściu przerwania timera - 0. Co więcej, przy kolejnym wejściu...
Od kiedy można było kupić ARM w postaci układu scalonego u jakiegoś dystrybutora, tak jak kupuje się teraz STM32, SAM czy AVR 8051? Od kiedy w mniejszych czy większych ilościach można było kupić PPC, ColdFire?
(at)rogeros Koledze (at)rajszym chodziło o pierwszy parametr przekazywany do HAL_UART_Receive_IT, czyli o huart2. Według mnie powinno tam być huart2 zamiast &huart2 (jako że parametr funkcji przykrywa globalny symbol huart2). Drugi parametr również był przekazywany w sposób który generuje warning. Ponadto usuń volatile z deklaracji tablicy Received....
Dane wpisane do tego skryptu zakładają, że nie korzystasz z ŻADNYCH wyjątków. Musisz sobie je ustawić w zależności od swoich potrzeb. __irq_stack_size = 0; Czyli po wejściu w przerwania mam dostępne 0 pamięci ram na zminne? W skrócie: Funkcji ustawiającej stosy przekazane jest 0 dla trybu XXX, a więc (w zależności od kolejności) dany stos będzie pokrywał...
Typedef jest lepszy, bo przy deklaracjach nie trzeba pisać słowa struct. ;) Natomiast pod wszystkimi argumentami za niestosowaniem typedef do struktur jak najbardziej się popisuję. Ja zawsze nadaję strukturom nazwy z podkreśleniem na końcu, żeby w razie czego zrobić typedef bez podkreślenia. Ostatnio jednak tych typedef jakoś nie robię.
Co jest dziwne, bo w tym samym pliku wcześniej dodany jest plik nagłówkowy stm32f1xx_hal.h, który jest poprawnie linkowany przez kompilator. Bardziej "inkludowany", bo to robi kompilator. co jest absurdalne, ponieważ na górze pliku main.c jest zaincludowany plik EPD_Test.h, który zawiera tę definicję! W pliku nagłówkowym masz tylko deklarację, a nie...
Zapewne w projekcie brakuje plików: stm32f10x_flash.h stm32f10x_flash.c stm32f10x_rcc.h stm32f10x_rcc.c ... itd. Ta standardowa biblioteka STM nie jest elementem środowiska. Jest to jedynie zestaw plików zawierający deklaracje i procedury służące do komunikacji z peryferiami procesora STM32. Nie ma obowiązku jej używania. Jeśli jednak z jakiegoś powodu...
warningi znikają po usunięciu volatile sprzed deklaracji zmiennej buf1, ale nic się nie pojawia w terminalu Może faktycznie przedobrzyłem z tym volatile ale po jego osunięciu program działa jak powinien. Co prawda było u mnie jakieś potknięcie z działaniem, gdy go pierwszy raz usunąłem ale nie jestem pewien czy to nie przypadek (kabelki, ustawienie...
https://obrazki.elektroda.pl/2968170300_... W materiale znajdziecie informacje o platformie MIKROE udostępnionej przez TME . Platforma ewaluacyjna EasyMx Pro wyposażona jest w gniazdo do wymiennych modułów mikrokontrolera PIC, AVR, RISC-V, STM . Na płytce EasyMx PRO v7a STM32 znajduje się wiele interfejsów m.in UART<->USB, USB...
Ja radzę sobie z problemem w ten sposób że ustawiam w projekcie ścieżki wyszukiwania na wszelkie foldery z plikami .h. Podpowiem jeszcze, że dobrą praktyką jest też skompilowanie biblioteki do postaci biblioteki :P Ale na początek wystarczy dołączyć ją do projektu. W którymś nagłówku musisz zmienić deklarację, że używasz biblioteki a także określić...
Otwierasz plik startup_xxxxx.s, klikasz poniżej okna edytora w zakładkę Configuration Wizard i ustawiasz rozmiar stosu. Radziłbym jednyk przemyśleć deklaracje danych. To na ogół nie jest dobry pomysł, żeby mieć zmienne lokalne procdury o objętości setek bajtów lub więcej.
CMSIS Core - to tylko startup i system i bodajże core_cm3 + skrypt linkera. Zaś ty korzystasz z pełnego CMSIS i to jego deklaracji brak. Rozwiń tą gałąź "Device"... Definicje są (dodałeś sam pewnie), bo ci przechodzi kompilacja. Błąd jest w momencie linkowania.
Problem rozwiązałem - dopiero teraz do tego siadłem. Miałem przerobiony na .cpp plik vectors.c Frediego i był problem ponieważ freeRTOS definiował funkcjie w c a deklaracje były w cpp który to dekoruje nazwy funkcji (czy jak to się nazywało) - objęcie 3 handlerów przez extern "C" rozwiązało problem.
Wydaje mi się, że ograniczasz w ten sposób zasięg czujników do dotyku. Rozwiązując w inny sposób ekranowanie wpływu głónej płytki mógłbyś uzyskać urządzenie, które może się znaleźć w plastikowej obudowie. Technologia pojemnościowa ma to do siebie, że można uzyskać naprawdę duże zasięgi, nawet w środowisku z zakłóceniami, ale ogromnym problemem są przesłuchy...
Witam, Dzieki za pomoc. Jesli chodzi o brak konsekwencji to jest fragment wiekszej calosci, chcialem tylko pokazac jak inicjalizuje UARTy. Znalazlem blad. Robie funkcje dosc mocno generyczne i okazalo sie, ze inicjalizacji i przy wysylaniu/odbieraniu, mam funkcje translacji numeru UARTa na adres zamienilem ze soba parametry w definicji i deklaracji...
Witam, walczę z mikrokontrolerem STM32F051K8T6. Urządzonko, które buduję, to system mierzący odległość na podstawie odstrojenia generatora LC - zbieram częstotliwość i amplitudę. Częstotliwość jest mierzona przez TIM2, na który wchodzą impulsy, a TIM6 co 20ms odczytuje jego zawartość i zeruje. Amplituda - wiadomo, przetwornik A/C. Z tablicy 50 próbek...
Post już pewnie nieaktualny dla autora. Jednak chciałbym coś sprostować. Dla STM8 jest kilka komercyjnych środowisk uruchomieniowych z własnymi kompilatorami C z ograniczeniem dla wersji darmowej do 32kB kodu. http://support-raisonance.com/extranet/t... http://www.cosmic-software.com/stm8.php http://www.iar.com/en/Products/IAR-Embed...
Dodam tylko że użycie metody którą opisałem nie wymaga zmieniania tablicy w locie jak to zrobił Marek_Skalski . U mnie kod z przerwania wygląda tak: [syntax=c] Angle2 += Angle2_Step; Angle2_2 = Angle2 >> 6; U = (sinus_3har[(Angle2_2 + 0) & 0x03FF] * Vm * 2816) >> 20; V = (sinus_3har[(Angle2_2 + 341) & 0x03FF] * Vm * 2816) >>...
Zacznijmy od tego, co to jest zmienna Timer1? Jak wygląda jej deklaracja?... Jeśli chodzi o kod, nie pomogę ci ani trochę, bo nie korzystam i nie będę korzystał z głupiego FWLib, a ty tak. Systick włącza się łatwo i przyjemnie kodem [syntax=C] void systick_init(void) { SysTick->VAL=720000; SysTick->LOAD=720000; SysTick->CTRL=0x7; } [/syntax]
STM32F10x Standard Peripherals Library - niestety ST wygenerowalo dokumentacje w formie pliku pomocy i nic z tym się nie zrobi - popprzednia wersja biblioteki (2.0) miała to w wersji pdf. Ale to właśnie w tym pliku dokładnie opisane są wszystkie funkcje bilbioteki związane z pracą peryferiów plik stm32f10x_it.c zawiera definicje wszysktich funkcji odnoścnie...
Ok, łapię:) Ale compilator musi wiedzieć które pliki skompilować (tworzy pliki obiektowe?) a linker musi wiedzieć które pliki połączyć. Dołącza się plik nagłówkowy plik.h, który zawiera deklaracje funkcji, ale same funkcje są w pliku .c, jak on jest dołączany? Poza tym potrzebne sa wyliczenia fizycznych adresów funkcji - to robi także linker?
Dlaczego nie użyłeś po prostu typu int? int i long mają na Cortexach po 32 bity. Chciałem mieć pewność że zmienna będzie "długa" bez zagrożenia, że znów się przepełni. :idea: można dołączyć nagłówek <stdint.h> i użyć typu int32_t albo uint32_t. Świetny pomysł! :D Zwłaszcza, że w tych deklaracjach widać długość zmiennych, chociaż tutaj takie małe...
Witam Ten program powinien działać w taki sposób, żeby zliczał naciśnięcia przycisku Pin15 w czasie 2s. Mógłby mi ktoś powiedzieć w jaki sposób go zmienić aby działał? Z góry dziękuję za odp /* Includes ----------------------------------------... #include "stm32f10x.h" /* Private typedef ----------------------------------------...
oczywiście jest ten atrybut (i tylko ten), jednak nie w definicji tylko deklaracji. Wszystko w Twoim pliku vectors.c. Każdy plik *.c jest kompilowany osobno, więc plik z przerwaniem nie wie co jest w pliku vectors.c - ta deklaracja musi być fizycznie w tym samym pliku, ja daje zawsze powyżej: void TIM3_Handler(void) __attribute__((interrupt)); void...
Wątpię, by bez specjalnej deklaracji był tylko we flashu. W czystym C tego nie da się zażądać (może w jakiś niszowych dialetach) A jaka ona jest, zależy od kompilatora - a tego nam skąpisz
Tylo szkoda pamieci programu na kopie tych danych, zwlaszcza jak ich troche będzie. Pamiętaj o tym, że kopia potrzebna byłaby tylko gdy potrzebna Ci jest jakaś wartość domyślna, bo jeśli po prostu mają być wyzerowane (albo wszystkie mają mieć jakąś konkretną, tą samą wartość) to kopia nie jest potrzebna (jak przy sekcji .bss). Wydaje mi się, że najlepszą...
OJ kolego ! Podstawy jezyka C sie klaniaja. W przypdku deklaracji zmiennej: uint16_t [480] kompilator wyrzuci blad bo nie wie o jaka zmienna chodzi. Poprawna deklaracja zmiennej tablicowej wyglada tak: typ zmiennej nazwa zmiennej ilosc elementow, wiec poprawny zapis to uint8_t hexek[480] Moze przyczyna jest brak pamieci stosu. Dla uint8_t hexek[480]...
Napisałem już obsługę wyświetlacza LCD na ARMa po rejestrach, ale robiłem to na „gotowcu” z bibliotek z ksiązki pana Galewskiego. Niestety mam problem ze zrobieniem tego od zera. W Keilu 5 tworzę goły projekt, który zawiera tylko wbudowany plik z deklaracjami stosu itp i dopisuję swój program np. migający diodą. W ogóle nic nie rusza. Czy...
Rzeczywiście pokiełbasiłem z tymi wskaźnikami. Po poprawnym zadeklarowaniu i użyciu wskaźników kod skompilował się bez błędów i ostrzeżeń. Tak więc: [syntax=c] uint16_t *BKPSRAMADDR0 = (uint16_t *)0x40024000UL; //deklaracja wskaźnika [/syntax] wydało mi się dziwne, że uint16_t zapisany jest tuż przy 32-bitowej liczbie, ale tak ma być. Procedura zapisu:...
Czyli niepoprawny program przypadkiem Ci działał (bo deklarowanie zapisywalnych zmiennych we flash raczej ciężko uznać za poprawne), a taki mniej niepoprawny już się nie kompiluje. Trochę szukanie dziury w całym, skoro jedyne poprawne rozwiązanie to dodanie "const" do _WSZYSTKICH_ obiektów które będą we flash... Program w sensie kodu był niepoprawny....
Panowie, rozumiem ze chcac ladowac dane do zewnetrznej pamieci trzeba miec mikrokontroler z FSMC ? Gdybym wzial "zwykly" mcu i podpial do niego kostke ram to deklaracja zmiennej uint32_t tab; nigdy nie trafi do tego ramu ?
Witam, czy nie wpadł ktoś przypadkiem na internecie na tutorial tworzenia pliku makefile dla środowiska Keil uVision lub Eclipse (bo chyba powinny być nieco inne) stricte pod STM32? Było by mi to bardzo potrzebne. Jeśli chodzi o moje próby - dobrych kilku dni walczę z Keilem i Eclipse. Znalazłem klika przykładowych projektów (w postaci main, + biblioteki...
Witam, Ustawienie __main_stack_size = 1024; nic nie pomogło. Mam jeszcze jedno pytanie które mi się nasuwa. Czy deklaracja funkcji obsługującej przerwanie("stm32f10x_it.c") powinna wyglądać tak: void USART1_IRQHandler(void) { Czy wymagane są jakieś dodatkowe atrybuty (__attribute__) ? W pliku out/*.lss jest zawarty kod obsługujący przerwanie:...
Witam! Uczę się programowania mikrokontrolerów STM32 (aktualnie męczę STM32F103). Programy piszę w C, ale co jakiś czas zerkam w to co spłodził kompilator - w celach edukacyjno-poznawczych. Napisałem prostą funkcję obsługi przerwania od SysTicka. Deklaracja funkcji ma postać: [syntax=c]void SysTick_Handler(void) __attribute__((interrupt));[/syntax]...
Szczerze mówiąc to nie rozumiem Twojego kodu gaskoin. Może tak z natury technicznej, to co znaczy taka deklaracja funkcji: [syntax=c]void *blink_led(void * param);[/syntax] szczególnie chodzi mi o te param, ale również o całość. Myślę, że to już nie należy do podstaw, więc możesz mi spokojnie opowiedzieć ;) Jak również taka definicja: [syntax=c]void...
jak na przykład ujednolicenie inicjalizacji, co pozwala zainicjalizować kontenery STL (listy, wektory, ...) tak jak tablicę czy strukturę w C Też mi się to strasznie podoba a część standardu jest już zaimplementowana w nowym gcc, ale wg twórców na razie trzeba uważać: Important: GCC's support for C++11 is still experimental. Some features were implemented...
Mam program na STM32F103 pisany w Coocox CooIDE. Ponieważ program dość się rozbudował, część funkcji z pliku main.c przenoszę do nowo utworzonego pliku np. ustawienia.c wraz z deklaracjami funkcji ustawienia.h. Nie wiem dlaczego, po takim przeniesieniu zwiększa się kod wynikowy z 360kB do 370kB (większa część kodu to grafiki, ikony dla TFT). Wydawałoby...
Uff, udało się. Oto rozwiązanie dla Tych, którzy kiedyś będą mieli podobny problem: wyedytowałem plik: "folder_główny_maple\hardware\leaflabs\c... w którym zmieniłem deklaracje pamięci na: ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K inne potencjalne wyjście,...
Deklaracja jako extern "C" zmienia tylko specyfikację interfejsu binarnego funkcji, a konkretnie sposób wywołania i przekazywania argumentów oraz sposób generowania nazw symbolicznych dla linkera (po polsku: konsolidatora :) ). Ale nie zmienia to języka źródłowego, tzn. jest to dalej C++.
Do tego co napisał kol. (at)Freddie Chopin dodam, że po takiej operacji mamy do dyspozycji symbole _<nazwa>_start, _end i _size, co daje nam możliwość dostępu do tych danych. Poza tym, ponieważ konwersja przy kompilacji może być czasochłonna, warto pliki obiektowe połączyć w bibliotekę: ar rcs <lik.a> <opliki.obj> co jest operacją...
Mam pewien problem przy podłączeniu: http://obrazki.elektroda.net/20_12312845... W deklaracjach jest: [syntax=c] gpioa as af gpio_pin_cfg( GPIOA, 5, GPIO_AF0_PP_50MHz ); // sck gpio_pin_cfg( GPIOA, 6, GPIO_AF0_PP_50MHz ); // miso gpio_pin_cfg( GPIOA, 7, GPIO_AF0_PP_50MHz ); // mosi gpio_pin_cfg( GPIOA, 1, GPIO_OUT_PP_50MHz ); // d/c gpio_pin_cfg(...
Witam! Eclipse Kepler Sourcery CodeBench Lite 2011.09-69 OpenOCD 0.6.1 STM32F103ZET6 Szablon projektu - Freddie Chopin Do tej pory wszystkie projekty na STM32 działały dobrze jednak teraz buduję większa aplikację i pojawiają się problemy. Objawia się to losową zmianą wartości zmiennych np. zadeklarowanych jako const czy przerwaniem __Default_Handler....
OK, posiedziałem nad Twoim przykładem (ciężko było..ja robię projekty tak że samo eclipse automatycznie znajduje mi wszystkie deklaracja i definicje :D ) i zmieniłem tylko to co u mnie jest inne. W końcu ruszyło. Wyciąga 140kB/sec przy zapisie i około 200kB przy odczycie. Wychodzi na to że mam skopaną implementację biblioteki USB do mojego projektu...teraz...
Nie, nie poszło. Plik *.h to tylko nagłówek zawierający deklarację tej funkcji. Implementacja znajduje się w pliku resample.c. Całą bibliotekę można pobrać z: https://github.com/xiph/speexdsp http://www.speex.org/downloads/ Szczerze wątpię aby się udało to uruchomić na STM32. Edit: Samą bibliotekę (dla cortex-m4 z FPU) można skompilować za pomocą komend:...
Nie Eclipse, a kompilator. Kod okrutnie poplątany i zapewne błędny, ale bez kompletu deklaracji używanych w nim identyfikatorów nie da się tego stwierdzić. To, co widać gołym okiem, to próba podstawienia wskaźnika pod daną typu uint16_t. Wróżę też, że źle użyłeś Page_127 w tym dodawaniu.
Tak, to wiem, ale funkcja będzie pobierać dane wg swojej deklaracji czy wg deklaracji tablicy? Np. jeżeli elementy tablicy będą takie - 0x14, 0x2A, 0x56, 0xDF... itd. to funkcja pobierze element pierwszy jako font[0]=0x142A i następny font[1]=0x56DF czy też będzie to font[0]=0x0014, font[1]=0x002A itd. Chodzi mi o to czy funkcją której argumentem jest...
Arduino to taka zabawka, niby super a do kitu. Wiem o tym, jak pisałem mgr. we dwie osoby to ta druga pisała sterownik na arduino i nic z tego nie wyszło a moje małe coś na AtMega 8 ... Chyba, że to nie wina materii, tylko krawca. Sądzę, że nie zrujnowało mu to życia, tj dyplom niestety dostał? ... jak możesz to nie dotykaj środowiska Arduino, bo wszyscy...
Dzięki bardzo atom1477, nie mam pojęcia czemu wcześniej nie wpadłem na taki pomysł. Od razu zauważyłem że nie ma czerwonego, a że wszystko było w porządku napisane, więc bardzo łatwo domyśliłem się że deklaracja zmiennej uint16_t var_temp=0x0000; jest zła ponieważ przy linijce: var_temp=((uint32_t)(buffer http://obrazki.elektroda.pl/7043940400_1...
Witam, Za pomocą CubeMX wygenerowałem projekt z systemem FreeRTOS oraz biblioteką LwiP aby uruchomić serwer WWW. Wszystko uruchomiłem tylko problem jest taki że mam tylko deklarację funkcji do odczytu z buforu i wysłania do stosu lwip : MX_LWIP_Process(); Ta funkcja powinna być wygenerowana w CubeMX? Dodano po 16 Oczywiście na ping odpowiada.
hmm no właśnie przekombinowałem. Tylko, że jest problem bo gdy dodam w pliku nagłówkowym deklarację : [syntax=c]extern const struct xxx *ptr = &AAA;[/syntax] To już mi się program nie kompiluję a chcę mieć dostęp do tej struktury przez wskaźnik z każdego pliku do którego dołączę dany plik nagłówkowy.
Podrzuć tu plik z deklaracjami.
Freddie Chopin dzięki za odpowiedź. Po deklaracji i użuciu:[syntax=c] const char * const AT_OK_RN = "OK\r\n"; Search(AT_OK_RN); [/syntax] Zajętość FLASH się zwiększyła o 8 bajtów(?), ale zajętość RAM nie zmalała. Dlaczego tak się dzieje?
Nie ma to większego sensu jako ze w ARM-ach używa się definicji z CMSIS. Oczywiście każdy jak nie ma nic lepszego do roboty może sobie pisać takie deklaracje, ale do kązdej rodziny procesorów i peryferiów trzeba pisac inne. Tak że uważam to za pracę syzyfową i do tego mało użyteczną. Do tego jeszcze przy takiej ilości definicji łatwo o jakiś bład -...
Witam. #1 - może Kolega sprawdzić ,,view RTL schematic'' i ,,technology schematic'' w ISE (przypuszczam, że jeśli Xilinx to i ISE). Jak nie będzie miał kolega wniosków, to może tu wkleić obrazki. Teoretycznie - czyli w symulacji behawioralnej jest dobrze. #2 - proces reaguje na zmianę SPI_Action - sygnał, który (albo z nadania Kolegi albo kompilatora)...
Zmagam się z drobnym problemem. Chcę zmierzyć odległość czujnikiem i muszę zmierzyć czas od stanu wysokiego na wejściu do staniu wysokiego na wyjściu. Otóż chcę ustawić wyjście cyfrowe aby co jakiś czas był na nim stan wysoki, od tego momentu powinien naliczać się czas, aż do momentu pojawienia się stanu wysokiego na wejściu. Potem wartość tego czasu...
Gdzie masz zadeklarowane typy z którymi masz problem. Plik stm32f10x_it.c musi znać te typy (DIR,FIL...). Dołącz do pliku stm32f10x_it.c nagłówek z deklaracjami tych typów.
Witam Natknąłem się na taki oto problem korzystając z coIDE (od kilku dni używania): Zadeklarowałem sobie tablicę zmiennych globalnych wstępnie ustawionych np: [syntax=c] unsigned char tab[10]={1,2,3,4,5,6,7,8,9,0}; [/syntax] w głównej pętli programu chcę odczytać zawarte w tablicy dane i je zmodyfikować. Niestety okazuje się, że podczas odczytu w tablicy...
FCh - tak zrobie. Dzięki za pomoc. simw - o której bibliotece mówisz? tę kompilowaną -lm czy z CMSIS - arm_math.h? Mam nadzieję, że czegoś nie przekręcam :) ale wpisy: "libarm_cortexM4lf_math.a" oraz "-larm_cortexM4l_math" dołączają statyczną bibliotekę matematyczną dla STM32 i wtedy w projekcie nie musisz kompilować całych źródeł (gałęzi) tejże biblioteki....
Witam, Chciałbym napisać własny bootloader, który miałby działać podobnie jak ten z noty 2557 od ST. Bootloader chciałbym umieścić na początku pamięci FLASH, zaś aplikację we flashu z pewnym offsetem, podobnie jak w przykładzie od ST. Aplikacja jaka ma być ładowana/zmieniana przez bootloader jest już gotowa, zmodyfikowałem skrypt linkera tak aby program...
Witam serdecznie, Z racji tego, iż nigdzie nie znalazłem satysfakcjonującej odpowiedzi na moje pytanie, chciałem je zadać tutaj. Mianowicie chce wyzwalać przetwornik A/C za pomocą Timera (nie określę jakiego gdyż nie chce się koncentrować na konkretnym). Piszę póki co programy przy użyciu wspomnianej w tytule biblioteki firmy ST. Z tego co już zrozumiałem,...
Jak masz 2-3 takie dane to nie ma problemu, takie rozwiązanie jest najszybsze, ale jak masz tego więcej 20-30 i wiecej to już w kodzie zaczyna robić się śmietnik. Potem jak chcesz tego użyć w kilku plikach to jeszcze musisz potworzyć do każdej zmiennej eksporty. Chowając wszystkie dane do tablicy tworzysz zgrabną konstrukcję , eksportujesz tylko deklaracje...
Sam main.c raczej nic nie da ale proszę. /** ****************************************... * File Name : main.c * Description : Main program body ****************************************... * This notice applies to any and all portions of this file * that are not between comment...
Cześć, void dupa() { ; } int main() { dupa(); int test; //FILINFO Info[1000]; while(1) { ; } return 0; } Jeśli odkomentuję deklarację tablicy FILINFO Info , to przy wejściu do funkcji dupa(); wyskoczy wyjątek, który przenosi sterowanie do HardFault_Handler() . Dzieje się tak niezależnie...
Witam, Mam zrobiony dzielnik napięcia (18k i 4.7k) tak aby mierzyć napięcie od około 9V do 12.5V. Napisałem kod (w oparciu o przykłady), który podaje mi wartość liczbową. Jak obliczyć, jakie jest rzeczywiste napięcie? Deklaracja ADC: [syntax=c]ADC_StructInit(&ADC_InitStruct... /* Calibration procedure */ ADC_VoltageRegulatorCmd(ADC1, ENABLE); ADC_SelectCalibrationMode(ADC1,...
deklaracja zmiennych deklaracja paneli deklaracja klasy
oscyloskopy naprawa rubens kipor serwis schemat hondy accord
internet zwalnia drastycznie internet zwalnia drastycznie
Toyota Auris 1: Wyłączanie ABS przy temperaturze powyżej 10°C Jak samodzielnie sprawdzić jakość wody w studni?