z tego co pamiętam to piszesz "%#4x", tutaj masz opis: http://www.cplusplus.com/reference/cstdi... Czasami zdarza się że nie chcemy wykorzystywać printfa wbudowanego (jest bardzo kosztowny rozmiarowo z obsługą wszystkich flag). Wtedy warto napisać własną funkcję, a jest ona banalnie prosta.
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ź...
Tuner o którym tu mowa kiedyś już opisywałem na forum: https://obrazki.elektroda.pl/7645194700_... Można też bardzo łatwo zmienić bootlogo w tym tunerze za pomocą konsoli UART: https://obrazki.elektroda.pl/8084879700_... Oczywiście obecnie w dobie DVB-T2 takie tunery nie są zbyt użyteczne. Można oczywiście nadal obejrzeć...
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 ?
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++...
Mam kolejny problem z programem na standardowych bibliotekach (niestety nie mam czasu do końca projektu na "właściwe" nauczenie się STM32)... Próbuję wyświetlić pewną przekonwertowaną wartość odczytaną z ADC na LCD. Kod wygląda tak: [syntax=c] void ShowPomiarK(int pomiarK, char linia) { #define dzielnikU 1 //do okreslenia pomiarK=1; float tmp; int buf=0;...
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...
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+...
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...
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...
Przeczytałem wątek z dużym zainteresowaniem, wracam do uP po paru latach natomiast jestem starym programistą C Nie będę redagował jednolinijkowych cytatów, wypowiem się w punktach mam nadzieję każdy wyczyta co pochwalam / czemu się sprzeciwiam 0) nie zmienimy starego albo nie swojego kodu (np AVR czy innego) ale nowy możemy pisać lepiej. a) makra to...
Witam Na wstępie środowisko środowisko na bazie tutorialu Freddie Chopin-a , z dołączonym "STM32F10x_StdPeriph_Lib_V3.5.0" Płytka bazowa ZL27 Kamami. Kompilator CodeBench Lite for ARM EABI Praca bez systemu operacyjnego (na ARM) Problem jest następujący. Chciałem uzyskać możliwość pełnego wysyłania danych przy pomocy Printf na wiecej niż standardowe...
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...
Witam Jak że jest to mój pierwszy wpis tego typu to proszę o wyrozumiałość. Słowem wstępu. Chciał bym się z wami podzielić kilkoma moimi doświadczeniami w programowaniu mikrokontrolarów STM32F103 i STM32L152 (STMDISCOVERY) za pomocą otwartej biblioteki libopencm3 ( http://www.libopencm3.org ). Ja pracuję tylko na Ubuntu 64bit. Jako toolchain używam...
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.
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.
f_printf zwraca ilość zapisanych bajtów, lub EOF w razie błędu, a więc to sam test (res != FR_OK) sprawia problemy.
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]...
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...
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...
Dzięki za odpowiedź. A jak to samo zrobić bez printf?
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...
jest mały problem uruchomiłem wszystko jednak system się zawiesza dioda się zapala uruchamia się wyświetlacz i usart wszystko zawiesza :/ main.c [syntax=c]/*****************************... (c)*************************************... ** ** http://www.powermcu.com ** **--------------File Info------------------------------------...
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; }
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();.
Czyżby? Czy dla AVR ktokolwiek przejmuje się skryptami linkera, startupem, tablicą wektorów i Makefilem? Przecież dla tej platformy jest DOKŁADNIE TAK SAMO jak dla ARM, a jakoś nikomu nawet na myśl nie przyjdzie zajmować się tymi plikami - każdy korzysta z gotowców zawartych w pakiecie avr-gcc. Te pliki tam fizycznie są, nikt nie zajmuje się tym jak...
Ogólnie taka ciekawostka pro po wyjścia AV w tym chipie - AV ma oddzielny framebuffer w pamięci. Jest on rozdzielczości 720x576 jak pamiętam i nawet da się do niego zapisywać dane. Ciekawe. Przyznam, że nie mam pojęcia jak zacząć tego szukać. Chociaż może jakoś da się zmienić rozmiar framebuffera, skoro coś tam w menu tunera można odnośnie tego ustawiać....
Dzieki (at)ex-or za linka niby wszystko jak na tacy ale ja dalej nie mogę sobie poradzić z problemem. Byłby ktoś tak uprzejmy i podpowiedział co robić gdzie szukać dokładniej? Mam tą funkcję z tego linku powyżej: }[/syntax] Jak wrzucę to no to wyświetla jakieś dziwne znaki. Próbowałem też dodać plik printf.h i inne zabiegi z tego linku ale nic z tego...
stdin -> 0 stdout -> 1 stderr -> 2 jeśli chcesz mieć inne cyferki, to musisz coś "otworzyć", czyli użyć funkcji fopen(), oraz oczywiście zaimplementować funkcję _open(), która właśnie odpowiada za zwrócenie właściwej cyferki. Nie możesz sobie do fprintf() podać "czegokolwiek" i nawet nie wiem jak udało Ci się tam podać coś typu int, skoro funkcja oczekuje...
Po pierwsze - potrzebujesz itoa(), nie atoi(). Po drugie - co znaczy, że sprintf() nie działa? Ściągnij okrojoną wersję ze strony Freddiego (razem z itoa). Jak się odrobinę postarasz, to przekierujesz zawartego tam printf'a na UART - będziesz mógł wysyłać przez UART bez "pośrednictwa" sprintf().
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...
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...
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?...
(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...
(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....
[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...
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...
Tak. Już znalazłem rozwiązanie. Chodziło o to, że w funkcji DCD_HandleInEP_ISR w usb_dcd_int.c, ciągle wykonywane jest następujące przerwanie pustego bufora dotyczące endpointu 1: [syntax=c_loadrunner] if (diepint.b.emptyintr) { // printf("empty %d\r\n", epnum); DCD_WriteEmptyTxFifo(pdev , epnum); CLEAR_IN_EP_INTR(epnum, emptyintr); } [/syntax] Okazuje...
Na potwierdzenie tego co napisał powyżej Freddie Chopin, zamieszczam poniżej programik ilustrujący problem: [syntax=c] #include <stdio.h> #include <stm32f4xx.h> #include <stm32f4xx_rcc.h> int main(void) { printf("stm32f429i\n"); printf("GPIOA\n%8.8X\n", (unsigned int)GPIOA); printf("RCC_AHB1Periph_GPIOA\n%8.8X\n", (unsigned int)RCC_AHB1Periph_GPIOA);...
Ś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!!
Dzięki za podpowiedzi. Na razie kompiluję z opcją -O1. Wygląda że problemem był za mały rozmiar stosu (STACK) lub sterty (HEAP). Po powiększeniu rozmiaru obydwu program wystartował i nie mam żadnego HardFault (na razie sprawdziłem tylko podstawowe funkcje interfejsu). Pod debug czasami wygląda jakby w ICTM pojawiały się tymczasowe kopie zmiennych ale...
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...
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;...
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",...
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,...
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...
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...
stm32 printf stm32f printf printf timer
schemat magnetofon finezja bezpiecznik termiczny check engine corolla
Zdjęcie simlocka z modemu Huawei E372 - jak to zrobić? Schemat instalacji elektrycznej ATLAS 65 - gdzie znaleźć?