... z racji, że HardFault zawsze mi się źle kojarzył, chciałem to zrobić w inny, może prostszy sposób :) Możesz zawsze sprawdzić czy argument jest w zakresie RAMu
Pomijając sensowność używania sprintf do SKOPIOWANIA stringa do jakiejś zmiennej, to błędów jest bardzo dużo. 1. Skasowałeś stronę którą chcesz zapisywać? 2. Odblokowałeś zapis do flasha? 3. Twój zapis jest dziurawy, bo jak zero będzie na nieparzystej pozycji, to pętla nie zakończy się wtedy kiedy będziesz chciał 4. Odczytujesz FlashStatus, to sprawdź...
Kolejna linijka kolejne UB- Received to jeden bajt, Ty piszesz tam 5 nadpisując inne dane. Wiem, ze Received to jeden bajt. Chodziło mi o to ze wywoła się dopiero po otrzymaniu 5 znaków. CallBack nie do tego służy. To do czego? Masz UB jako że twoja dana ma jeden bajt a printf z parametrem %s oczekuje C stringu (czyli ciągu znaków zakończonego zerem)....
Co to znaczy, że jest legalne ? Zapis '1' jest dozwolony. Każdy string ma na końcu null terminator i trzeba o tym zawsze pamiętać.
Wystarczy że w funkcji wyświetlania tekstu nie będziesz modyfikował wejściowego stringa. Czyli np. tak: if(*text == '(at)') Wyswietl(0);
Tylko co do rzeczy ma semihosting? P.S. Oczywiście powinieneś używać sscanf(), bo chcesz przerabiać gotowy string, a nie czytać ze strumienia FILE. No chyba że chcesz [; 4\/3!!
Po co stosować takie cuda? W sensie że co? strlen() to jakieś fanaberie? Nie, że fanaberia. Ale po co tworzyć CRC tylko dla stringów.
1. Jak jest zdefiniowane float32_t? 2. Literał 2.4567 jest domyślnie typu double. Użyj 2.4567f. 3. W jaki sposób odczytujesz wartość przekazywaną do funkcji? 4. W jaki sposób wykonujesz konwersję do stringa?
A wysyłanie zwykłego znaku działa? Na początek proponuje sobie podzielić pracę na etapy. 1) Konfiguracja RS232 2) Wysyłanie pojedynczego znaku 3) Wysyłanie stringa 4) Wysyłanie zmiennej 1 bitowej 5) Wysyłanie zmiennej wielo bitowej 6) Wysyłanie zmiennej jako stringa
Sprawdź najpierw pochodzenie tego zera. Najlepiej w terminalu jak Ci pisałem. Moje podejrzenie jest takie, że jak wysyłałeś przez putst() było OK, bo on eliminował zero na końcu Twojego "stringa" char dataBuff wychodząc z funkcji. To zero pojawia się w tablicy niejawnie, ale tam jest. Gdy uruchamiasz DMA nie bierzesz pod uwagę, że tablica ma rozmiar...
Zainkluduj plik nagłówkowy <string.h>, tam masz prototyp tej funkcji.
Ale jesteś świadomy tego, że w każdych przykładach od ST, niezależnie od tego czy to F1, F4, L4 czy cokolwiek innego, jest dokładnie ten sam numer VID i PID? przykład dla F1: #define USBD_VID 0x0483 #define USBD_PID 0x5740 #define USBD_LANGID_STRING 0x409 #define USBD_MANUFACTURER_STRING "STMicroelectronics" #define USBD_PRODUCT_FS_STRING...
Witam, czy komuś udało się uruchomić STM32, Keila 5 i uruchomić szablon Vector i np string w C++? Zdaję sobie sprawę z narzutu, jaki wprowadzi wykorzystanie tak wysokiego poziomu programowania na mikrokontroler. Pytanie, czy jest to na tyle stabilna implementacja, że można tego używać? Czy też z Vectoriem i stringiem są problemy i lepiej od razu przygotować...
Dodano po 7 Ale kodu wynikowego nikt nie przegląda linia po linii, zwłaszcza jeżeli linii jest kilka tysięcy. Przecież stringi widać, a nawet się wyszukuje w byle edytorze ps. kod wynikowy nie ma linii. Dodano po 8 aha, jeszcze jedno. Nie myśl przez "plik hex". Plik hex jest tylko formą przejściową, w finalnym wyrobie się stanie daną binarną
Zasadniczo nie jest to możliwe, tzn. funkcja wysyłająca wygląda dobrze, problem jest gdzieś indziej. Masz dokładnie taki program, jak pokazałeś? Jak odbierasz i wyświetlasz?
Opcja -S, o której pisałem to opcja kompilatora, do użycia w komendzie ...-gcc ..., Z tym, że tak wprost się tego raczej nie da dodać. Niestety, CubeIDE nie znam, więc od ręki nie odpowiem, jak tej opcji użyć. Dobra to po kolei :) To już znam odpowiedz na to co mnie interesowało( czyli że to jest po prostu jakiś śmieciowy rozkaz, którego procek nie...
Tych instancji to będzie około 100 i dlatego kombinuję jak zaoszczędzić trochę pamięci, bo każda z tych instancji posiada własną, unikatową nazwę w postaci stringa, więc static i constexpr nie pomogą. 4 bajty na wskaźnik to i tak lepiej niż przechowywanie całego stringa w RAM-ie
Jest to przejściówka "Konwerter CP2102 Niestety nie mam takiej pod ręką to nie obadam jaki ma pull up. Próbowałem z DATA rezystor 480ohm do 3.3V ale nie działało. To według mnie zdecydowanie zbyt niska oporność, jak na obciążenie fototranzystora w transoptorze. Spróbuj coś koło 4,7 - 15kΩ. Od biedy można by spróbować uruchomić wewnętrzny pull...
Dodając na koniec wskaźnik na ten twór to: const char * const (*string)[]; Dzięki i pozdrawiam
Chodzi o wyświetlanie Stringów przez USART? To na czas testów tylko. Jakiś pomysł?
Widząc Twoje doświadczenie to z jeden dzień przy dobrych wiatrach Ci pójdzie na wgranie gołego RTOSa a drugi dzień na napisanie tego terminalu o którym mówisz :) Gotowca raczej nie dostaniesz, ale z drugiej strony napisanie terminalu np po UARcie to nic innego jak wysłanie tego znaku zachęty po uart i oczekiwanie na komendy co jest raczej proste. W...
0. Deklaruję sobie globalnie: Na CRLF nie czekasz? Jeśli nawet ma to być łańcuch znaków to powinno byc miejsce na znak końca teksu w przeciwnym wypadku zapomnij o wykorzystaniu "string.h".
może zdefiniuj sobie dodatkowo w pliku gdbcmd komendy wyświetlające zawartości rejestrów, np. Dodano po 35 tak sobie jeszcze teraz kombinuje z Pythonem w GDB, i zrobiłem takie coś: [syntax=text]define ppp python print(f"Zawartosc rejestru GPIOB->ODR: 0x{int(gdb.parse_and_eval('((GPIO_TypeDe... end end[/syntax] wtedy komenda...
Czy nie jest przypadkiem tak, że do Twojego pliku S tring.c masz swój własny nagłówek S tring.h? Bo jeśli kompilujesz to na Windows, to niestety ten nieco ułomny system nie widzi różnicy między Twoim S tring.h a s tring.h z toolchaina, linijka "#include <string.h>" dołącza tak naprawdę Twój plik S tring.h, w którym tej definicji nie ma, no i taki...
Generalnie by użyć switcha w tej sytuacji są 2 opcje, przejście przez tę mapę (switch po kluczu) - w wypadku gdy masz dużo pamięci (większa czytelność kodu), lub funkcja hashująca - gdy tej pamięci nie masz. Z racji użycia c (sądząc po rozszerzeniu) Użyj np djb2 z http://www.cse.yorku.ca/~oz/hash.html Potem robisz: switch(hash(string)) { case wynik_hash:...
Witam, Niestety poddaje się bo nie wiem czego mi brakuje w kodzie albo co robie nie tak. Nie moge odebrac na komputerze zadnego komunikatu z plytki DEV. Kontrolka na USB - USART swieci się od RX czyli cos jest nadawane (ciagle swiatlo) ale nic nie odbieram Załączam poniższy kod w celu debuggingu: #include <string.h> #include "stm32f4xx.h"...
Ta linijka jest bez sensu. Chciałem poczekać aż pierwszą wartością w stringu do wysłania będzie 0x55 ale od razu jest więc to nie opóźnia.
Zrobiłem to bez przerwań. Program może nie działa idealnie (mam problemy z odbiorem znaków - jutro na tym się skupię), ale udaje mi się wysyłać at komendy do modułu (np. zmienić nazwę modułu, czy pin) oraz przesyłać stringi przez bluetooth na laptopa. Poniżej funkcja wysyłająca i odbierająca pojedynczy znak (w tym wypadku zrezygnowałem z bibliotek ST...
Chodzi mi o umieszczeni np: static const uint8_t myArray[] = "taki sobie string"; we FLASH ale gdy się nigdzie tego nigdzie nie użyje. Żeby kompilator umieścił to we FLASH to muszę to gdzieś użyć.
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...
Jeżeli chodzi o C++, to czy ma On jakieś wady w systemach wbudowanych? Np, jak wygląda działanie na stringach. STM nie ma MMU, więc w jaki sposób odbywa się coś takiego: [syntax=c] string txt = "Ala ma"; txt += " kota\n" [/syntax] Czy jeżeli na stringa jest malocowana pamięć to znaczy że muszę ją zwolnić? free(txt); Nie wiem czy jasno się potrafię wyraźić....
W CodeSourcery (a raczej w newlibie) nie ma dtostr() tak samo jak nie ma np. itoa(). Są inne funkcje konwertujące double/float to stringa, ale są równie rozbudowane jak sprintf() (syscalls). 4\/3!!
1. const char * const str1 = "string numer 1"; const char str2 const char* text);`.
Zaopatrzyłem się w ten kabelek . Podłączyłem stm32 . Kombinuje kombinuje i nie działa . Nie odbiera mi tego sygnału z serial porta . W aplikacji stma odbiera chary , a ja wysyłam mu stringa to nie działa i próbuje chara też nie działa . Nie wiem co mam robić .
Szczególnie nadawanie jest problematyczne, ponieważ nie można mieć non-stop włączonego przerwania, chyba że naprawdę chcesz NON-STOP wysyłać znaki. a no właśnie, o tym nie wiedziałem ;) a chyba mniej więcej tak rozwiązałem to w przed ostatnim poście, po prostu wyłączając to przerwanie jak bufor jest pusty No niestety jest trudniejsze ;) ale tak jest...
Tak więc nie potrafię tego rozwiązać. Jeśli ktoś tu trafił bo szukał odpowiedzi na ten temat, to polecam zrobić coś takiego : Lepiej nie. Nie dość, że zwracasz wskaźnik na znienną zaalokowaną na stosie, to jeszcze piszesz po pamięci poza zmienną.
Niestety nie wiem o którą informację na początku skryptu linkera chodzi. :| O tą? * description: * Linker script for STM32F4xxxG chip (1MB Flash, 112kB SRAM, 16kB aux SRAM, * 64kB CCM RAM and 4kB backup SRAM). Only main block o SRAM (112kB) is used. Poza tym Twoja szklana kula działa wyśmienicie. :) Po wystąpieniu przerwania uint8_t...
Kolega ma problemy z podstawami C. Z jakich elementów składa się string ? Nie odróżniasz zmiennych od wskaźników i tego co chcesz uzyskać, rzutowanie w ogóle bezsensu. Jak odpowiesz na pierwsze pytanie może przejdziemy dalej. Dlaczego nie chcesz użyć itoa jeśli w ogóle posiadasz tą funkcję w stdlib ? Musisz przygotować string z wynikiem temperatury,...
Podłączenie programatora UART i wykonanie flash read nie zepsuje chipa, ale trzeba by było wlutować RX i TX aby poprawić ślady na płytce. Nie widzę żadnych padów programisty na płytce, twardo. Czy chcesz spróbować? zrobić zrzut oprogramowania bkWriter? Dzięki, spróbuję jak będę miał czas na rozłożenie rzeczy i podpięcie wszystkiego. Te zdjęcia zostały...
echh jednak Freddie miał rację :) http://gcc.gnu.org/onlinedocs/cpp/Standa... __DATE__ __TIME__ [syntax=c]string ver = __DATE__ + __TIME__; string eever = read_ee(123421); if(ver != eever) send_ee(wskaźnik_na_kupę_danych);[/synta... Kod oczywiście nie zadziała ale you got an idea!
[syntax=c]#include <stdint.h> #include <unistd.h> #include <fcntl.h> #include <stdio.h> #include <string.h> #include <math.h> double M2F(char x) { return 440.0 * pow(2.0, ((double)x - 69.0) / 12.0); } int main(int argc, char *argv[]){ unsigned char midi[256*1024]; int maximum = 0; if(argc<2) { printf("MIDI (Type...
Witam, Panowie, konkretne pytanie: Czy opłaca się stosować kopiowanie pamięci przy użyciu DMA zamiast memcpy? System jest wielowątkowy na FreeRTOS. Mam bardzo dużo kopiowania pamięci średnio po 15 bajtów. Wątek mógłby wstrzymać pracę i czekać na semafor z przerwania. Czy to sie jednak opłaca wydajnościowo? Przy okazji: Czy da się zmusić kompilator,...
Nie strstr() zwraca wszystko co jest za wyszukanym ciągiem strstf() zwraca indeks w wyszukianym ciągu. Eee... Nie... http://www.cplusplus.com/reference/cstri... strstr() zwraca wskaźnik na wyszukany ciąg. Jeśli chcesz jego indeks to nic prostszego - wystarczy odjąć wynik tej funkcji (pod warunkiem że nie jest to NULL) od adresu ciągu w którym...
Cześć, Jestem w trakcie tworzenia małego projektu. Do obsługi 1wire potrzebuję korzystać z przerwania na PC0. Siedzę nad tym dłuższy kawałek czasu i już naprawdę zgłupiłem. Są dwa kody - jeden ma skonfigurowane przerwania z PC0, drugi z PC1. Dlaczego ten z PC1 działa poprawnie, ten z PC0 nie? Sprawdziłem PB0, również nie działa poprawnie. Wykorzystuję...
PS. Mam nadzieję, że nie rażę nikogo zwrotem "kolego". Szanowny kolego gaskoin. Najwyraźniej my nie czytamy swoich postów na wzajem. Szanowni koledzy. Problem mam z wysłaniem z kompa i odebraniem w uP. Bo nie wiem jak zrobić poprawnie jedno i drugie. Padło pytanie: jak to wysyłam? Łańcuch czy coś.... otóż nie wiem - bo z tym mam też problem. Jeżeli...
Jednak dane nadawane przez EEPROM się spóźniają powinny być zatrzaskiwane na zboczu narastającym a one na narastającym się dopiero zmieniają jakby miały być zatrzaskiwane na opadającym choć wyraźnie w manualu jest napisane że pracuje przy narastającym. Coś źle doczytałeś The READ instruction outputs the serial data of the addressed memory location...
Dzień dobry Koledzy. Piszę kod w C#.NETMF dla STM32F429I-DISC1. Próbuję zrealizować takie działanie w którym wykorzystuję metody klasy UIElement. Jedna z metod obsługuje zdarzenie dotknięcia panelu dotykowego. Druga z metod ("Invalidate();") pozwala aktualizować treść wyświetlacza. Do tego mam timer który co sekundę generuje przerwanie inkrementujące...
Providera? Nie rozumiem. Zawsze używałem Zylin, odkąd przeczytałem o tym w tutorialu Freddiego. ;) Program na pewno wgrywa się prawidłowo. Sprawdziłem ST-LINK Utility na Windows. Chyba masz rację z tymi symbolami debugowania. Ale to jest dziwne bo mam -g przy kompilacji: /home/(...)/arm/gcc-arm-none-eab... -mcpu=cortex-m3...
Witajcie, mam problem z HID-em w STM32F103VB. Chce wysłać więcej bajtów niż, jeden tak jak jest to w przykładach do stm-a. Interesuje mnie transfer z PC->STM. Mój problem polega na tym, że po skonfigurowaniu mikro kontrolera i próbie wysłania pakietu za pomocą SimpleHIDwrite, program wypisuje mi komunikat: "WRITE ERROR: Urządzenie dołączone do komputera...
Ręce opadają... Zamiast unsigned char bufor .. i nie doczytał!!! ...a stoi jak byk void LCD_WriteText(unsigned char * text) { while(*text) LCD_WriteData(*text++); } , że znacznikiem końca stringu jest 0. Procedura będzie wyświetlać do momentu aż gdzieś w pamięci przypadkiem trafi na 0. Dopisz if (KBD_ReadKey() != 0x00 ){ *wsk=KBD_ReadKey(); *wsk++;...
Zaprojektowałem i zbudowałem płytkę wyposażoną w procesor STM32F107RCT6 oraz dekoder popularny MP3 VS1003. Jest to kolejna wersja starszego projektu na PIC32, który przenoszę na nowy mikrokontroler. Większa część projektu PCB pochodzi ze starej wersji. Do komunikacji z VS1003 używam popularnej biblioteki Andy'ego Karpova, którą już wcześniej przeportowałem...
O dzięki, przeoczyłem to. Zmniejszyłem opóźnienie o 1/3 bo F0 taktuje z 48MHz a F1 z 72MHz, ale nadal nic się nie wyświetla :( Dodano po 13 Z kolei na tym kodzie wyświetla znak zapytania:/ Niezależnie od tego co bym chciał aby wyświetlił. main: [syntax=c]#include "lcd_hd44780_lib.h" int main(void) { lcd_init(); lcd_writecommand(HD44780_CLEAR); while(1)...
Chyba masz dwa wyjścia, ale potestuj bo teraz nie jestem pewien. zrobić printf() z parametrem %5.2f dla liczby jak twoja np. 12.00. albo zamiast sprintf() użyj snprintf() gdzie drugi parametr (n) ustaw zależnie od tego ile cyfr chcesz skopiować i wyświetlać. int snprintf ( char * s, size_t n, const char * format, ... ); Write formatted output to sized...
witam Mam prosty projekt (eclipse,st2link,openOCD), miganie diodami i przerwania od SysTick, projekt działa ok, normlanie mozna debugować itp. Nastepnie do tego projektu dołożyłem moduł FatFS. Projekt sie kompiluje ale przy debugu jest problem, po załadowaniu pliku, debuger nie zatrzymuje się na pierwszej funkcji w main jak to mialo miejsce w podstawowym...
Po pierwsze - łańcuch 3 znakowy zajmuje w pamięci CZTERY znaki (bo jest jeszcze '\0' na końcu). Po drugie - przejrzyj naprawdę ten dokument który wskazałem, znajdziesz w nim np coś takiego: 8.1 asctime—format time as string 8.3 ctime—convert time to local and format as string 8.8 strftime—convert date and time to a formatted string...
Mnie właśnie przydałby się sam scheduler, bo koncepcja działania peryferiów często bardzo zależy od użytego układu i samego projektu. Może powinieneś rozdzielić ten projekt na dwa, jeden to czysty scheduler i drugi projekt to cały system który z kolei jest oparty o ten pierwszy projekt. Zauważ, że im bardziej rozbudowany będzie ten projekt, tym trudniej...
(...) W ogóle przedstawiony problem jest bez sensu. Po co w ogóle autorowi taka konstrukcja txt To jest rzeczywiście bez sensu ale pierwotnie funkcja modyfikowała (-32 od każdego znaku) stringa przed wyświetleniem a txt[0] = 0 powstało po uproszczeniach funkcji w celu znalezienia problemu.
Dziękuję bardzo za sugestie. Rzeczywiście, jak analizuję Pana wpis widzę, ze to co robię to trochę bez sensu. Oczyswiście zastosuję się do tych rad. Jeszcze w celach edukacyjnych wklejam resztę kodu. Byłbym wdzięczny gdyby ktoś wskazał na czym polegają błędy, zeby byc bardziej świadomy na przyszłość. main.c [syntax=c]#include "stm32f103xb.h" #include...
Witam wszystkich. Uzywam Eclipse + OpenOCD (0.9.0) + GCC. Do tej pory używałem STM32F103 (Cortex-M3), a teraz przesiadłem się na STM32F373 (Cortex-M4). Wziąłem ze starego programu skrypt linkera, startup, vectors.c i posklejałem do kupy odpowiednio je modyfikując. Program generalnie odpala się, mogę sterować GPIO. Następnie spróbowałem uruchomić SysTicka....
im using samle from here http://iteadstudio.com/produce/enc28j60-... just uncoment some string in ENC28J60.h it looks like #define ENC28J60_CS GPIO_Pin_4 #define ENC28J60_CSL() GPIOA->BRR = ENC28J60_CS; #define ENC28J60_CSH() GPIOA->BSRR = ENC28J60_CS main function now main{ ENC28J60_CSL(); Delay(25000); ENC28J60_CSH() }
moduł kamery VGA za 8 zł, moduł Wi-fi kosztuje obecnie 4-10 zł, a płytka z STM32 to wydatek ok. 25 zł. Zdaje się tylko to ostatnie (moduł z stm32) można kupić za ok25zł przez każdego w przeciętnym sklepie elektronicznym choć i tak jest to na prawdę niewiele. Raczej znam co najmniej kilka sklepów z elektroniką i jeszcze kilka tyg temu moduły z większymi...
Witam, zajmuję cię projektem na uczelnie. Na razie próbuje poruszać serwami Dynamixel RX-64 przez CAN. Używam przejściówki CAN->RS-485. Aby poruszyć serwem wystaczy jako identyfikator wysłać wartość (0x100 << 21) oraz jako dane nową pozycję serwa. Problem polega na tym, że serwo w ogóle nie reaguje. Używam bibliotek firmy ST i udało mi się...
Poniżej program do obsługi wyświetlacza TFT: Interesuje mnie dlaczego funkcja LCD_Clear(WHITE) na STM32 działa wolniej niż na Atmedze32 z kwarcem 16MHz. Wydawało mi się że powinno czyścić ekran szybciej na STM32 a już na pewno nie wolniej. Tylko nie zwracajcie mi uwagi na temat pętli opóźniającej;) ponieważ i tak nie jest wykorzystywana w LCD_Clear....
Pytanie proste. Mam zdefiniowany String we flashu. Jak dostać się do każdego znaku z osobna? Jak chcę coś wydobyć z pamięci to mi pokazuje co czwarty znak. Przesunięcie bitowe typu "adres << 8" też mi nie chce działać. Robię parser a ponieważ string ładuję do flasha funkcja strtok nie chce mi działać. a[0] = (*(vu16*) Addr);...
Witam, Podłącze się pod watek. Korzystam z tego samego kodu ze strony: http://www.stm32.eu/node/66 Jedyna zmiana w kodzie jest WakeUP_PIN. Procek STM32F103VET6. Mam następujący problem: Po uruchomieniu softu, w pliku boot.c w funckji boot_force jest warunek: [syntax=c]if(MSM_GetNumInstalledDevices(... { boot_process(MSM_GetDeviceByID(0)->strin...
Witam Zmagam się z akcelerometrem ADXL345 + STM32F103. Połączenie po SPI. Otrzymuję na wyjściu wartość przyśpieszenia w kodzie U2. Zapisana jest na 13 bitach, w dwóch rejestrach 8 bitowych. Po odebraniu najbardziej znaczące przesuwam << 8 i łączę z mniej znaczącymi. Problem polega na tym, że wciąż otrzymuję wartość dodatnią, mimo że na najbardziej...
Dzięki za odpowiedź. Ok, w takim razie wyjdźmy od przykładu Show_Char_7, który dostałem do płytki testowej i który wydaje się działać. Tak wygląda lcd.h: [syntax=c] #ifndef __lcd_h__ #define __lcd_h__ #include "stm32f10x.h" extern unsigned char const ascii_8x16[]; #define Bank1_LCD_D ((uint32_t)0x60020000) //disp Data ram #define Bank1_LCD_C ((uint32_t)0x60000000)...
USART2 śmiga na 256kb. StringIndex jest zerowany w pętli głównej po skopiowaniu zawartości Stringnew do innej tablicy. Nigdzie indziej nie ma odwołania do StringIndex... A dlaczego USART2 nie może nadawać i innym momencie? Co prawna nie nadaje, jest tylko to, co widać na terminalu.
Słuszna uwaga. Pracuję nad bootloaderem. Narazie widzę, że procek w ogóle działa ponieważ Szukam sposobu, żeby wgrać program.
Mam ta samą płytkę. Może pobaw się tak jak ja: wysył przez DMA, odbiór w przerwaniu oto co starczy: [syntax=c]void SYSTEM_DMAConfig() { DMA_InitTypeDef DMA_InitStructure; DMA_DeInit(DMA1_Channel4); DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)(&USART1->DR); DMA_InitStructure.DMA_MemoryBaseAddr = (u32)SYSTEM_USART1BufferTx; DMA_InitStructure.DMA_DIR...
problem na razie nierozwiązany.. wyłączyłem przerwania w ogóle, kod (fragmenty )wygląda teraz tak: [syntax=c] extern struct message* RX_que; extern volatile uint8_t RX_que_ptr; extern volatile uint8_t RX_que_cnt; struct message { struct message* next; struct message* prev; uint8_t* content; uint16_t size; }; uint8_t add_to_que (struct message** que_ptr,...
Witam, Próbuję zrealizować nadawanie i odbiór po magistrali I2C - STM32F01RET6 z okładem BNO055. Program zawiesza się na pętlach sprawdzających stan zajętości magistrali lub wygenerowanie START. Jak nie zawiesi się na pętlach to odczytuje jakieś dane ale tylko dla odczytów po 1 bajcie. W przypadku odczytu ilości bajtów > 1 to odczytuje tylko jeden...
Mam problem z wyświetlaniem współrzędnych dotyku za pomocą funkcji getDisplayPoint() z GLCD dla zestawu HY_mini . Walczę z tym już kilka dni i nic . Do konwersji z liczby na string używam funkcji itoa() i po podstawieniu konkretnej liczby funkcja GUI_Text wyświetla ja poprawnie . Krzyż wskaźnika rysuje dokładnie w punkcie dotyku funkcją DrawCross(display.x,display.y);...
A jest ktoś na tym forum ktoś komu udało się uruchomić ten sterownik na tym procku? Wybaczcie odkop. Mnie udało się uruchomić LCD na bibliotekach z tego linku: http://atmegan.blogspot.com/2012/10/stm3... Kod jest "bardzo" skomplikowany: [syntax=c]#include <stddef.h> #include <stdlib.h> #include <string.h>...
Freddie rozumiem, ze korzystasz z gcc i nieużywane sekcje wyrzuciłeś? No raczej (; Ja to rozwiązanie stosowałem jeszcze z TrueStudio i poza zwiększeniem rozmiaru o tego stringa nic mi nie "urosło" ;] Musiało Ci coś brakować do pełnego działania programu (; W końcu analiza takiego zakręconego stringa nie jest do zrobienia w 2 linijkach (chyba że obydwie...
To inaczej: nie wiem jak to się ma do lowpower, ale widziaiłem porównania gdzie taki C++ i zastosowanie algorithm dawało mniejszy kod niż C i for. Sam robiłem nawet na AVR takie porównania i napisanie takiego automatu skończonego w C++ (polimorficznie, używając state machine pattern) dawało w sumie 4 bajty narzutu w zamian za ogrom czytelności. Czy...
Ok, nie string.h, dodaję misc.h który definiuje te rodzaje zmiennych jak uint8_t itd. Dodano po 56 to jest w stdint, ok, zawsze zapominam. misc.h tez definiuje te zmienne. Dodano po 2 Taka pierdółka a ile czasu zajęła:) Ale teraz będę wiedział jak się to robi, dzięki. Dodano po 19 W jakimś pliku *.c? No mam czasem kłopot ze zrozumieniem filozofii plikowej...
Wracam do tematu. Usunąłem IAD z części dla HID bo jest faktycznie niepotrzebny. Dodałem plik *.inf jak poniżej: ; ; STMicroelectronics Comunication Device Class driver instalation file ; (C)2006 Copyright STMicroelectronics ; i w efekcie urządzenie Composit jest wykrywane poprawnie, driver dla urządzenia CDC (ComPort) instaluje się poprawnie, driver...
Racja, przeciez to logiczne. Po dodaniu najzwyklejszego opoznienia printf wreszcie dziala :) Chcialem jeszcze dopisac obsluge operatora \n wiec zmodyfikowalem funkcje __vfprintf w taki sposob jednak nie dziala: static int __vfprintf_(printf_file_t *stream, const char *format, va_list arg) { char character; stream->length=0; // clear...
Witam Wysyłam przykładowe ramki z terminala do STM32 przez driver MAX3485 i cały czas sypie mi błędami w odpowiedziach. Nie mam też pewności czy to co wysyłam z terminala do STM32 dociera bez błędów. Poniżej fragment kodu oraz zrzut ekranu. Powinienem otrzymać to co wysyłam. Czarny kolor to odebrane ramki. Proszę o pomoc http://obrazki.elektroda.pl/7456669500_1...
Witam wszystkich Chciałbym się poradzić ponieważ mam problem z komunikacją USART. W czasie wysyłania stringów do terminala komputer się resetuje, pojawia się blue screen oraz komunikat problem z multiple_irp_complete_request. Sytuacja powstaje tylko w przypadku gdy komunikuję się poprzez przejściówkę USB-USART, gdy korzystam z modułu bluetooth wszystko...
liczba=atoi(nrfRX To jest tzw Undefined Behaviour. I jest to błąd bardzo poważny. Wytłumaczę Ci, co to robi. Bierze jeden bajt (zakładam że typ tego jest uint8_t []) i konwertuje do wskaźnika do char. Następnie to na co wskazuje ten wskaźnik (a będzie on wskazywać na jakiś adres w zakresie 0x00:0xff (czyli na tablice wektorów)) jest traktowane jako...
Witam Mam bibliotekę obsługującą LCD, i teraz chciałbym dopisać do niej funkcje wysyłającą na LCD wartość jakiejś zmiennej. Mam to zamiar zrobić tak, że konwertuje int na char[], a potem wysyłam jako string (czyli standardowo). Mam natomiast taki problem, w żadnej bibliotece u mnie nie mam definicji takiej funkcji, próbowałem już z itoa, sprintf oraz...
Zastosowałem się do Twoich wskazówek, porzuciłem HID na rzecz właśnie vendor specific. Posprzątałem także ConfigDescriptor i teraz wygląda tak: [syntax=c]const uint8_t ConfigDescriptor[SIZ_CONFIG_DESC] = { 0x09, // bLength: Configuration Descriptor size USB_CONFIGURATION_DESCRIPTOR_TYPE,// bDescriptorType: Configuration SIZ_CONFIG_DESC, // wTotalLength:...
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),...
Przepraszam za pomyłkę. Funkcja sprinf zwraca liczbę 0xffff ( 16 - bitową) pomimo że jako argumentu używam zmiennej long int i w formacje danych funkcji użyłem "%ld".
GPIOA->BSRR |= GPIO_BSRR_BS5; To nie źródło problemu ale tak się tego rejestru nie używa. To jest write only rejestr czyli tylko samo przypisanie Zgadza się, dzięki :) Co do głównego problemu, punkt 1. Użyj debugera okazał się bardzo pomocny :) Założyłem, że skopałem coś w Makefile (np. brakuje jakiejś flagi) i podczas debugowania nic ciekawego...
Musisz jeszcze zmodyfikować plik stm32_eth.c - w linijce ~480 (znajdziesz po stringu "(at)defgroup PHY_status_register") należy dopisać adresy rejestrów używanych do komunikacji z Twoim układem PHY. Poniżej masz fragment mojego pliku stm32_eth: [syntax=c] /** (at)defgroup PHY_status_register * (at){ */ /* The PHY status register value change from a...
Cześć! Po kilku małych projektach opartych na Nucleo i Discovery postanowiłem wykonać trochę bardziej skomplikowany i praktyczny projekt - odtwarzacz plików WAV z karty SD i... zwracam się do Was z prośbą o pomoc 😄 Projekt oparty jest o STM32F103RCT6 do którego podłączone jest gniazdo kart microSD i DAC (PCM1780). Za pomocą FatFs odczytuję plik WAV...
.A wszysko się zaczęło od itoa() .... Jak przyjdzie czas na na inne uC, to zobaczysz że nie ma takich wynalazków jak itoa();. Na przykład pisząc pod STM32 mogę się oprzeć tylko na tych podstawowych funkcjach zdefiniowanych w standardzie C. (non-standard function) Przykładowa konwersja integer na string z 12-bitowego przetwornika: char Wynik[11]="...
Witam, W celu zrealizowania komunikacji z DS18S20 skorzystałem z następujących kodów dostępnych na forum: Kod od freddiego do konfiguracji GPIO: [syntax=c] #define GPIO_CRx_MODE_CNF_mask 0xf //4 bity - 2 bity na mode i 2 bity na configurację /*-----------------MODE-----------------... #define GPIO_CRx_MODE_IN_value 0x0 #define GPIO_CRx_MODE_OUT_10M_value...
Witam. Mam zadeklarowaną pewną tablicę charów - char tab[11], do której wpisuję tekst 10-cio znakowy. Założeniem moim jest, że gdy wprowadzam tekst który ma np 5 znaków to żeby ten tekst był poprawnie obsługiwany, na kolejnej pozycji wstawiam '\0'. Problem w tym, że to zero nie trwa tam zbyt długo i w niewiadomym mi momencie procesor zmienia ten znak...
Rozpatruję układ, który umożliwi odczyt napięcia na każdym z akumulatorów podłączonych do UPSa w łańcuch składający się z okło 30-40, a nawet 50szt akumulatorów 12V. Odczyt były podczas rozładowania z zapisem na kartę pamięci. Zakładając, że dla każdego akumulatora zrobię dzielnik, to rozdzielczość będzie malała z każdym akumulatorem. Wyniosła by on...
Witam Staram się nawiązać komunikację pomiędzy dwoma płytkami STM32F0 przy użyciu modułów RFM73 - jednakże zatrzymałem się na etapie modyfikowania bibliotek dedykowanych dla modułu RFM70 i STM32F10. Problem polega na tym, że nie dochodzi do komunikacji i nie potrafię znaleźć przyczyny. Zamieszczam kody: RFM70.h [syntax=C] /* ****************************************...
Cześć wszystkim, Zwracam się do Was z prośbą o pomoc w rozwiązaniu problemu z poprawnym wysyłaniem stringa po UART za pomocą przerwania nadawczego. Męczę, się z tym już któryś dzień, czytam reference manuala, i cały czas nie udało mi się tego problemu rozwiązać. Ogólnie rzecz biorąc funkcje do buforowania zdarzeń odbiorczych/nadawczych są sprawdzone...
Czy znane są wam inne skuteczne algorytmy pomiaru amplitudy PWM? Pracuje na STM32F072CB i tylko taki mam do dyspozycji wedle założeń projektu więc przesiadką choćby na F1 nie wchodzi w grę... Do tego celu jest więcej niż wystarczający. Metoda pomiaru jest dobra. Dodatkowe pytania: 1. Czy oglądałeś ten przebieg na oscyloskopie? Może po prostu nie jest...
Witam wszystkich. Korzystając z okazji życzę wszystkim szczęśliwego nowego roku. Przechodząc do problemu, z którym nie potrafię sobie poradzić to posiadam zestaw HY-Mini STM32 i potrzebuję napisać obsługę kart sd przez sdio, a konkretnie chcę zapisywać plik txt (jeśli jest to możliwe lub inny możliwy do odczytania na komputerze) na kartę pamięci. W...
Męczę bibliotekę USB z ST. I zaciąłem się w jednym miejscu, chciałem przestawić długość danych z 8 bitów na 16 bitów jednak wydaje mi się że biblioteka nie bardzo chce z takimi danymi współpracować. Może miał ktoś z was podobną zagwozdkę? A może ktoś będzie umiał mi pomóc? Na razie próbowałem zmienić rozmiar wysyłanych danych przez edycję Deskryptorów...
U16_F to też jakiś string formatujący, szukałem w googlach. Jak wspomniałem za pierwszym wywołaniem funkcja działa, dopiero za drugim jest hard fault. [Edit] Sory Freddie problemem był faktycznie stos - w tym projekcie korzystam z freeRTOS. Zwiększyłem stos dla tasku 4 krotnie i nie ma już faulta. Dzięki za zainteresowanie.
Zmodyfikowałem przykład dostarczony od ST Use FPU nadal milczy zastanawiam się czy procesor nie jest uszkodzony. Kolejne pytanie jakie się pojawiło dlaczego Timer1 działa z prędkością 168mhz powinno być 84Mhz(przy 84mhz odmierzając 10s przerwanie pojawia się po 5 ). [syntax=c] #include "stm32f4_discovery.h" #include <stdio.h> #include <string.h>...
stm32 string flash stm32 usart string growat string
wymiana tulei osłona obiektywu syrena kondensator
Słabe kręcenie rozrusznika - przyczyny i diagnostyka Fiat Grande Punto 1.4 8V - Przyczyny braku rozruchu