niestety nie działa tak jakbym tego chciał, żeby zapisać '0x' wystarczy dodać # przed x. Natomiast 4 przed x daje tylko 4 spacje. Bo powinno być "%# 0 4x" A tak na przyszłość... Freddie czy mógłbyś wysłać mi link do tego Newlib? chyba mam starą bibliotekę bo odrzuca mi iprintf(). Raczej nie ma opcji żeby Ci coś odrzucało - iprintf() i pochodne są w...
Zawsze możesz próbować grzebać na stosie i w rejestrach (adres "powrotu" powinien być w LR), ALE... HardFault wyskakuje jak pojawia się inny - krytyczny - problem, który jest nieobsługiwany. 4\/3!!
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ź...
Funkcja z tego pierwszego wywoływana jest przez różne funkcje standardowe typu printf(). Funkcja z tego drugiego wywoływana jest pewnie przez startup albo przez jakąś inną funkcję z bibliotek coocoxa.
Mi zadziałało coś takiego: http://obrazki.elektroda.pl/1811887400_1... [syntax=text]symbol-file Release-v1.2/aboard.elf monitor arm semihosting enable monitor reset halt[/syntax] a openocd uruchamiam tak: [syntax=text]bin\openocd-0.7.0 -f interface/stlink-v2.cfg -f target/stm32f1x_stlink.cfg -c "$_TARGETNAME configure -rtos FreeRTOS"[/syntax]...
Dzięki za odpowiedź. A jak to samo zrobić bez printf?
Dzięki Panowie za szybką odpowiedź :) bonczi7 LinkDriver użyłem niestety nic nie dało :( Marek_Skalski - nigdzie nie znalazłem nic na temat uruchamiania LSE do SD, a myślę że o SD przejrzałem cały User Manual od HAL jednak dla pewności uruchomiłem LSE jednak problem pozostał :( załączam zdjęcia po uruchomieniu LSE, Dla pewności użyłem programu od HAL-a...
[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! Próbuję zaprogramować mikrokontroler STM32F107, aby współpracował z siecią. Najpierw chciałbym skompilować kod z przykładowym projektem dostarczonym do STM32 jako EthernetDriver, czyli stm32_eth_lib. Przykład napisany jest z użyciem stosu TCP/IP uIP. Całość kompiluje się bez żadnych błędów (ew. warningi) z użyciem kompilatora CodeSourcery G++...
Dałem radę już cokolwiek zrobić, jednak nadal mam problem z odbiorem drogą radiową (wysyłania jeszcze nie sprawdziłem). Zaraz opiszę co dokładnie nadal nie działa. W załączniku dodaję cały projekt. Kody (obecne): main.c [syntax=c]/** ****************************************... * File Name : main.c * Description : Main...
oto kod który przekształci timestampa na datę, oczywiście można sobie te pola zrobić jako strukturę czy jak kto woli, ja tylko daje gotowy algorytm z którego korzystałem podczas obsługi tego śmiesznego RTC w stm32f1 :D [syntax=c] #include<stdio.h> int czyPrzestepny(int rok) { if (rok % 4 == 0 && rok % 100 != 0 || rok % 400 == 0) return...
mam problem z funkcja printf(); Po wywołaniu tej funkcji procesor się zawiesza http://www.openstm32.org/forumthread1346...
Faktycznie nie zauważyłem, że tam było przesunięcie o 8 w adresie w tym miejscu w tabelce, rzeczywiście ruszyło odrazu, Dzięki za pomoc Dodano po 42 P.S. A czy ten przykładowy program umożliwia odrazu korzystanie z takich funkcji jak printf czy tam sprintf?
Popraw tą funkcję: void UDP_appcall(void) { switch(uip_udp_conn->lport) { case HTONS(68): dhcpc_appcall(); printf("."); break; }
Ostatnio był podobny tamat na forum. Możesz wykorzystać compound literals. https://gcc.gnu.org/onlinedocs/gcc-3.2/g... http://www.elektroda.pl/rtvforum/viewtop... Przykładowo: [syntax=c] #include <stdio.h> #include <stdint.h> #define COMPOUND_LITERAL(type, value)(type){value} #define TEST_U8 COMPOUND_LITERAL(uint8_t,...
Powoduje wyrzucenie na serial port samych spacji. coś jeszcze może tu być źle źle? Kiedyś mówiło się, że problem jest typu "PEBKAC", ale teraz chyba nie wolno... Wiesz w ogóle jak działa funkcja printf() czy po prostu wklejasz na ślepo jakieś fragmenty znalezione z netu? Czego spodziewasz się podając do funkcji printf() adres zmiennej w której jest...
Próbuje mierzyć częstotliwość sygnału wykorzystując przerwanie i Timer2 Napisałem taki oto kod przy pomocy CubeMX: 249992 Hz i niby ok. Jednak znalazłem kurs STM32 na FORBOT ( 249986 Hz. I teraz nie wiem czy prawidłowo należy skonfigurować timer do tego zadania tak jak zrobiłem czy tak jak w kursie?
Zdecyduj się najpierw czy chodzi Ci o printf() czy sprintf(). Bo generalnie kod który pokazałeś się nawet nie skompiluje. 4\/3!!
[syntax=c]/** ****************************************... * File Name : main.c * Date : 29/04/2014 14:07:00 * Description : Main program body ****************************************... * * COPYRIGHT(c) 2014 STMicroelectronics * * Redistribution and use in source and binary forms,...
OK. Ja też jestem w pracy i nie zawsze mogę o tej porze coś robić. Ale dalej: Do testowego używania UARTA przyda się "podmienienie" standardowej obsługi funkcji printf na taką, która wysyła dane przez UARTA do naszej Windowsowej konsoli. Możesz to wpisac standardowo przed obsługą assert_failed() /** * (at)brief Retargets the C library printf function...
Komunikacja bezprzewodowa dla urządzeń Internetu Rzeczy staje się coraz bardziej powszechna. Jednym z standardów, który można wykorzystać w IoT jest LoRa. Standard ten charakteryzuje się stosunkowo niskim zużyciem energii oraz bardzo dużym zasięgiem. https://obrazki.elektroda.pl/4539068700_... Powyżej możecie zobaczyć moduł SX1278 wraz...
(at)tadzik85 jak to robisz dokładnie? [syntax=bash](at)echo "###Size of target .elf file: " (at)$(SIZE) -B $(ELF) (at)echo ' ' (at)$(SIZE) -B $(ELF) | gawk 'NR > 1 {printf "FLASH: ......................[/syntax] Chodzi o pozbycie się 2-krotnego wywołania size....
Ściągnąłem ten sprintf_ ale przy kompilacji co chwila o coś woła jakieś usarty i inne.. A wystarczyło zajrzeć do pliku nagłówkowego i wyłączyć "printf", no ale co kto lubi. Nikt nie powiedział, że to bezobsługowe. 4\/3!!
http://home.comcast.net/~derelict/files/... Sam korzystam z tej biblioteki. Działa bardzo dobrze. Polecam każdemu jako znamiennik pamięciożernego printf'a.
Witam, Od razu przyznam ze jeśli chodzi o STM32 to jestem początkująca, także proszę o wyrozumiałość. Mój procesor to STM32F100RB – który mam na płytce ewaluacyjnej STM32-Discovery. main.c /* Includes ----------------------------------------... #include "stm32f10x_i2c.h" #include "stm32F10x.h" #include...
Dzięki za odpowiedź. Lutowanie nie wchodzi w grę zatem kupuje przejściówkę usb-uart. Mając Nucleo nie potrzebujesz żadnej przejściówki jeśli chcesz "pogadać" z ESP z komputera, bo Nucleo ma więcej Uartów niż tylko ten jeden podpięty do ST-Linka i wystarczy tylko prosty programik by te Uarty programowo połączyć. I co wyślesz do Nucleo, wyląduje w ESP...
Toolchain : C:\Program Files\GNU Tools ARM Embedded\4.9 2014q4 Debugowanie programu : http://obrazki.elektroda.pl/8776950400_1... Gdzieś w sieci wygrzebałem: In case that link ever disappears, what you have to do is ensure that your gcc command has "-Wl,-u,vfprintf -lprintf_flt -lm". This translates to: force vfprintf to...
Popatrz, ile razy był tu wątek "wysyłam w kółko 'A', a odbieram krzaczki". Na moje oko nie pojawia się to jakoś często na forum. Poza tym co niby chce ktoś osiągnąć wysyłając coś w kółko bez żadnej przerwy. Jedyny przypadek to chyba debug printf typu: [syntax=c] while (1) { printf("Hello world\n"); } [/syntax] Poza tym wysyłana sekwencja musi być odpowiednia...
po prostu chce pisać w środowisku którego używają ludzie do zastosowań komercyjnych, po co mam pisać w eclipsie, skoro w crossworks są zupełnie inne biblioteki Wielu ludzi (choćby ja <: ) używa do zastosowań komercyjnych Eclipse'a... Czy w CrossWorks są jakieś "zupełnie inne biblioteki"? Wątpię - implementacja biblioteki standardowej jest inna,...
Ten program wprowadza mojego STM w tryb uśpienia, ale go nie wybudza, macie jakieś pomysły jak to rozwiązać żeby się wybudzał? Wewnątrz while jest kod wykonawczy zadanej funkcji, w tym momencie działa to tak, że po podłączeniu zasilania wykonuje się ten program, po wypełnieniu licznika przechodzi w tryb sleep i już z niego się nie wybudza. Dodam, że...
1. O co chodzi dokładnie z Serial Wire Viewer oraz Serial Wire Output? To taki jednokierunkowy port szeregowy do wystawiania nim informacji jakie uznasz za słuszne. http://infocenter.arm.com/help/index.jsp... Chodzi mi dokładnie o to SWO to pin dedykowany do tego? Jak najbardziej. czy si e jakoś to uaktywnia?...
przy oversampling na 8 trzeba ustawić BRR na 0x34 Poddaję się - nie wiem skąd ta wartość (0x34) :?: Metodą "prostego dzielenia", tak jak piszesz, wychodzi 0x1c (28). Dla weryfikacji tej wartości "zgrzeszyłem" i zainstalowałem CubeMX - wygenerowałem inicjalizację UARTu dla F4, baudrate=6M, zegar=84MHz. Kod wygenerowany przez Cube też zapisuje do BRR...
Cześć. Zainstalowałem sobie nowe IDE od ST - STM32CubeIDE. Stworzyłem nowy program testowy do płytki ewaluacyjnej STMF429DISCOVERY. Skorzystałem z gotowego szablonu od producenta przy tworzeniu. Chciałem skorzystać z zewnętrznego SDRAM - jest on inicjowany w main by default. Dlatego też zawarłem w wątku testowym (szablon od producenta korzysta z RTOS)...
Witam, Zasiadłem do STM32 i zaczynam implementować coraz kolejne funkcjonalności do mojego projektu. Napotkałem jednak problem. Chodzi tu o używanie funkcji malloc() lub printf(). Chodzi o to, że program się nie kompiluje ponieważ brak jest referencji do _sbrk. Przeszukałem Google i znalazłem przykładową funkcję. Funkcja ta potrzebuje dodatkowych informacji...
Samo to nie jest może powodem błędu, który obserwujesz, Pewnie jest. Przerwanie -> skasowanie flagi -> prinf po uarcie W trakcie tego kolejne przerwanie -> skasowanie flagi -> prinf po uarcie ..... stos się przeełnia i sterta kończy (o ile ta implementacja go używa) natychmiast. i do tego dodatkowo - printf - nie reentrant Cała filozofia. Sory, jeżeli...
Wywołanie printf() oczywiście nie wejdzie do tej funkcji, bo nie używa Twojego pliku tylko stdout. Wywołanie drugie to oczywiście inna kwestia. Być może pocieszy Cię, że "nadziałeś" się na to, na co chyba natknął się absolutnie każdy. stdio obsługuje domyślnie buforowanie (można je wyłączyć, ale to oczywiście nie jest najlepsza opcja), to co masz w...
Wykonałem po 400 wywołań foo(). Otrzymane średnie wyniki: Bare-metal: 1. 7 2. 244,27 3. 44281,76 FreeRTOS: 1. 6 2. 236,22 3. 42486,88 Także wychodzi na to samo. Kod dorzucam dla ewentualnego sprawdzenia, czy na pewno dobrze wykonuje te pomiary. [syntax=c] uint32_t w1 = 0; uint32_t w2 = 0; uint32_t w3 = 0; void foo() { __disable_irq(); uint32_t j = 0;...
A jeszcze takie pytanie. uruchomiłem jakąś wersje po "ulepszeniu" i zmieniłem konfigurację na: http://obrazki.elektroda.pl/6693818900_1... Tz że router próbował przydzielić adres 192.168.1.102 ?
Czemu do 8 a nie do 4? Myślę że może to mieć coś wspólnego z przekazywaniem 64-bitowych parametrów na stosie i instrukcjami ldrd/strd, ale pewności nie mam. Na pewno takie są wymagania standardu ARM, a czy są podyktowane czymś konkretnym czy nie to już inna sprawa. Po prostu "tak ma być". Faktem jest że jeśli NIE wyrównasz stosu do 8 to niektóre rzeczy...
Pierwsza opcja to oczywiście zdefiniowanie NAPRAWDĘ DUŻEGO stosu, ale to średnie rozwiązanie jak wiadomo [; Do rozbudowanej aplikacji na ARMa myślę że należy liczyć minimum 1kB, jeśli używa się jakichś potwornych funkcji standardowych (printf!) i to głęboko to lepiej zaopatrzyć się w 2kB (o apetycie tych funkcji na pamięć pisałem ostatnio http://www.elektroda.pl/rtvforum/topic13...
Miło przeczytać rozsądną opinię. Przytoczony Harold Abelson zapewne nie jest zwolennikiem takich programów, napisałem to gdzieś około 1997 roku: [syntax=c] _(__,___){return ___<__?__%___?_(__,___+1):0:1;} #include <stdio.h> int main() { int k; printf("\ngive a number to check: "); scanf("%d", &k); if (_(k,2)) printf("\n%d is a prime number.\n",...
Dzień dobry, mam pytanko, mam dziwny problem z przerwaniem zewnętrznym ( właściwie to 2 ). po 1 kod. Inicjalizacja: [syntax=c] GPIO_InitTypeDef GPIO_InitStruct; EXTI_InitTypeDef EXTI_InitStruct; NVIC_InitTypeDef NVIC_InitStruct; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GP... ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_SY... ENABLE); GPIO_InitStruct.GPIO_Mode...
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)....
[syntax=c] #include <stdio.h> #include <stdlib.h> #include <stdint.h> #define ROZMIAR_TAB 128 #define BASE_ADDRESS 0x080000 /* run this program using the console pauser or add your own getch, system("pause") or input loop */ unsigned char data[ROZMIAR_TAB] = {0}; int i, addr = 0; uint32_t tmp = 0; void BOOT_Save_32B(uint32_t address,...
Nie, printf wywołuje normalnie, mam funkcję która ma coś tam odczytać [syntax=c] uint8_t qmpu6050_read_register(uint8_t reg, uint8_t * val) { uint32_t event; //while (I2C_GetFlagStatus(MPU6050_I2C_DEV, I2C_FLAG_BUSY)); while ( ( event = qmpu6050_get_event_flags() ) & I2C_FLAG_BUSY ) { printf("I2C_FLAG_BUSY"); } //transmision start I2C_GenerateSTART(MPU6050_I2C_DEV,...
Widzę, że nikt się nie skusił na 500pkt.... Pracuję nad tym dzień i noc, teraz próbuję podejść od drugiej strony przerabiając projekt do kamery, pozamieniałem wszystkie wyprowadzenia GPIO aby pasowało to do mojej płytki, ale niestety nie chce działać - wyświetlacz cały biały. Wydaje mi się, że problem tkwi w pliku GLDC.c, ale nie wiem gdzie... main.c...
A ten poważny błąd w skrypcie, to jaki (i czemu działa podstawowa wersja, skoro skrypt jest zły)? Działa tylko dlatego, że nie masz żadnych zmiennych globalnych/statycznych. Dodaj sobie takową i spróbuj zmienić jej wartość to się przekonasz. Opcje kompilacji także starałem się ograniczyć do minimum, może czegoś brakuje, albo jest za dużo? Twój zapęd...
Metoda z memcpy jest prostsza, z unią nie poszłoby mi tak szybko - musze najpierw troche poczytać i 'zalapać' jak to w praktyce stosować. Nie wiem dlaczego tak sądzisz?: [syntax=c]#include <inttypes.h> #include <stdio.h> typedef union { uint8_t B[4]; float F; } FB_t; int main() { FB_t liczba; liczba.F = 1.24; printf("konwersja %f = %d %d...
1. Co będzie jak nie wyrównam stosu, kiedy natknę się na problem? Zasadniczo problem występuje praktycznie tylko przy przekazywaniu 64-bitowych zmiennych do funkcji o zmiennej ilości argumentów, takich jak printf() (tutaj od razu uwaga - 32-bitowy float dla takich funkcji zawsze jest konwertowany do 64-bitowego double). Ze względu na to jak zdefiniowane...
W skrypcie linkera zmieniłem rozmiary stosów : __main_stack_size = 2048; __process_stack_size = 2048; Do projektu dołączyłem biblioteki gcc: #include <errno.h> #include <sys/types.h> oraz funkcję _sbark: caddr_t _sbrk (int size) { extern char __heap_start; extern char __heap_end; static char *current_heap_end = &__heap_start;...
Witam, piszę aplikację, która przez większość czasu będzie spędzać w trybie STOP. Założyłem sobie, że co kilka minut wbudowany RTC będzie wybudzał mikrokontroler, który wejdzie do obsługi przerwania RTC, wykona swoje zadania w przerwaniu i wróci do trybu STOP. Moje pytanie brzmi, w jaki sposób zrealizować to najlepiej/najprościej? Próbowałem już to...
OK udało się rozwiązać problem. Błędem było sprawdzania flagi TCR w pętli, jak ona jest ustawiana po wysłaniu wszystkich bajtów. Poniżej poprawny kod: [syntax=c] void I2C_HW_tx(uint8_t i2cAddr, uint8_t *dataTx, uint8_t length, uint8_t stopOrNotWhenSent) { if (stopOrNotWhenSent == STOP_WHEN_SENT) { I2C_TransferHandling(I2C_PERIPH, i2cAddr, length, I2C_AutoEnd_Mode,...
Dzień dobry, Mam problem z dogadaniem się z ADIS16201. https://www.analog.com/media/en/technica... Zacznę od tego, że korzystam z płytki : https://www.analog.com/en/design-center/... Wyjścia podłączyłem w sposób następujący: ADIS1620...
Witam! Postanowiłem zacząć korzystać ze środowiska Coocox, proste programy typu miganie diodami udało mi się skompilować i uruchomić. Jednak chciałbym napisać program do obsługi wyświetlacza i wykorzystać bibliotekę uCGUI. Dodałem plik uCGUI.lib do folderu mojego projektu i dodałem go do "Linked Libraries" w konfiguracji projektu. Podczas kompilacji,...
Dzień dobry, od dłuższego czasu próbuję wykonać projekt sterowania Transceivera RF CC120 firmy Texas Instruments za pomocą mikrokontrolera STM32F100RBT6B, który jest na płytce uruchomieniowej STM32VLDISCOVERY. Mam już napisaną część kodu, jednak nie jestem pewien czy SPI jest faktycznie poprawnie uruchomione oraz (i tu prośba do kogoś, kto się orientuje...
co muszę zrobić, żebym mógł tak go używać?;] czy można stworzyć po prostu strumień do którego wpisywałbym dane za pomocą fprintf jak to było np. w AVR-GCC? czyli np. fprintf(&LCD, "Hello World"); czy już tak łatwo to nie pójdzie?;P Jeśli mowa o printf() z newlib, to nie jest to aż takie proste... Musisz zaimplementować (poprawnie) syscalls odpowiedzialne...
HEAP miał 8kB, STM32F103 ma 20kB SRAM, to może 12kB na stos USB, jakieś globale, konteksty zagnieżdżonych przerwań itp. to momentami dla niego za mało? Raczej nie ma opcji, żeby 12 kB na stos było zbyt mało. Poza sytuacjami extremalnymi mi się jeszcze nie zdarzyło używać więcej niż 4 kB, ale tylko w sytuacjach gdy "głęboko" są używane funkcje typu...
Jakaś różnica musi być skoro na oryginale działa a na tym nie. Gruntownie rok temu na nim działałem i wszystko grało wiec pewnie coś z wgrywanym programem ale skoro daje sie programować na oryginalnym STlinku to nie będę sobie robić problemów z tym chińskim. Pod spodem podaje kod wygenerowany przez Stm32CubeIde z dopisanymi 4 liniami moimi czy miganie...
Dlaczego źle? Niewykorzystana pamięć to pamięć zmarnowana. Z drugiej strony, jeśli nie używasz zmiennego przecinka, printf-family i tym podobnych procesorożerców to w 32kB można zmieścić dość dużo. Wybór należy do Ciebie nie do nikogo innego. Rozsądna wielkość, to taka jak Tobie jest potrzebna. 64kB to czasem na dane nie wystarcza. Albert
Witam, mam problem z odbieraniem danych po usarcie. Jest on skonfigurowany tak: USART_ClockInitStructure.USART_Clock = USART_Clock_Disable; USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge; USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; /* Configure the USART1 synchronous paramters...
Wciąż nie rozumiem do końca... LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc(length=%"U16_F")\n", length)); //LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc(length=hu)\n"));//Moja modyfikacja - powyższa linijka powodowała hard fault Jak odkomentujesz tą drugą linijkę to się wykrzacza tak? Czy może wykrzacza się jak zakomentujesz pierwszą...
TIM3->SR &=~TIM_SR_UIF; Aleś się uczepił tej operacji logicznej... Tak przy okazji to aby printf flory musisz ustawić odpowiednie flagi linkera Nie musi.
Proszę o jakiś example z tym scanf - swoją drogą wydawało mi się że te funkcjie typu printf i scanf to już wgl są beznadziejne jeżeli chodzi o optymalne rozwiązanie, dlatego raczej stroniłem od ich używania. Możliwe po przejściu z PHP gdzie o nic się nic nie martwiło tutaj, trzeba myśleć bardziej hmm o wszystkim. Nie mniej jednak jestem chyba w punkcie...
Witam, Korzystam z płytki "Open103Z" z procesorem jak w temacie. Ma ona przygotowane złącze na wyświetlacz graficzny. Wyświetlacz to HY32C z kontrolerem SSD1289. Próbowałem przystosować jakiś przykład z sieci, korzystający z FSMC, do swojego zestawu(tzn. zamienić szyny adresowe i odpowiedni sektor pamięci), jednak wyświetlacz nie reaguje. W części z...
Niestety nie pomogło EDIT: Spróbowałem wygenerować za pomocą STM32CubeMX i napisać w HAL'u kod który by wysyłał cyklicznie dowolną ramkę CAN. Oto mój kod napisany w AC6 System Workbench: http://obrazki.elektroda.pl/9453638400_1... Przy okazji: 1. Jak wgrać program przez JTAG'a w AC6? 2. Da się dodać bibliotekę HAL do COIDE CooCox'a?...
Dochodzę do wniosku, że nie zdziałam za dużo opierając się na gotowej bibliotece do obsługi systemu plików. Ja dochodzę do wniosku, że Ty dochodzisz do błędnego wniosku [; FatFS, poprawnie skonfigurowany, jest w stanie zmielić dane z wystarczającą prędkością. Nawet zrobiony mega tępo działa całkiem szybko... Mam taki projekt, w który jest system operacyjny,...
zujnik jest podłączony bez rezystorów wzmacniających, ponieważ odczytałem ze schematu, że nie są potrzebne(próbowałem także z rezystorami 4k7). Przy sprawdzeniu bufora z danymi w programie Stm Studio, nic się nie zmienia a flaga busy jest ustawiona jedynie przy odłączeniu kabla SDA od czujnika. Proszę o pomoc w znalezieniu przyczyny braku odczytu i...
Jaki fragment kodu? Jeżeli uzywasz HAL to aby poznać częstotliwość możesz np printf("%u\n", SystemCoreClock); (jak włączysz semihosting) Ale jak napisał kol. Marek wybrałeś IDE przestarzałe i martwe. Proponuję zainstalować atollic
Może konflikt pinów z LCD i SPI. Musisz pokombinować. Zresztą, zrób sobie pusty projekt dodaj fatfs i ten plik, napisz obsługę SPI i powinno działać. A i uzupełnij sobie funkcje int _write(); np. tak żeby korzystała z USART, będzie ci działać printf();.
Witam. Mam przed sobą płytkę STM32F746 DISCO. Na razie jestem na etapie wdrażania w stm32. Póki co bazuję na example kodzie dostarczonym w stm32cubef7. Konkretnie projektem demonstracyjnym STM32Cube_FW_F7_V1.2.0\Projects\STM32746... Chciałem uruchomić na Eclipsie (SW4STM32 Ac6 tools) semihosting, czyli miec możliwość używając...
Nie widzę sensu w używaniu stringów wstawiając w nie 0. Dużo funkcji, np printf, bazuje na tym, że na końcu stringa napotka na 0. Podobne rzeczy spotkasz chociażby bibliotece radzia do hd44780 czy jakiejkolwiek innej operującej na stringach. Coś a la: [syntax=c]void usart_send(char *data) { while(*data) LCD->DR = *data++; } ... int main() { ... usart_send("ala...
Witam. W oparciu o mikrokontroler STM32 nucleo-F401RE i platformę mbed chciałbym zbudować coś w stylu prostego alarmu do domu jednorodzinnego. Nie mam niestety pomysłu jak wykonać procedurę sprawdzania czy też ustawiania hasła użytkownika w oparciu o klawiaturę matrycową (np. aby uzbroić alarm wystukaj 4-cyfrowy kod i zatwierdź #). Na razie udało mi...
Chyba nie jest inicjowany 2x bo jedna inicjacja tyczy sie portu B a druga portu C.... Dodano po 2 Wiem, że wielu ludzi nie lubi STM32Cube. Włączyłem generator na parę minut i wygenerowałm 'drivery' dla pinu przycisk i pinu led. Nastepnie skopiowałem "logike" autora postu poprawaijac nazwy pinow. Roboty mało a szybki efekt w tak prostym programie. Nie...
Witam, Ucze sie I2C i probuje zainterfejsowac czujnik BME280 . Zaden kod z neta ani wlasny nie dziala, na czujniku UV tez nie. Na oscyloskopie jakies krzaki (na zdjeciu.)(Edit:na lini SDA) SCL podpiete na PB6, SDA na PB7 3V Wygenerowane z CubeMX wiec nie daje reszty kodu. Przykładowy kod: while (1) { uint8_t i; for (i=1; i<248; i++)...
Witajcie, Mam taki problem, w moim hobbystycznym projekcie, ze kilka razy program zaliczył hard fault sygnalizowany na razie tylko zaświeceniem leda. Całość to kontroler lotu quadrocoptera, na razie w locie takie coś się jeszcze nie zdarzyło, niemniej chciałbym tego uniknąć. Generalnie trudno jest z powtarzalnością błędu, dzisiaj kontroler był włączony...
Witam, Od niedawna planuję przejść na mikrokontroler stm32f407vgt6 z stm32f103vct6, ze względu na szybszą pracę. Niestety napotkałem na bardzo poważny problem. Aby przedstawić jak najlepiej dany problem, zamieszczę printscreen z analizatora stanów. http://obrazki.elektroda.pl/6745447700_1... Na wykresie widzimy przerwanie pracy timera,...
Zrobiłem mały tescik na PC: #include <stdlib.h> #include <stdio.h> #include <stdint.h> #define UIP_BIG_ENDIAN 0 #define UIP_LITTLE_ENDIAN 1 #define UIP_BYTE_ORDER UIP_LITTLE_ENDIAN #ifndef HTONS # if UIP_BYTE_ORDER == UIP_BIG_ENDIAN # define HTONS(n) (n) # else /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ # define HTONS(n)...
po prostu - masz thread, który pisze do SD. odbierasz ramke, który jezt zablokowany na kolejce, semaforze, mutexie czy tez notyfikacji. Przykład: Jak odbierzesz ramkę wstawiasz do kolejki dane (lub tylko referencję). Thread zapisujący na kartę się odblokowuje i zapisuje. Możesz miec (jezeli wstawiasz do kolejki same rwskażniki do buforów) dwa (lub węcej)...
Hmm, właśnie nie rozwiązało to problemu. Racja, używa tych sprintfów do dodawania danych do tablicy, którą mu podaję. Żeby rozwiązać problem dużej biblioteki użyłem printf-stdarg.c z demo użycia FreeRTOS'a. Teraz jest tylko jeden problem, po pierwszym wykonaniu funkcji TaskGetRunTimeStats() dane wydają się być ok, ale po późniejszych procenty przekraczają...
Zazwyczaj najwygodniej uczyć się języka C na desktopie, czyli swoim PC-cie. Programując STM32 lub AVR-ki używa się języka w ten sam sposób, ale zwykle nie mamy dostępu do pewnych bibliotek standardowych, które na desktopie są od razu, bo komputer ma monitor, klawiaturę, dysk twardy itp.. W mikrokontrolerach tego nie mamy, więc użycie printf(), getch()...
Bezpośrednie wywołanie funkcji termf ("double - %d", 1.35); powoduje błędne wyświetlenie. Bo parametr %d nie określa liczby zmiennoprzecinkowej. Trochę pobawiłem się biblioteką (STM32) i jak pisałem wyżej, funkcja termf nie działa prawidłowo gdy brakuje w jej wywołaniu wskaźnika do tablicy (nie wiem dlaczego) Trzeba go dodać: int termf (char *ptr,const...
A mnie z kolei nie działa komunikacja po SPI ,z simple serwer przeniosłem część do projektu demoUART tzn. dwie biblioteki (spi,enc28j60) . W main SPI1_Init() potem enc28j60_Init() w tej funkcji jest printf("MAADR5 = 0x%x\r\n", enc28j60Read(MAADR5)); który w konsoli powinien mi wydrukować MAC zapisany przy inicjalizacji niestety mam same zera z tego...
Jeśli chcesz to zdebuggować, to możesz się "zaopatrzyć" w bleeding-edge-toolchain ( https://github.com/FreddieChopin/bleedin... ). Jest on kompilowany praktycznie tak samo jak toolchain ARMowy, z tym że biblioteki zawierają wszystkie symbole, a więc można je spokojnie debuggować i widzisz co się dzieje. Z Twojego opisu wynika, że problem...
Używam STM32F7-45 na własnej płytce i próbuje zrobić USB Device podpinane do PC (próbowałem (osobno) virtual COM i HID). Ale po wpięciu do PC płytka jest wykrywana (po chwili) z błędem "Nieznane urządzenie - żądanie deskryptora urządzenia nie powiodło się". Elektrycznie (PCB): - Myślę, że samo PCB nie jest tutaj błędem. Prowadzę po prostu sygnały D+...
Witam, posiadam STM32F429 na którym chcę uruchomić klienta http używając lwIP Raw Api. Problem jest taki że program działa kiedy używam debuggera, bez niego funkcja tcp_connect() zwraca błąd -4: /** Routing problem. */ ERR_RTE = -4, void tcp_client_init(void) { /* 1. create new tcp pcb */ struct tcp_pcb *tpcb; tpcb = tcp_new();...
Moim zdaniem problem jest znacznie prostszy niż się wydaje. Mikrokontrolery mają znacznie okrojone zasoby sprzętowe. Skupmy się na pamięci. C bez używania bibliotek umożliwia napisanie programu z narzutem na pamięć FLASH porównywalnym z assemblerem. Z ich użyciem (startup, printf itp) to kilkanaście kb (dla rzeczonego Cortexa) C++ podobnie ale tylko...
Bo trzeba powiedzieć sobie otwarcie - wszystko dla ludzi, byle rozsądnie, tak samo z biblioteką taką czy inną. Bez zrozumienia wszystkiego łykać nie należy. Zresztą w samej bibliotece niczego złego (pod względem idei) nie ma. W usprawnianiu pracy również. Vendor lock-in to wada, ale jeśli sama biblioteka jest sensownie napisana nadal używać jej można,...
Sory, ale na tym poziomie dyskusja nie ma sensu. Jak będziesz miał coś konkretnego do napisania to możemy kontynuować. OK konkretnie to draft ISO/IEC DTR 18037 wprowadza pewną wiedzę na ten temat do kompilatorów obsługujących tego typu rozszerzenia. Z tym się chyba zgodzisz. Zresztą to mi nie wygląda na "wsparcie w binutils" : http://avr-gcc.senthilthecoder.com/#g:!(...
(at)ElektrodaBot Dzień dobry, zmagam się z nietypowym problemem. Zepsuł mi się ostatnio moduł I2S2 MOD podłączony do stm32f407, który zawierał zarówno ADC jak i DAC działający po I2S. Kupiłem coś tańszego - jako ADC PCM1808, oraz jako DAC PCM5102. Wcześniej działałem na full-duplexie, teraz jestem zmuszony działać na half-duplexie. Napisałem prosty...
W Tera Term mam ustawione 8-bitów danych, bez kontroli parzystości, 1 bit stopu. Szybkość transmisji jest ta sama. Odczytywanie w Tera Term "Hello world" działa. Coś takiego napisałem ale nie działa. Jest w stanie ktoś coś podpowiedzieć? [syntax=c]void send_char(char c) { while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET); USART_SendData(USART2,...
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...
Możesz napisać własną funkcję printf, nie korzystając ze standardowych bibliotek. Poszukaj np. tutaj: http://www.freddiechopin.info/pl/downloa...
Wiem o tym. Dla STM32 program piszę na ślepo jak dla AVRów i debuguję printfem, oscyloskopem lub innymi metodami. Bez JTAGa też da się uruchamiać systemy, ale z JTAGiem może być trochę łatwiej. Zależy od poziomu złożoności programu w połączeniu z doświadczeniem i sprytem programisty. Debuggowanie przez terminal (bo chyba o takim właśnie piszesz) sprawdza...
Cześć Wiem że temat jest delikatnie mówiąc już nie świeży, ale pomimo postów które znalazłem w internecie nie mogę do tego dojść samodzielnie. Korzystam z Semihostingu na uC STM32F411 płytka Discovery, programowana przez ST-Link. Semihosting udało mi się uruchomić: Flagi w Properties->C/C++ Build->Settings->MCU G++ Linker -> Miscellaneous : Linker flags:...
Dzień dobry! mam pytanie do osób znających uC STM32, czy jest tutaj jakiś buffor danych USART? Mam taki kawałek kodu: [syntax=c] while (1) { if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE)){ int i = 0; while(USART_GetFlagStatus(USART2, USART_FLAG_RXNE)){ buffor[i] = USART_ReceiveData(USART2); i++; for(int j=0 ; j < 10000 ; j++){}; } printf("odebrano...
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 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] /* ****************************************...
można zobaczyć co to jest to M_PI? Jakby się zrobiła doublem (np w wyrażeniu) to by potrzebowała format %lf A po drugie z tytułu optymalizacji często są po dwie biblioteki z printfem: ze zmiennym przecinkiem i bez.
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...
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...
printf stm32 stm32f printf printf timer
automatyka robotyka praca lokalizacja złączać diagnostyczny wyświetlacz falownik danfoss
attiny programowanie internet orange
Instrukcja obsługi syreny alarmowej ERDA 120 dB Wyłącznik główny do kotła Torus z palnikiem olejowym - gdzie kupić?