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...
https://obrazki.elektroda.pl/8808596700_... Pokażę tu jak łatwo uruchomić MAX31855 z Arduino a potem omówię jego protokół komunikacji. MAX31855 oferuje 14-bitowy pomiar temperatury z zakresu zależnego od użytej sondy, od -270°C aż do 1800°C. MAX31855 oferuje prosty protokół komunikacji oparty o SPI, zasadniczo odczytujemy z niego tylko...
Rzeczywiście, ta metoda nadaje się znacznie więcej niż dla Wemos D1, nie chciałem nic takiego sugerować, po prostu na Wemos D1 będzie kilka tematów stąd taki tytuł. Tutaj jest nieco więcej szczegółów: https://github.com/JAndrassy/ArduinoOTA ArduinoOTA wspiera: - classic ATmega AVR with at least 64 kB of flash (Arduino Mega, MegaCore MCUs, MightyCore...
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ę...
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ć...
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)...
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ć....
Korzystam z tego [url=http://www.tme.eu/pl/details/wsh-47... RS485 bazującego na układzie SP3485 ([url=http://www.waveshare.com/w/upload/... a nie jak pisałem MAX3485. Wyprowadzenia /RE oraz DE odpowiadające za kierunek transmisji są ze sobą połączone. Wykorzystuje zestaw...
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);...
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() }
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:...
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 Mam pewien problem - obstawiam że banalny ale nie mogę znaleść rozwiązania od 2 dni ;-( Otóż mam czujnika MEMS z którego zbieram dane (najlepiej ok 256 pomiarów z jednej osi) i chcę je wgrać na kartę SD. Niestety coś jest nie tak bo nie działa to dobrze. tzn działa gdy danych jest mało np: MEMS1_to_SDCard (50) oraz char tText_x[500]; natomiast...
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...
.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 ramach eksperymentu oraz wstępu do dalszych projektów, nagrałem kilka minut ruchu w sieci CAN podczas jazdy samochodem. Nagrałem to modułem na STM32 po SocketCAN. Teraz próbuję to nagranie przechwycić modułem na Atmega328 (16MHz) z MCP2515. Używam do tego bibliotek Arduino z https://github.com/coryjfowler/MCP_CAN_l... Wgrałem standardowy przykład...
Zmieniłem program i dodałem opóźnienia. Tak teraz wygląda funkcja wysyłająca dane (i grupujące je w bloki po 250 bajtów) w STM32: [syntax=c]#define MAX_TRANSFER = 250[/syntax] [syntax=c]void wyslijDane ( uint8_t *wskaznik_poczatku_danych, uint8_t *wskaznik_konca_danych) { uint32_t dlugosc_danych; //okresla liczbe danych do przeslania int calkowite_transfery...
Witam Mam problem z uruchomieniem USB w trybie HID. Oczywiście próbowałem zaprzęgnąć przykład od STM'a. Niestety bez skutku. Zasięgnąłem więc do manuala, straszna bieda i kiepsko opisane. Przeanalizowałem kod od STM'a i spróbowałem zrobić to u siebie. Niestety nic to nie dało. Szukałem w internecie i znalazłem przykład od KEILa. Niestety tak samo zakończyło...
Tak wygląda cała moja biblioteka: [syntax=c] #include "stm32f10x.h" #include "clock.h" #include "t6963c.h" //--------------------------------------... // Graphic LCD with Toshiba T6963 controller // Copyright (c) Radoslaw Kwiecien, 2007r // http://en.radzio.dxp.pl/t6963/ // Compiler : avr-gcc //--------------------------------------...
Zainkluduj plik nagłówkowy <string.h>, tam masz prototyp tej funkcji.
Witam, otóż zasilam owy wyświetlacz napięciem ±3.3V, a także stany logiczne są na tym poziomie. Pin kontrastu jest podpięty bezpośrednio do masy, kontrast wizualnie wydaje się być dobrany idealnie. I problem w tym, że pixele bardzo wolno się zapalają.(wyszło mi ok. ~300ms na pełne zaświecenie pixela) Czy jest to jest maksimum wyświetlacza, czy...
1. C# ma inne stringi niż C. I zrobienie mainport.Write("DAC"); wyśle tylko 3 znaki a nie cztery jak C oczekuje. Tak że strcmp w C ma UB. bo to co jest odebrane nie jest C stringiem. Dodatkowo pokaż prawdziwy kod, bo masz złą ilość nawiasów w C#. Możesz: 1. Dodać zero w kodzie C 2. Dodać zer w kodzie C# np [syntax=csharp] SerialPort sp = new SerialPort("com12",...
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ć.
Thank you for the explanation. I want to better understand your algorithm. Can you please upload these files?: #include <unistd.h> #include <fcntl.h> #include <string.h>
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!!
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...
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...
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)....
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...
To dalej nie jest dobry kod. Co, wg Ciebie, sprawdza poniższy warunek? Zamiast zerować bufor, zapewne wystaczy poprawnie sprawdzać długość. Zwracając message przez wartość kopiujesz ją jeszcze raz.
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ź...
[syntax=c]#include <string.h> ... memcpy(¤tFont, Font, sizeof(currentFont));[/syntax] Tak czy siak nie jest to kopiowanie do niczego potrzebne - wystarczy sobie gdzieś zapisać wartość Font (wskaźnik) i tego używać zamiast currentFont.
Jakakolwiek zmiana string literals (u Ciebie to "Why!") w C to undefined behavior. Spróbuj tak: [syntax=c] void lcd_print(int x, int y, char* txt) { txt[0] = 0; // tutaj HardFault } main() { char str[] = "Why not ;)"; lcd_print(0,0,str); } [/syntax]
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...
Występuje wyjątek bo nastepuje dostęp RW do pamięci flash ktora jest tylko do odczytu a wszystkie stałe umieszczane są bezpośrednio we flash. Najprościej do funkcji dodać jeszcze jeden argument ze wskaźnikiem na bufor wyjściowy. [syntax=c]char *STRING_DeleteStr(char * dst, const char *string, const char *del, u8 mode)[/syntax]
OK, chyba rozwiązałem problem. Na szybko zastosowałem taki myk: [syntax=csharp]private void DataRecievedHandler(object sender, SerialDataReceivedEventArgs e) { int BytesToRead = port.BytesToRead; byte[] buff = new byte[BytesToRead]; port.Read(buff, 0, BytesToRead); //string recString = System.Text.Encoding.ASCII.GetString(buf... string recString = string.Empty;...
Dzięki za schemat widziałem jakieś na chińskich stronach, ale mi się nie udało tego ściągnąć, bez logowania. Jeśli chodzi o JTAG to jeśli udałoby się go uruchomić to mógłby być przydatny. Ale też na początek prostsze może wydawać się przetestowanie tego SERDB po I2C po pinach UARTU, który też daje dostęp do rejestrów RIU. Więc możnaby je monitorować...
Witam. Szkole się w programowaniu zacnych STM32 i od razu na poczatku mam problem z funkcja printf(); Po wywołaniu tej funkcji procesor się zawiesza. Mam zrobiony proste nadawanie i odbieranie danych przez UART. Używam Keila MDK ARM V5 biblioteki HAL wygenerowane w STM32CUBEMX. Korzystam z płytki Kamami Zl27ARM. Na razie chcę uzyskać następujące efekty:...
Dzień dobry, Napisałem sobie program (korzystam z: STM32CubeMX oraz Atolli TrueStudio, mam BluePill STM32F103C8, port szeregowy podłączony za pomocą UART2 oraz konwertera FT232RL (ustawionego na 3,3V - bo w dokumentacji wyczytałem że te wejścia nie tolerują 5V) do portu USB, gdzie łączę się za pomocą BrayTerminal). Na BluePill mam wbudowaną jedną diodę,...
Witam, próbuje znaleźć dobry sposób na pomiar amplitudy impulsu PWM. Zakres zmian wypełnienia 5 % do 95 %. Czestotliwosc sygnalu sie nie zmienia i wynosi 1 KHz. Mój pomysł polega na tym, że po wychwyceniu zbocza narastajacego odpalam ( w przerwaniu od input capture) timer ktory co 10 us ( 5 % z 1 ms to 50 us) trigeruje pomiar ADC poprzez DMA (czyli...
Dodając na koniec wskaźnik na ten twór to: const char * const (*string)[]; Dzięki i pozdrawiam
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)...
Witam, modyfikuję bibliotekę pod klawiaturę matrycową 4x4. W funkcji "Keypad4x4_ChangeColomn" dla określonego warunku należy zmieniać ustawienia pinów z PushPull na Oped Drain. Wszystko funkcjonuje dobrze : dla pierwszego warunku "if(colNum_0_to_3==0)" bity w rejestrze zostają ustawione poprawnie, jednak dla kolejnych warunków pozostają one bez zmian,...
1. const char * const str1 = "string numer 1"; const char str2 const char* text);`.
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ć.
Witam, Mam problem z nawiązaniem komunikacji między dwoma zestawami STM32F103ZET6+nRF24L01. Bazowałem na informacjach z tej strony: "[url=http://maniacbug.github.io/RF24Net... Ściągnąłem odpowiednie pliki z klasami RF24 i RF24Network, oraz klasą SPI(wykorzystywana przez poprzednie klasy), przerobiłem je pod STM32, po czym spróbowałem...
Introduction Of Service Robot Fundamentals Of Service Robot As a kind of semi-autonomous or fully self-help robot, service robots are able to perform useful service work for human beings, such as carrying, cleaning, and rescue. As service robots gradually enter the social life of people, they are now widely used in public places such as exhibition halls,...
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>...
No tak to pominąłem. W tablicy są liczby. Dokładnie to typ u32. Choć wystarczy informacja o liczbowym typie. Może skorzystam i dopiszę coś jeszcze. Otóż program realterm nie jest dla mnie dobrze znany więc opisze jakie czynności zamierzam wykonać. Wysyłam z uP dane do kompa przez BTM222 i odbieram aplikacja realterm. Dane odebrane aplikacja a wysłane...
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...
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...
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...
Świetna edukacja. Napisz od razu odpowiedź na pytanie "czemu we flash zapisuje się tylko >to jest test zapisywania w pamięci flash<, a nie cały string >to jest test zapisywania w pamięci flash 1234567890<?".
Nie, że fanaberia. Ale po co tworzyć CRC tylko dla stringów. Nie rozumiem. W moim przypadku ten string to będzie zestaw zmiennych liczbowych, które wysyłam do PC. Zmienne będą oddzielone znakiem średnika. Myślę, że CRC jest właściwym rozwiązaniem, żeby zabezpieczyć się przed błędami w odczytanych danych? Chyba, że masz na myśli coś innego. CRC dla...
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,...
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!
Witam. Mam taki problem iż wskazania kalkulatorów online i STM32 nie pokrywają się. 0x4C11DB7 [syntax=c] char Tmp1[15]=""; uint32_t CRC32=0; RCC->AHB1ENR |= RCC_AHB1ENR_CRCEN; CRC->CR |=CRC_CR_RESET ; CRC->DR=__rbit(0x1); CRC->DR=__rbit(0x2); CRC->DR=__rbit(0x3); CRC32=(__rbit(CRC->DR))^0xFFFFFFFF ; sprintf(Tmp1,"%X",CRC32); LCD_write_String(0,0,Tmp1);//wynik:...
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...
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...
Witam serdecznie Kolegów! Aktualnie jestem w trakcie pisania gry typu labirynt z kulką na procesor ARM STM32F103VCT6. Wszystko mam pięknie i ładnie obsłużone (symulacja odbić od powierzchni płaskich, detekcja kontaktu z otworami) no ale zostało jeszcze najważniejsze - symulacja odbić kulki od kantów prostokąta. I tu niestety zaczynają się schody. Z...
a więc STM'em mogę bezpośrednio wpiąć się na linie RS... Mogło by zadziałać. Ale jest taka sprawa. Linia "DATA" wygląda na zgodną ze "standardem" RS232 TTL, tzn. Stan "1" jest napięciem HIGH (powiedzmy, 3.3V). Ale linia "REQ" jest odwrotnie, tzn. "1" jest 0V. Ale to nie problem bo w STM32 możesz w rejestrze UARTu ustawić negację na pinie. Druga sprawa...
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...
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...
Witam, cały dzień męczę się z obsługą przerwania od odbioru danych w STM32103RB. Korzystam z biblioteki HAL. Po całym dniu dalej nie wiem jak to ma wyglądać, dostępne example robione są w STM32CubeMX, a ja z tego nie korzystam. W dokumentacji chyba nie potrafię się poruszać bo nie wyiskałem z niej co po kolei trzeba wywoływać aby obsłużyć to przerwanie....
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....
Nie ogarniam o co chodzi z tymi wyjątkami. Próbowałem dodać do programu ale nic mi nie działa :( Znalazłem tylko w trybie debugowania w terminalu taką wiadomość po próbie połączenia: Zgłoszony wyjątek: „System.IO.IOException” w System.dll To jest kod programu pobranego z internetu. Powinien działać ale nic z tego... [syntax=csharp]//wygenerowane...
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...
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...
Ok, już mam, był chwilowo usunięty i nie wrzuciłem go z powrotem. Bo mam jednak wciąż błąd składni w tym pliku, a kiedy był jako .h nie było błędu. Dodano po 2 Czcionka jest w pliku font8x16.c Plik wygląda tak: Dodano po 2 Ok, już wiem, teraz jako .c nie rozpoznaje zmiennej typu uint8_t, muszę dodać string.h
Dzień dobry! Poniżej kawałek kodu, trochę nie ociosany, co prawda, ale może rzuci jakieś światło na problem. [syntax=c] #include <stdio.h> #include <string.h> #include "stm32f4xx.h" #include "FreeRTOS.h" #include "task.h" #include "timers.h" #include "semphr.h" #include "misc.h" /* moje */ #include "sine.h" #include "timer.h" #include "leds.h"...
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...
W sieci niestety ale nie znalazłem żadnego tutoriala pod kompilator Arduino IDE. Słabo szukałeś. Poszukaj coryjfowler na githubie, używam od wielu lat w różnych projektach. [syntax=c] // CAN Receive Example // #include <mcp_can.h> #include <SPI.h> long unsigned int rxId; unsigned char len = 0; unsigned char rxBuf[8]; char msgString[128];...
Najprościej wygenerować przez jakieś darmowe środowisko, np.: Atollic TrueSTUDIO. [syntax=asm] /* ****************************************... ** ** File : stm32_flash.ld ** ** Abstract : Linker script for STM32F373C8 Device with ** 64KByte FLASH, 32KByte RAM ** ** Set heap size, stack size and stack location according...
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ą.
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...
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);...
Poniżej kod który działa. Czyta on elementy znajdujące się we wskazanym otwartym folderze. Problem w tym ze czyta nazwy plików i folderów w starym DOS'owym formacie 8+3 Używam długich nazw w FAT tzn mam ustawione _USE_LFN na użwyanie długich nazw i to działa przy zapisie pliku. Czy ktoś wie czy to się da zmienić dla odczytu elementów? Problem też w...
Przeorałem wszystko co było w internecie i niby proste pod warunkiem że odczyta 4 bajty z sterownika. I tu się niestety pojawia problem. mimo tego że mam przykład do komunikacji z dotykiem po SPI to w przypadku tego urządzenia komunikacja nie działa :/ Jeżeli ktokolwiek miałby rzeczowe rady chętnie wysłucham zamieszczam cały projekt w KEIL biblioteka...
Witam. Napisałem program, który wyświetla w terminalu napis z CooCoxa, teraz próbuję dodać obsługę przycisku. Chciałbym, żeby po wciśnięciu przycisku też pojawił się napis w terminalu. Napisałem poniższy program. Jest w stanie ktoś pomóc? [syntax=c] void EXTI15_10_IRQHandler() { int i=0; if (EXTI_GetITStatus(EXTI_Line13)) { if (GPIO_ReadInputDataBit(GPIOC,...
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...
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...
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...
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...
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...
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ą
Witam Postanowiłem zapytać tutaj, ponieważ wydaje mi się że to odpowiedni temat. Uczę się programowania na bazie STM32. Teraz poznaje porty USART i pojawił się problem: Temat wydzieliłem, ponieważ nie ma nic wspólnego z poprzednim.
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...
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...
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".
Witam. Moje pytanie tyczy się ogólnie programowania mikrokontrolerów. Oto kod dla STM32: Poprawiłem formatowanie kodu. Proszę używać znaczników syntax, zamiast code, wtedy składnia jest kolorowana i łatwiej czytać taki kod.
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...
Witam. Chcę obsłużyć płytkę stm32f3 za pomocą skryptu php, javascript przez port usb ale kompletnie nie wiem jak się za to zabrać. Próbowałem znaleźć jakieś informacje na ten temat ale bezowocnie a jeśli już to znalazłem ale po angielsku co sprawiało mi dość dużą trudność w interpretacji. Mam także książki do PHP i Javascript ale w nich także nie ma...
uporządkowałem te dwa includy ".c" ale dalej nic z tego, taki błąd: [cc] ^ [cc] C:\Users\Admin\Desktop\STM32F4DISCOVERY_... warning: format '%x' expects argument of type 'unsigned int', but argument 6 has type 'u32_t' [-Wformat=] [cc] C:\Users\Admin\Desktop\STM32F4DISCOVERY_...
Wystarczy że w funkcji wyświetlania tekstu nie będziesz modyfikował wejściowego stringa. Czyli np. tak: if(*text == '(at)') Wyswietl(0);
Zwróci, na razie ręcznie wklepuje rozmiar danych bo po wrzuceniu strlen kompilator wyrzuca błąd make*** (Biblioteka string.h zainkludowana)
Tutaj w kodzie linkera. [syntax=c] /** * Linker script for STM32F4xx Devices with 1MB FLASH, 192KB RAM (64KB CCM) */ /* Entry Point */ ENTRY(Reset_Handler) #ifdef OPENMV1 #define FLASH_ORIGIN 0x08000000 #define FLASH_LENGTH 512K #define ISR_ORIGIN 0x08000000 #define ISR_LENGTH 16K #define TEXT_ORIGIN 0x08010000 #define TEXT_LENGTH 448K #define RAM_ORIGIN...
Jeśli zależy Ci na najprostrzym wysłania stringa zastosuj funkcję na wzór tej: [syntax=c]void PutChar( uint8_t ch) { while(!(USART2->SR & USART_SR_TXE)); USART2->DR = ch; } void PutString( uint8_t * str) { while(*str != 0) { PutChar( *str); str++; } }[/syntax] W main wywołujesz funkcję : PutString("przykladowy napis 1234..."); Do najprostszych aplikacji...
Witam. Mam takie same objawy procesor inny: stm32f4. PA0 podpięte do 3V, PA1 do GND. Nie rozumiem czego się tak dzieje od wczoraj kombinuje i nic z tego nie wychodzi. [syntax=c]RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; GPIOA->MODER |= GPIO_MODER_MODER0 | GPIO_MODER_MODER1 | GPIO_MODER_MODER2 | GPIO_MODER_MODER3; RCC->APB2ENR |= RCC_APB2ENR_ADC1EN ; ADC->CCR=0;...
stm32 string flash stm32 usart string growat string
alpine kostki regulowanie zaworów naprawa wariator
bosch wgg244zepl suszarka błędy electrolux
Najlepszy piec na pellet i drewno - wybór i analiza Lokalizacja ukrytego przycisku alarmu Toyota Corolla E12