ODR steruje wtedy pullupem jeśli taki tryb działania wybierzesz. Co do funkcji działających na portach, to - jak pisałem wyżej - dorobienie takiej która robi konfigurację dla więcej niż jednego pinu to 2 linijki, a taka która wystawia wartość czy ją odczytuje jest bezsensu, bo od tego masz rejestry, więc czemu nie odczytać ich wprost (ewentualnie funkcja...
To pojawia się więcej opcji oraz UF2; Tu też nie rozumiem kompletnie filozofii pojawiania się w opcji Port, tego niby urządzenia UF2. Bo sama metoda wgrywania, że przez kopiowanie pliku wsadu (.uf2) na dysk, jest wybrana już w innej opcji Upload Metod. A do opcji Port trzeba wciąż wchodzić jeśli np. korzysta się z monitora portu i przełączać co chwilę....
Nie, nie. Jest ok ;] Osobiście nie stosuję takiego zapisu dla tablic dlatego tak pytam. Dodaj ten config od RCC i daj znać. Bez tego nie miało prawa działać. Chyba, że gdzieś jakaś inna funkcja niejawnie to robiła, nie wiem.
1. Wykasuj wszytko co masz w pliku main.c 2. Dopisz do niego : #include "stm32f10x_rcc.h" int main(void){ RCC_ClearFlag(); //jakaś przypadkowo wybrana funkcja z biblioteki STM32 } 3. Umieść w tym samym katalogu co plik main.c pliki: stm32f10x_rcc.c stm32f10x_rcc.h 4. Dodaj do projektu plik stm32f10x_rcc.c (poprzez wybranie "Add Existing File...") 5....
Po pierwsze - nie wybrałeś która niby funkcja alternatywna ma być na pinie. Po drugie - pętle oczekujące w funkcji WriteSPI masz całkowicie źle. Po trzecie - czemu mamy się domyślać, że chodzi Ci o STM32F4? 4\/3!!
Czasem Arduino do czegoś się przyda Dodano po 2 Możesz dać przykład takiej krytycznej czasowo operacji? Problem jest a raczej był związany z buforem nadawczym uarta. Mam funkcję: Blokuj tylko przerwania od UART.
Dziwna rzecz z tym delay'iem. O ile proste miganie ledem nieznacznie przyspiesza po optymalizacji o tyle taki delay w funkcjach obsługi LCD jest "na oko" 20-30 razy szybszy. Nawet jeśli te dwie rzeczy występują w tym samym programie. Przy włączonej optymalizacji ten delay sprowadza się do wywołania PUSTEJ funkcji, bo cały "środek" zostanie zoptymalizowany....
Jak to zrobić: 1. włączasz przerwanie od timera w NVIC 2. Konfigurujesz timer, żeby generował jakieśtam przerwanie Odpowiedzi na pytania: 1. No bez timera raczej nie zrobisz przerwań co jakiś czas [; 2. Funkcja przerwania po prostu musi nazywać się DOKŁADNIE TAK SAMO jak jest wpisana w tablicy przerwań (zwykle CośtamCośtam_IRQHandler() ) 3. Hę? Przykłady...
https://obrazki.elektroda.pl/9462291700_... Chciałbym zaprezentować rozwinięcie eksperymentalnego odbiornika SDR, jaki opisałem ostatnio: https://obrazki.elektroda.pl/6947080100_... https://obrazki.elektroda.pl/7046555300_... Najbardziej w tym momencie interesującym fragmentem płyty jest głowica: https://obrazki.elektroda.pl/9911930900_...
Przyczyny najpewniej należy szukać w bibliotece do STM32 (FWlib) . Nigdzie indziej. Twoj kod wydaje się być poprawny, aczkolwiek nadal nie istnieje tu taka dusza co by wiedziała, co dokładnie robi Czyżby nigdzie? ...
Tz że router próbował przydzielić adres 192.168.1.102 ? Tak! Aby DHCP działało, twoje oprogramowanie musi je obsługiwać! Widać, że router próbuje ci wepchnąć adres 192.168.1.102, ale płytka milczy. Proponuję wejrzeć w kod i zacząć od tego, czy płytka odbiera ramki (obserwować całość Wiresharkiem). W płytce po odebraniu ramki (czyli funkcja ETH_CheckFrameReceived()...
po co w niektórych implementacjach takich 'rozbiegówek' mamy kod assemblerowy który kopiuje adres stosu do rejestru SP procesora? STM32 może używać dwóch stosów - jednego dla przerwań (nazwanego wyjątkowo myląco "main stack") i drugiego dla wątków (nazwanego "process stack") - a więc i dla "main()". To co jest w tablicy wektorów ląduje w MSP ("main...
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...
wybralem do tego PORT_B_PIN11 i PORT_B_PIN_12, nie jestem pewien czy dobrze to sprawdzilem w nocie katalogowej, ale wydaje mi sie ,ze one powinny byc 5V tolerant. Te są OK (jeśli masz STM32F103x8/B...) - w datasheecie musi przy danym pinie być dopisek "FT" w odpowiedniej kolumnie tabelki. Generalnie piny z przetwornikami ADC nie są 5V tolerant. A ja...
Jak wygląda sprawa z przerwaniami? Tam zamiast przerwań są używane callbacki. To nie tak jest. Callbacki są całkiem do czego innego. W programie HALowym, to użytkownik pisze obsługę przerwań sprzętowych (tak jak w klasycznym podejściu "rejestrowym") a specyfiką HAL jest tylko to że dostarcza pewnych gotowców na obsługę przerwań. Przykładowo weźmy uart....
Niestety funkcja umieszczająca dane w kolejce potrzebuje wskaźnika na te dane. Jeśli masz dużo takich danych stałych to umieść je w tablicy stałych a w #define zadeklaruj wskaźniki do danych w tej tablicy. [syntax=c]const int ConstTab[] = { 10,20, 30, 40, 50}; #define STALA_A (&ConstTab[0]) #define STALA_B (&ConstTab[1]) #define STALA_C (&ConstTab[2])...
A teraz pytanie - wiesz co to buforowanie strumieni? Jeśli nie wiesz, to proponuję wywołać PO Twoim fprintf() do wyświetlacza funkcje fflush(). I teraz pytanie - czy gdzieś jest kompletna lista funkcji które nie są zaimplementowane w Bare Metal ? Wszystkie są zaimplementowane. Uwierz mi że to wszystko działa tak jak trzeba - używam osobiście do obsługi...
Gdzie tu się zmieniają parametry? Częstotliwość jest stała, amplituda jest stała. Spróbuj zrozumieć jak działa ta funkcja generująca po 512 próbek dla 16 (NoteMax = 16) różnych kanałów dźwiękowych na podstawie sampli w czasie rzeczywistym na STM32F746. Próbkowanie z częstotliwością 48 kHz. [syntax=c]void dds_generator(uint16_t len) { for(uint8_t NoteIndex=0;...
Ja na samym początku przerzucam wektory przerwań na początek pamięci RAM. A później wstrzykuję swoją funkcję w miejsce oryginalnego wektora. Po rozmyślaniu na ten temat doszedłem do następujących wniosków. 1. Możliwość dynamicznej rejestracji przerwań (najlepiej w wysoce abstrakcyjny sposób, tak aby funkcje nie musiały być publiczne) byłaby z pewnością...
Jaki jest poprawny opis działania jaki ma spełniać ta funkcja ? Ta ? Link Czy ta ? Link Wg manuala dostarczonego z kompilatorem wynika że funkcja zwraca wartość 0 lub - 1 w zależności czy działanie się powiodło czy nie. Ale działanie innych funkcji wskazuje na wersję pierwszą , czyli zwrot wartości indeksu w strumieniu. Osobiście nie widzę sprzeczności...
Tu dyskusja na ten temat.... [url=http://www.elektroda.pl/rtvforum/to...
Idea generalnie jest prosta - jeśli po wystąpieniu przerwania będziesz chciał zrobić coś co trwa "długo", to nie robisz tego w przerwaniu, bo blokujesz tym cały program - wtedy stosujesz polling flagi programowej lub sprzętowej. Jeśli chcesz zrobić coś co trwa "krótko" lub jeśli chcesz zrobić coś co musi być zrobione "natychmiast" po wystąpieniu przerwania...
Ok, samo _sbrk() nie alokuje pamięci. Nie mniej jednak _sbrk() może mieć mechanizm sprawdzający ilość pamięci dostępnej dla sterty. W związku z tym dlaczego ten rozmiar musi być w moim przypadku (a może nie tylko w moim) większy od 0x20+0x9E4 i gdzie jest to napisane, że rozmiar pamięci dostępnej dla utworzenia sterty musi być większy od jakiejś wartości?
Załóżmy, że jednym zdarzeniem chcesz zbudzić kilka układów. STM dostaje sygnał (np. od klawisza) i generuje event a wyjście eventout przekazuje go dalej (np. do innego procesora który też ma wstać, kontrolera LCD czy gdziekolwiek indziej). Wot wsjo.
http://obrazki.elektroda.pl/7258579400_1... Witam. Chciałem dzisiaj przedstawić kolejny projekt z cyklu "inni mają - mam i ja" ;) Tym razem jest to miniaturowy sterownik ethernetowy - " uWebServer ". Układ zbudowany został w oparciu o mikrokontroler Cortex-M3 - STM32F103C8T6, do tego kontroler ethernetu "znany i lubiany" - ENC28J60. Całość...
https://obrazki.elektroda.pl/5694434400_... Moduły zasilaczy warsztatowych, takie jak DPS5005, dostępne są od dłuższego czasum.in. na AliExpress. Doczekały się wielu recenzji, w większości pozytywnych. Jednakże często wskazywanym problemem z tymi modułami jest kiepskiej jakości oprogramowanie – interfejs użytkownika pozostawia...
http://obrazki.elektroda.pl/8034957300_1... Z racji iż były święta i było kilka dni luzu postanowiłem w ramach rozruszania szarych komórek pobawić się płytką HY-MiniSTM3V. Znawcy procesorów ARM doskonale znają tę płytkę więc znają jej możliwości. Samo mruganie diodą mnie nudzi, więc wymyśliłem projekt bardziej ambitny :D i tak powstał...
Witam , Wracam do tematu . Zegar skończony i przetestowany . Podziękowania dla autora za pomoc . Kilka krótkich filmów z pracy zegara wykonane telefonem . https://filmy.elektroda.pl/11_1551555088... https://filmy.elektroda.pl/90_1551555174... https://filmy.elektroda.pl/15_1551555225... https://filmy.elektroda.pl/89_1551555287... Jedna z dwóch gier...
Autor wątku w dziale "początkujący" zadał pytanie o podstawy języka. Po 10 postach mamy już wspomniane atrybuty gcc, "pragmy" kompilatora, wskaźniki na funkcje, zamieszanie związane z słówkiem "inline", sugestie że kompilatory czasem robią wyjątkowo dziwne rzeczy (choć wiadomo że w tym przypadku autor używa gcc). Czekam aż ktoś napisze coś o undefined...
https://obrazki.elektroda.pl/7656017200_... O komputerach jednopłytkowych czy stare komputery były lepsze od współczesnych platform rozwojowych i SBC? Nie lubię Arduino I to jest jak najbardziej prawda. Arduino to platforma, która miała dać łatwy dostęp do programowania elektroniki ludziom, którzy nie znają się ani na elektronice,...
https://obrazki.elektroda.pl/3252078300_... Poniższy artykuł przedstawia – krok po kroku – wykonanie niewielkiego, kieszonkowego oscyloskopu cyfrowego. Nie jest on tak dobry jak zwykły warsztatowy oscyloskop, ale z drugiej strony można zabrać go niemalże wszędzie. Poza tym – nie wszystkie projekty DIY muszą mieć sens....
do tego chyba jest potrzebny wbudowany w układ jakiś akumulator Nie jest potrzebny. Akumulator jest potrzebny tylko do zegarka. zależy mi na tym żeby stacja zapamiętywała kalibrację kilku grotów ...a masz czym kalibrować te groty? Naprawdę ma dla Ciebie znaczenie rozrzut kilku stopni pomiędzy grotami? Twoja dotychczasowa stacja miała odchyłki kilkunastu...
https://obrazki.elektroda.pl/4504656600_... https://obrazki.elektroda.pl/4128476100_... https://obrazki.elektroda.pl/1757195800_... https://obrazki.elektroda.pl/9734649000_... https://obrazki.elektroda.pl/4717614300_... https://obrazki.elektroda.pl/4176235900_...
Cześć, W wolnym czasie uczę się układów STM32 na płytce STM32_Smart_v2 (https://stm32-base.org/boards/STM32F103... Próbuję uruchomić pamięć eeprom, która jest na tej płytce na podstawie kursu (https://forbot.pl/blog/kurs-stm32-11-i2... Niestety program nie działa - funkcja I2C_EVENT zwraca error....
https://obrazki.elektroda.pl/9151185000_... Druga część artykułu o najtańszych nowych mikrokontrolerach z roku 2017. Ekosystem developerski Środowisko developerskie mikrokontrolera ma ogromny wpływ na jakość pracy z nim i w konsekwencji - na produktywność. Na to składają się różne czynniki – jakość IDE, dostępne biblioteki, płytki...
Po kilku godzinach program odpaliłem ..... podświetlanie się załącza dopiero po naciśnięciu kilka razy klawisza, monitor pokazuje start i numery naciśnietych klawiszy i to nie za każdym naciśnięciem. nie wiem jak "zatrzymać" dany ekran menu żeby zrealizować inna funkcje np; zmiana stanu wyjścia /* * sterownik który wykończy mnie i innych ..............
Witam, Jako że jestem początkujący w dziedzinie STM32 napotkałem problem nie do przejścia. Moim zadaniem jest wysyłanie inkrementowanej zmiennej "Dane" która jest wysyłana przez USART i odczytanie jej przez terminal. W konsekwencji wyrysowując otrzymane wartości powinienem uzyskać coś podobnego do piły o amplitudzie od 0 do 255. Bez DMA wszystko pracuje...
https://obrazki.elektroda.pl/2759406900_... 8-bitowe mikrokontrolery nadal można znaleźć w wielu projektach, ale dzięki nowemu, niedrogiemu 32-bitowemu z rdzeniem AMR Cortex-M0+ taktowanym 48 MHz — STM32C0 — firma STMicroelectronics dąży do wyparcia 8-bitowych jednostek. Co może się odbyć wskutek: „ograniczonego wpływu...
Według mnie dobra biblioteka powinna: - o ile to mozliwe byc niezalezna od sprzetu, funkcja inicjalizująca może pobrać strukturę ze wskaźnikami do funkcji robiącymi odpowiednie rzeczy na sprzęcie - być reentrant (brak danych globalnych), operujemy na obiekcie przeazywanym jako pierwszy argument - wszystkie symbole niewidoczne na zewnątrz powinny być...
Dzień dobry, postanowiłem zacząć przygodę z rejestrami na mikrokontrolerach, skupiam się obecnie na STM32 C011 z racji, że znam już jakieś solidne podstawy HALowskie. I dostałem już niczym strzał z liścia pierwszy problem - mianowicie dioda dołączona do mikrokontrolera na wyjściu nie chce mrugać. Z dokumentacji mikrokontrolera wraz z całą płytką wynika,...
Witam Tak , to ten wyświetlacz Tak o nim piszą na tej stronie https://es.aliexpress.com/item/100500453...
https://obrazki.elektroda.pl/2362924400_... Nie każdy pływa z zamiarem udziału w olimpiadzie ;-) Jest coś takiego jak hobby, ciekawość... na różnym poziomie wiedzy. Kompletnie się nad tym nie zastanawiałem, systick jest bardzo prosty w podstawowej obsłudze i go użyłem. funkcja może przyjąć 32 bity, myślałem że mogę wpisać praktycznie...
Na razie Twoja funkcja SendSpi niczego sensownego nie wysyła, bo przed wysłaniem czyścisz bufor. Proponuję też walczyć z jednym problem na raz, tzn. na początek użyć funkcji transmisji bez DMA, a jak to zadziała, to dołożyć DMA.
Odwrotnie - funkcje przerwań mogą być zwykłymi funkcjami, bez żadnych dziwactw, bez atrybutów, bez assemblera. Czyli to nie chodzi o to że one mogą być wywołane tak ot sobie jak zwykła funkcja jak nam jest potrzebna, tylko o to że deklaruje się ją jak zwykłą a jej użycie to zupełnie inna sprawa?
Funkcja NVIC_SystemReset() z CMSIS.
Ja nie lubię STM32, a STM32 mnie! Muszę coś zrobić na STM32 i robię to w Truestudio. Na razie proste testy na przypomnienie sobie STMów i wejście w C++ i na dzień dobry ściana! Po kompilacji w tablicy wektorów przerwań jest tylko adres na DefaultHandler. Mimo tego, że nazwa funkcji obsługi przerwania jest taka sama jak w pliku ze startupem i funkcja...
A może w tym miejscu, gdzie wykonujesz sscanf(), RxBufferRMC nie zawiera poprawnych danych? Może ma nie taki typ, jak trzeba? I w tablicy RxBufferRMC wg debuggera mam dane w typie uchar i w tablicy str(który działa) też dane typu uchar. I nie wiem, czy muszę np. zrobić jeszcze jedną tablicę, która pobiera aktualną linię, potem użyć sscanf, na koniec...
Zainkluduj plik nagłówkowy <string.h>, tam masz prototyp tej funkcji.
Co do samego programu to co racja to racja. Można było wykorzystać licznik, który dałby większą dokładność, ale to nie było istotą problemu. Koledze chodziło o skorzystanie z timera w celu zmniejszenia poboru prądu przez to twoje urządzenie. Mikrokontroler powinien cały czas spać, bo nic nie robi, do tego powinien chodzić na jakimś niskim zegarze....
Najważniejsza różnica systemowa to 8 bit vs 32 bit. 32 bit daje ci realną szansę na używanie protokołów wysokiego poziomu takich jak Ethernet czy podłączenie kolorowego wyświetlacza. Proste czujki oczywiście prościej podłączyć do Arduino, ale gdy zapragniesz łączności ze światem 32bit ARM będzie dużo prostszym rozwiązaniem. Niezawodność to w tym przypadku...
Po utworzeniu semafora wywołanie SemaphoreTake zawsze zwraca pdTRUE, nawet jeżeli nie została wywołana funkcja SemaphoreGive. W związku z tym zaraz po utworzeniu należało by go "wziąć"(oczywiście trzeba to wykonać przed włączeniem taska/przerwania które coś sygnalizuje tym semaforem). Problem ten pojawiał się jakiś czas temu na portach STM32 oraz SAM7S...
https://obrazki.elektroda.pl/2451334200_... Rozpocznijmy odpowiedź na to pytanie od spojrzenia wstecz na epokę programowania "bare-metal". Czym jest tego rodzaju programowanie? W informatyce "gołe urządzenie" odnosi się do procesora wykonującego instrukcje bezpośrednio na fizycznym sprzęcie logicznym bez interweniującego systemu operacyjnego....
BTW: funkcjonalność Twojej funkcji (floatToString) pokrywa standardowa funkcja sprintf (lub bardziej bezpieczna snprintf). Nieprawda (; Jak do sprintf() przekażesz floata o wartości np. 10000000 to zostanie skonwertowany (mniej lub bardziej dokładnie, abstrahuję tutaj od problemów precyzji), a w tej funkcji to już niekoniecznie [;
No tak tyle że to oferta z oficjalnego sklepu więc może jest szansa na to ale jaki to by mialo sens jeśli jest w oprogramowaniu nawet taka funkcja a nie da się z niej korzystać
Widziałem kilka takich kalkulatorów, ale każdy ma kilka opcji dodatkowych. Ja nie wiem jaki typ CRC16 zastosowano w Modbusie poza tym opisem algorytmu. Opis ten jest dokładnie taki jak powyżej (skopiowany z .pdf). A jak wyglada funkcja tworzenia takiej sumy z tablic?
A jeśli wyślę 21 to gdzie one będą się znajdowały? W jakimś buforze ? W "*pData" Obsługą przerwania jest sama funkcja HAL_UART_Receive_IT() Ta funkcja aktywuje odbiór na przerwaniach. Samo przerwanie to przykładowo "HAL_UART_RxCpltCallback();" ale możesz obejrzeć funkcję, która wywołuje "HAL_UART_RxCpltCallback();" i będziesz miał jasność co się i...
Jeżeli masz kilaka funkcji alternatywnych, połączonych do jednego pinu, to musi być jakiś sposób żeby aktywować tą która cię interesuje. W STM32 lib służy do tego funkcja GPIO_PinAFConfig();. Są też procesory w których każe urządzenie ( SPI, I2C, TIM...) mają podłączenie tylko do jednego pinu, tam funkcja GPIO_PinAFConfig(); nie występuje.
Witam! Uczę się programowania mikrokontrolerów STM32 (aktualnie męczę STM32F103). Programy piszę w C, ale co jakiś czas zerkam w to co spłodził kompilator - w celach edukacyjno-poznawczych. Napisałem prostą funkcję obsługi przerwania od SysTicka. Deklaracja funkcji ma postać: [syntax=c]void SysTick_Handler(void) __attribute__((interrupt));[/syntax]...
Ja mam tak: __attribute__ ((section(".bootloader&... int program_page(unsigned short *data, unsigned int adr) {... } i linker: .bootloader 0x08000000+128K-1K : { *(.bootloader) } i działa
21.03.2019 - Zgodnie z sugestią moderatora załączam spakowany projekt A tam już nie ma funkcji fillCircleHelper() zadeklarowanej i zdefiniowanej jako statycznej, więc rozumiem, że problem się rozwiązał. Poprawiłeś również pętle for() w funkcji ILI9341_printText(). Czy można się dowiedzieć, dlaczego wcześniej deklarowałeś funkcję fillCircleHelper()...
Witam. Jak ustawić bity (na podstawie noty niżej) aby alarm włączał się co 1 godzinę? https://obrazki.elektroda.pl/5535926500_... [syntax=c] void setNextAlarmA(RTC_HandleTypeDef *hrtc) { //RTC_TimeTypeDef currentTime = {0}; //HAL_RTC_GetTime(hrtc, ¤tTime, RTC_FORMAT_BIN); //RTC_DateTypeDef sDate = {0}; //HAL_RTC_GetDate(hrtc, &sDate,...
itoa nie jest "na AVR" - to funkcja biblioteki standardowej C, więc na STM32 też powinna być dostępna, podobnie zresztą jak sprintf (która niestety zjada dużo pamięci). Można też napisać własne funkcje konwersji, które będą robiły dokładnie to, co jest potrzebne.
u mnie to działa. Pomogło wykonanie instrukcji w tej kolejności: [syntax=c] SetSysClockTo24(); NVIC_SetVectorTable(NVIC_VectTab_FLASH,(... NVIC_PriorityGroupConfig(NVIC_PriorityGr... RCC_APB2PeriphClockCmd(RCC_APB2Periph_AF... ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disab... ENABLE);[/syntax] Przepraszam, jeśli odkopuję staroć,...
Witam, mam problem z moim urządzeniem, mianowicie... STM komunikuje się z ESP8266 przez USART i wysyła do niego komendy "AT", przy pierwszym włączeniu inicjalizacja ESP (połączenie z wifi, cwmode itd) działa poprawnie i każde polecenie wykonuje się kolejno. Kiedy dojdziemy do programu głównego i mikrokontroler znajdzie się w zdarzeniu, gdzie powinien...
Co do progu wejścia, to mimo wszystko mikrokontrolery 8-bit mają prostsze peryferia do oprogramowania. W pierwszej kolejności zależy to od zastosowanego HAL oraz IDE, a nie liczby bitów w MCU. Zgadzam się w całej rozciągłości. W RPi mam skomplikowany 4-rdzeniowy uC 64-bit a bez problemu obsługuję nie tylko SPI, UART czy I2C ale i USB i HDMI. FAT mi...
(at)marycyś Funkcja SysTick_Config znajduje się w nagłówkach CMSIS. Poszukaj czy masz je dołączone do projektu.
Witam W debugger jestem cały czas. Przy probie wywołania funkcji mam błąd. a= LaderFunADD(&b, &c); Nie wiem ewentualnie jaki rejestr mógłbym sprawdzić. Wziąłem nawet cały projekt od kolegi Chopina stm32_blink_led. W makefile dodałem, linia 59: LIBS = lib_addLader.a Header plik lib_addLader.h extern short LaderFunADD (short* a, short *b);...
Działa. Wystarczyło zmienić szukany znak z backslasha na '\n'. Ostatecznie modyfikacja wygląda nastepująco: if (character == '\n') { __fputc_('\n', stream); __fputc_('\r', stream); continue; } Dopracowałem rownież funkcje usart_put_char, zamiast wprowadzać delaya sprawdzam flage czy UART zakończył poprzednią transmisję....
Witam Dlaczego przy włączeniu zasilania lub po resecie STM32 zawsze spełniony jest warunek mimo, że nigdzie nie jest wywoływana funkcja osSemaphoreRelease() ? [syntax=c]static void SemaphoreTest(void const * argument) { osSemaphoreId semaphore = (osSemaphoreId) argument; for(;;) { if (semaphore != NULL) { if (osSemaphoreWait(semaphore , 0) == osOK)...
Witam, Od jakiegoś czasu pracuję nad obsługą karty SD oraz FatFS. Bazuję na przykładach dołączonych do książki "Mikrokontrolery STM32 w praktyce". Podczas debuggowania doszedłem do momentu w programie, który powoduje niepoprawne działanie. Otóż w funkcji disk_initialize( BYTE) znajduje się następująca linia: [syntax=c] if (send_cmd(CMD0, 0) == 1) [/syntax]...
Ta funkcja void hardFaultHandlerC(u32 *stack) to jest uchwyt do przerwania czy to jest funkcja którą muszę gdzieś wywyołać? Ta funkcja to jest tylko funkcja, uchwyt to ta funkcja nizej napisana w asmie...
Wywaliłem całe biblioteki stma a makro TXE i RXNE mam już wcześniej zajęte dla Usart A ta funkcja to dobrze jest napisana?
Jedyne co uzyskałem to funkcja f_mount zwracała błąd FR_NO_FILESYSTEM zamiast FR_DISK_ERR. Jak uruchamiasz urządzenie jak karta SD to nie zaczynaj od systemu plików. Zacznij od zapisania lub odczytania jednego bloku. Zmniejszaj ilość potencjalnych problemów. Zapomnij na razie o plikach.
Jeszcze przed wstawieniem posta sprawdzałem (zmęczenie) . Faktycznie funkcja konfiguracyjna ustawia wszystko tak jak powinna. Muszę przyczepić się taktowania. Pozdrawiam.
Gdybyś jeszcze pokazał co zawiera funkcja VS1003_SPI_transfer(_reg); Jest przecież w kodzie, który załączyłem. Na samym dole... jak skonfigurowałeś GPIO Konfiguracja przeprowadzona w STM32CubeMX. Sprawdzałem kilkukrotnie i nie widzę niczego podejrzanego. Wygląda następująco: - CS, DCS i RST ustawione jako wyjścia. - DREQ ustawione jako wejście. Jak...
Nadajnik zbudowany na procesorze STM32 z USB jako nadajnik 868MHz używam SI4020 lub SI4021 to praktycznie to samo. Dzisiaj własnie udało mi się odszukać dlaczego nie startował SI4021 ( nie uwierzycie ale wszystko przez ceramik 100uF na zasilaniu - szukałem tego przez 2 tygodnie w kodzie). Program na PC prosty pilot symulujący pilota 10 klawiszowego....
Dokładnie tak, interesowało mnie dlaczego kod nie działa w takiej sytuacji. Miałem takie problemy z testowaniem własnego kodu po wrzucaniu do ram lub flash naprzemiennie, niestety nie dotarłem do przyczyny i sobie darowałem. Płytka to olimexino stm32 z STM32F103RBT6. Zasadniczo wszystko ma swoje źródło w tablicy wektorów, znajdującej się w pamięci...
Przeglądajac internet nie widze nic a nic co mogloby się nadac na Eclipse, gdzie pisze czysty kod C a nie uzywam biblioteki HAL itd. Najlepiej zacząć od strony producenta :) Dodano po 3 Przykłady: Cos wymodzilem razem z przykladem z ksiazki dla HAL ale... nie umiem odebrac niczego z ESP8266 i wyslac do mojego PC tzn. Mam dzialajace funkcje odbierz...
Witam Hmm, walczę od jakiegoś czasu z uruchomieniem toolchaina Eclipse + CodeSourcery itd dla STM32 (dokładnie STM32F107VCT) i mam pewien problem. Przejrzałem kilka różnych projektów, w których podpatrywałem pliki skryptowe linkera (*.ld) jak i pliki makefile. Na razie kompiluje mi się gdy przykładowo zrobię plik main.c z takim kodem: STM32F10x_StdPeriph_Lib_V3.5.0...
Sygnał REF_CLK powinien być generowany przez cały czas, gdy chcesz mieć aktywny interfejs Ethernet. Najpierw konfigurujesz układ MAC (zegary, typ interfejsu MII/RMII), następnie aktywujesz taktowanie PHY za pomocą REF_CLK. Gdy zamienisz kolejność (najpierw taktowanie PHY, później ustawiasz w STM interfejs MII/RMII) to program zawiesi się w pętli: [syntax=c]...
Aha :D . Szczerze mówiąc myślałem, że ta funkcja "robi" coś innego. Napisałem gdzieś, że jest błąd w kompilatorze? W STM32 jestem dość początkujący.
A czy zauważyłeś że powyżej tez jest ta sama funkcja użyta? I w pierwszym przypadku może powrócić z funkcji LCDN_SPI_Transmit() a już jakoś w drugim nie?
Zauważyłem, że po obsłudze karty SD wysyłam bajt komendy do wyświetlacza i do tej chwili jest dobrze. Następnie wysyłam bajt danych i tu funkcja HAL_SPI_Transmit_IT() zwraca wartość HAL_BUSY. Zagłębiając się dalej w powyższej funkcji sprawdzany jest warunek: Dodano po 4 Uprościłem maksymalnie: Dodano po 16 Samo zamontowanie FATFS buraczy [syntax=c]if...
To już z przyzwyczajenia. Warning byłby gdyby funkcja była zadeklarowana jako nie void. Hmm, dla funkcji "nie-void" byłoby chyba standardowe ostrzeżenie, że nie zwraca wartości gdyby "return x" był za __builtin_unreachable(); i przez to kompilator usunąłby go jako kod, do którego i tak nie dojdzie. A wspomniany w linku warning, według mojego rozumienia,...
bo czas kopiowania jest bardzo krótki. 50us to nie jest krótko. A juz na pewno nie "bardzo krótko". Tak na prawdę nie wiesz, czy funkcja wykonuje się 50us czy 80us, bo lipnie mierzysz czas...
W takim razie napisz port STM32 samemu. W katalogu /demo/BARE znajdują się 2 pliki portserial oraz porttimer, musisz uzupełnić implementacje funkcji w nich zawartych (w komentarzach jest opisane co dana funkcja ma robić). Nie jest to trdune bo są to funkcje konfigurujące usart i timery, zatrzymujące i startujące transmisje/odliczanie, więc napisanie...
To drugie - to zapewne albo zła funkcja współpracy z LCD albo podłącczenie LCD niezgodne z tym, co jest w oprogramowaniu.
Choć dopiero zaczynam przygodę z STM32 to po mojemu nadpisujesz strukturę i dlatego zawsze działa Ci ostatnie zdefiniowane przerwanie. O ile przed napisanie jest funkcja inicjująca przerwanie nic takiego nie ma miejsca. Prędzej brak kasowania flag.
Po pierwsze sorry za zwłokę. Po drugie na pewno linii nie pomyliłem. linie adresowe na pewno są przypięte do masy ponieważ na Arduino działa. Adres też nie powinien się zmienić. zegar ma 100k (standard). Zauważyłem, że jak zmienię linię z PB9 na PB7 (SDA), a z PB8 na PB6 (SCL) (to się chyba mapowanie nazywa) to zmienia mi się z HAL_ERROR na HAL_BUSY...
Witam Mam napisać kod w programie CooCox na płytkę. Szukałem informacji w internecie i jest dużo informacji co do same zasady działa magistrali CAN np tu: [url=http://mikrokontroler.pl/2013/06/10... Niestety nie mogę znaleźć przykładowego kodu programu, gdzie by było wytłumaczone zasada działania....
Nie wiemy nic o typie uC. Jeśli nie jest to Cortex-M4, to zapewne przyczyna kłopotu leży w bezsensownym i niepotrzebnym użyciu typu float. Użycie dwóch przerwań od dwóch timerów też ciut bez sensu, przecież wystarczyłoby w co 20-tym przerwaniu timera od pomiarów inicjować transmisję danych. Czy funkcja HAL_UART_Transmit_IT() jest blokująca? Mam nadzieję,...
Co do opoźnień to nie pomoge bo nie wiem jak działa kontroler i2c w stm32 - trzeba by doczytać. Zgadza sie 0x1D tylko dopisz sobie bit kierunku do tego . Funkcja od zapisu adresu mimo opisu nazwy nie robi nic z adresem i nadpisze Tobie adres kierunkiem . -- waski monitor to nie zauwazylem ze na koncu tabelki sa dobre wartosci .
Niestety nie ma takiej możliwości przez tą funkcję. Bliżej tego co oczekujesz jest funkcja OSTimeDly, w której podaje się liczbę tick'ów. Mimo to ograniczeniem pozostaje częstotliwość przerwania systemowego. Musiał byś je znacząco podkręcić. Jednak do 1us nie zejdziesz - nakład na wywołania funkcji systemowych jest zbyt duży. Lepszym rozwiązaniem przy...
TrueStudio oprogramowanie w języku C. Funkcja ma być jeszcze dodatkowo taka że ma kod wyświetlać na dołączonym do mikrokontrolera ekranie.
Bo jak programujesz 1000 szt to robisz to kilka razy szybciej. Jeśli programuję takie ilości to zamawiam preprogramowane elementy, lub programuję EEPROM przed wlutowaniem. Przecież gdyby to miał robić MCU to musiałbym mieć program, który po pierwszym uruchomieniu jest zbędny. Zresztą i tak zostaje mi programowanie 1000 MCU. tmf napisał: A jakie to...
Przepraszam za nieścisłość wyświetlacz YM2004A jest wyświetlaczem 4 liniowym(20x4). Niemniej sterownik interpretuje to jako (40x2) i wyświetla znaki na 1 i 3 linii LCD. Początkowy kod inicjalizacji(ten który wkleiłem w pierwszym poście tematu) był z tego co zauważyłem napisany na sterownik HD44780. Sterownik mojego wyświetlacza to KS0066U. Z tego co...
Wygląda że problem częsciowo rozwiązany ;-) Zmieniłem na zmienne globalne - tak jak sugerował MODI i działa ;-) ale też dodałem sygnalizację błędów przy zapisie na kartę i widzę że funkcja f_printf sprawia problemy z zapisem : [syntax=c] res = f_printf(&myFile, "index:%u,\r\n", index_x); if (res != FR_OK) {SD_Error(5);}; [/syntax] jak ją usunę to działa...
Cześć, czy taka konfiguracja projektu jak na screenie jest optymalna? Korzystam z Keila gdzie ustawiłem dodanie do projektu w zakładce CMSIS Core i w Devices Startup. Używam płytki stm32f303vc Discovery i próbowałem też w czystym projekcie dodać tylko biblioteki core_cm4.h, cmsis_gcc.h i stm32f30x.h ale wyskakiwały mi błędy i nie potrafiłem tego ręcznie...
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...
Tak, operację programowego resetu pinu I/O należy przeprowadzić przed każdym transferem po I2C. Strasznie upierdliwe. Ok, w międzyczasie postanowiłem zrobić eksperyment i faktycznie dodanie operacji opisanej w erracie pomogło w przypadku zapisu. Mój kod wygląda w tej chwili następująco: Mam soft I2C dla STM32. Jeżeli jesteś zainteresowany, to wkleję...
stm32 funkcja callback funkcja funkcja bascom funkcja furtki
taśma klawiatura laptop czyścić stacji pogodowej czujnik arduino monitorowanie
philips mcm302 osuszacz powietrza
Jak zmienić tryb AHCI na IDE w BIOS-ie? Modicon M221 – wymiana baterii BR2032, lokalizacja, procedura, Schneider Electric