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ź...
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 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?
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.
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; }
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...
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...
Prawie, tylko po wypełnieniu struktury konfiguracją dla wyjścia musisz wywołać funkcję GPIO_Init, czyli powinno być tak: [syntax=c] GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIO... ENABLE); // włącz zegar dla GPIOA GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14; //definicja pinów wyjciowych GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;...
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
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,...
Dzięki za odpowiedź, ale to chyba nie jest w HAL... Zgadza się. Nie jest. Ale STM przepisał te algorytmy również na HAL i te źródła znajdują się np. w repozytorium CubeMx w ścieżce: Repository\STM32Cube_FW_F1_V1.6.1\Projec... To jest akurat dla tego typu uC który jest na tym Nucleo, ale jeśli potrzeba...
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.
Zdecyduj się najpierw czy chodzi Ci o printf() czy sprintf(). Bo generalnie kod który pokazałeś się nawet nie skompiluje. 4\/3!!
mam problem z funkcja printf(); Po wywołaniu tej funkcji procesor się zawiesza http://www.openstm32.org/forumthread1346...
(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....
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++...
Ś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!!
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,...
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...
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...
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...
Witam serdecznie. Początkowo miałem problem z uruchomieniem układu, nawet pisałem do Piotra czy nie ma jakiegoś błędu w zamieszczonym kodzie. Problemy były dwa, po pierwsze używałem płytki testowej na której był umieszczony kwarc, którego z niewiadomych mi powodów zostawiłem. Po drugie istotny jest rodzaj bramki lub konwertera napięcia na wyjściu. Np...
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,...
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?...
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ą...
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...
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;...
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...
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...
Niższy (tzn niższy niż FILE) poziom dostępu do plików, oparty na integerowych handlerach, plik się otwiera przez int open(..) (tzn nie FILE * fopen() ), i to open() jest względnie przenośne. Wiele środowisk ma nieprzenośne (mniej przenośne) _open(). Generalnie dokumentacje jednej z funkcji tej rodziny dają wskazania na sąsiednie. EDIT: żeby było wyraźniej:...
Czy ja dobrze czytam, że w przerwaniu od timera robisz set/reset pinów i to Twój PWM? Nie, to jest lewitacja elektromagnetyczna i odwracam w ten sposób polaryzację cewki, kiedy PID wyliczy ujemną wartość (lewitujący obiekt przekroczy setpoint). Dodano po 6 Wrzucam jeszcze całego main'a. [syntax=c] /* USER CODE BEGIN Header */ /** ****************************************...
Cześć Od razu nadmienię, że jestem w tym początkujący. Posiadam mikrokontroler STM32F100C4T6B oraz moduł GY-50 L3G4200D. Próbuję nawiązać połączenie za pomocą interfejsu I2C i wyświetlić informację na komputerze kominukując się po UART, który na pewno działa. Jeżeli chodzi o połączenie to jestem na 99% pewny, że jest dobrze. Korzystam z programu STM32CubeMX...
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 ?
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)....
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...
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...
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...
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",...
Witajcie ponownie :) Wybaczcie, że dopiero teraz odpisuję. Ogólnie "odpaliłem" wreszcie te emulację EEPROMa w FLASH. Działa, ale mam jedno pytanie, wirtualny adres zmiennych, czy muszę jakoś uważać na to co tam wpiszę? Chodzi mi o tę linijkę kodu: [syntax=c]uint16_t VirtAddVarTab[NB_OF_VAR] = {0x5555, 0x6666, 0x7777};[/syntax] To pytanie dedykuję głównie...
Zasadniczy probem twojego rozwiązania to delay() w obsłudze przerwania i ogólnie za dużo w nim robisz. Z zasady w przerwaniu wykonujesz jak najmniej kodu, aby z niego wyjść najszybciej jak się da. A tutaj wykonanie kodu w przerwaniu zależy od kolejnych przerwań. Ustawiaj tam sobie jakąś zmienną globalną kiedy chcesz coś wykonać, wybudź procek, opuść...
[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,...
Najlepszego w Nowym Roku i w następnch (rokach też). Proszęż uprzejmież : [syntax=c] #ifndef NOUVOTON_SD_CARD_H_INCLUDED #define NOUVOTON_SD_CARD_H_INCLUDED // #include "NouvotonSDCard.h" #define __IO volatile typedef struct { __IO uint8_t CSDStruct; /* CSD structure */ __IO uint8_t SysSpecVersion; /* System specification version */ __IO uint8_t Reserved1;...
[cc] c:/program files (x86)/gnu tools arm embedded/4.6 2012q2/bin/../lib/gcc/arm-none-eabi/4.6.... multiple definition of `_impure_ptr' [cc] ..\obj\printf.o:(.data+0x428)... first defined here [cc]...
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...
pingowałem. C:\Documents and Settings\ADMIN>ping 192.168.1.220 Badanie 192.168.1.220 z użyciem 32 bajtów danych: Odpowiedź z 192.168.1.220: bajtów=32 czas<1 ms TTL=128 Odpowiedź z 192.168.1.220: bajtów=32 czas<1 ms TTL=128 Odpowiedź z 192.168.1.220: bajtów=32 czas<1 ms TTL=128 Odpowiedź z 192.168.1.220: bajtów=32...
bo użyłeś printf?
Ok, to chyba nie będę na razie kombinował bo nie mam pojęcia o tych syscalls :P Spróbuję jutro odpalić Twoją funkcję printf ;] Jeśli chodzi o timer - to tak, wiem, że mogę to wszystko włączyć w jednej linii, ale tak jakoś z przyzwyczajenia zostawiłem samo enable na koniec, teraz to przerzucę ;]
Faktycznie, rozwiązanie kwestii działania SPI było dosyć proste i po sprawdzeniu - SPI działa. Odczytuję zapisany wcześniej rejestr poprawnie. Teraz mam inny problem. Poniżej zamieszczam program z pliku main.c, w którym są dodane miejsca wysyłania kolejnych numerów przez UART i program zatrzymuje mi się po wysłaniu numeru 88. Nic więcej się nie dzieje,...
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...
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...
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...
już Ci FCh pisał. w drugim kodzie dodałeś kilka dodatkowych instrukcji wydłużając czas wykonania przerwana co spowodowało pewnie że skasowanie flagi miało czas aby się rozpropagowac po magistrali. zresztą jak będziesz wysyłać więcej niż 5 znaków to warto sprawdzić czy poprzednie transmisja się wykonała. Tak przy okazji to aby printf floaty musisz ustawić...
Trzeba skończyć z tym "Pan" - naprawdę. Zasadniczo jeśli weźmiesz plikich pochodzące z przykładów, to printf() czy sprintf() na tym działają (z funkcją sbrk() z mojej strony). Istotne są dwie rzeczy: 1. stosy muszą być zawsze wyrównane do 8 - to jest zrobione w skrypcie linkera, 2. Rozmiar stosu wymagany przez te funkcje to około 700B - trzeba zadbać...
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...
Mam problem z komunikacją po magistrali CAN. Próbuję uruchomić prosty program do odbioru danych po CANie i niestety nie działa. Uruchomiłem parę przykładów znalezionych w internecie i nic. Program generuję za pomocą SMT32CubeMx i korzystam z biblioteki HAL - bo tak chyba najprościej. Korzystam z gotowej płytki STM32F103C8T6 do której podłączyłem MCP2151...
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);...
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...
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...
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, 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...
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,...
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...
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ą...
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:...
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()...
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...
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...
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...
Witam ponownie, mam teraz niezwykłą zagadkę, tak więc posklejałem kawałek kodu który obsługuje USART + Ethernet - program polega jedynie na tym że jak odbierze jakąkolwiek ramkę Ethernetową to powiadomi o niej i wyśle przez RS-232 MAC address nadawcy i odbiorycy (przy czym tutaj kwestia estetyczna jest niedopracowana) - tak czy inaczej kod ten przetestowałem...
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...
Witam, Jestem niedoświadczonym użytkownikiem więc proszę o wyrozumiałość. Podobnie jak kolega chciałbym aby mój STM32 discovery Examples/GPIOToggle i chciałbym go tak zmodyfikować żeby zaczął rozmawiać po I2C, stworzyłem plik I2C.c oraz I2C.h. Dodam ze używam Keil'a Dostałem od kolegi przykładowy kod który powinien działać ale w praktyce jest oczywiście...
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...
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...
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...
Witam Od jakiegoś czasu próbuję przeprowadzić odbiór danych z UART z wykorzystaniem DMA. Jeśli chodzi o konfigurację UART to jest ona przeprowadzona prawidłowo, ponieważ mogę dane wysyłać jak i odbierać ręcznie. Problem pojawia się przy próbie zaprzęgnięcia do odbioru DMA. Dane w buforze odbiorczym nie są aktualizowane (po zainicjalizowaniu bufora wartościami...
Koledzy. W tych ARM-ach stawiam pierwsze kroki, więc proszę mi wybaczyć lamerstwo, jeśli mi się zdarzy. Posiadam płytkę HY-miniSTM32 z wyświetlaczem HY32D i procesorem STM32F103VCT6. Używam środowiska CoIDE w wersji najnowszej, czyli 1.7.5 i toolchain GNU Tools ARM Embedded\4.7 2013q3 Ściągnąłem i otworzyłem pod CoIDE projekt glcd, umieszczony kilka...
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, 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...
Bardzo możliwe, że masz rację Freddie, chociaż nie sprawdzałem czy uda mi się wygenerować fsdata.c pod linuxem. Znalazłem jeszcze jeden skrypt makefsdata i ten wykonuje się pod windowsem xp, generując poprawny plik. Niestety nie wiem kiedy uda mi się sprawdzić działanie serwera po podmianie plików. Oto jego zawartość, może komuś się przyda, a wiem że...
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...
Próbowałeś może używać polskich znaków w edytorze lub w funkcji printf()?
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...
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,...
Witam, Mam problem - mam za zadanie zrobić coś w stylu skanera 3D na STM32. Na razie nie mogę opanować samej obsługi kamery w konfiguracji STM32F103VE+ wyśw. SSD1963 7" (zestaw EB-STM32_08_LCD7) i kamera OV7725 . Do zestawu dostałem przykładowe projekty w keilu. Bazując na projekcie do sprawdzania kamery z wyświetlaczem 4.3' wkleiłem działające biblioteki...
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:!(...
Witam Dopiero zaczynam swoją przygodę z mikroprocesorami z rodziny ARM. Posiadam moduł prototypowy: STM32 LCD3.2" ARM Cortex, z procesorem: STM32F103VCT6 . Korzystam ze środowiska Kyle uVison4. Problem pojawił się przy próbie uruchomienia magistrali I2C. Obecnie mam 3 ATMEGI połączone ze sobą po I2C i między nimi komunikacja przebiega prawidłowo. W...
f_printf zwraca ilość zapisanych bajtów, lub EOF w razie błędu, a więc to sam test (res != FR_OK) sprawia problemy.
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...
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 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] /* ****************************************...
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,...
stm32 printf printf double stm32f printf
router cisco ustawienia fabryczne comarch optima pompa vacum regeneracja
lutownica arduino lutownica arduino
Najnowsze oprogramowanie Pioneer VSX-930 - gdzie znaleźć? Migający wyświetlacz w pralce Candy Rapid - przyczyny i rozwiązania