Niestety ale nikt z nas nie wie jakie masz ustawione taktowanie dla tej magistrali - to wie tylko magiczna funkcja stworzona przez ST. Nikt nie powiedział, że jest tam akurat 84MHz, tylko na pewno nie może być więcej. 4\/3!!
To dalej nie jest dobry kod. Co, wg Ciebie, sprawdza poniższy warunek? Zamiast zerować bufor, zapewne wystaczy poprawnie sprawdzać długość. Zwracając message przez wartość kopiujesz ją jeszcze raz.
To niech teraz też będzie samo =, bo OR nie ma tu najmniejszego sensu a tylko może zaszkodzić. Tak samo OR nie ma najmniejszego sensu przy inicjalizacji rejestrów USARTa, bo niby po co chcesz zachowywać stare wartości? A jak tam jest właśnie jakimś sposobem ZŁA wartość? Wpisz po prostu do dwóćh rejestrów dwie gotowe wartości i tyle, bez żadnych ORów....
1. Czy plik z ustawieniami zegara masz wygenerowany z narzędzia udostępnionego przez ST (plik xls z makrem)? Jeśli nie to to zrób. 2. W opcjach projektu powinieneś zdefiniować stałą określającą częstotliwość HSE w hercach [syntax=c] HSE_VALUE=8000000 [/syntax] 3. Sam nad tym spędziłem sporo czasu, zanim wykryłem brak tej stałej zdefiniowanej w preprocesorze....
Kanal nadal nie ustawiony, zły kierunek transmisji.
Ja mam coś takiego: [syntax=c] #define APB1_CLK 42000000 #define BAUDRATE 115200 void init_usart( void ) { RCC->APB1ENR |= RCC_APB1ENR_USART3EN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; gpio_pin_cfg( GPIOD, 8, GPIO_AF7_PP_50MHz_PULL_UP ); gpio_pin_cfg( GPIOD, 9, GPIO_AF7_PP_50MHz_PULL_UP ); USART3->BRR |= APB1_CLK / BAUDRATE; USART3->CR1 |= USART_CR1_TE...
Na przykład otwieramy manual na stronie, gdzie znajduje się opis rejestru MODER i czytamy, co oznacza jaka wartość pola bitowego w tym rejestrze - co trzeba wpisać, żeby dana linia portu była przypisana do peryferiala (np. UART), a nie do GPIO. Przed zapisem do MODER ustawiamy dla odpowiednich linii portu funkcje RX i TX odpowiedniego UARTa w rejestrze...
http://wikimarek.referata.com/wiki/Progr...
Więc po pierwsze i po drugie połącz wyjście TX z wejściem RX. Jeśli otrzymasz odpowiedź to wtedy zajmuj się modułem. Jeśli nie zostaw moduł w spokoju i zajmij się normalną komunikacją. W zależności od wyników będziesz także wiedział o co pytać, a nie obligował forumowiczy do brnięcia przez cały Twój kod. Albert
A gdzie masz włączanie przerwań od USART? Dodano po 7 Powinno być coś w stylu: NVIC_EnableIRQ(USART2_IRQn);
Znalazłem problem, aczkolwiek jestem bardzo zaskoczony. Błędem okazało się używanie transmitera z USART1. Kiedy USART1 i USART6 zamieniłem rolami okazuje się, że wszystko działa. Jedyne wytłumaczenie to to, że do PA9, pinu transmisji USART1 podłączona jest na płytce dioda wykrywająca zasilanie micro USB, przynajmniej ja to sobie tak tłumaczę, czy jest...
A co na to debugger? Wchodzisz w przerwanie UART? Wiesz, że bez zbędnych wywołań SPL/HAL program byłby z 5 razy krótszy? Np. zamiast: [syntax=c]NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemp... = 0x00; NVIC_InitStructure.NVIC_IRQChannelSubPri... = 0; NVIC_InitStructure.NVIC_IRQChannelCmd...
Parę przykładów DMA na STM32F bez SPL niedawno się tu przewinęło - szukaj. Włącz DMA w rejestrze AHBENR, a potem np. coś takiego: DMA1_Channel2->CMAR = (uint32_t)time; DMA1_Channel2->CPAR = (uint32_t)&USART1->TDR; DMA1_Channel2->CCR = 0;// disable DMA1_Channel2->CNDTR = sizeof(time);// no. of items // increment memory adress, mem->periph, enable DMA1_Channel2->CCR...
Wg mnie powinieneś resetować po transferze adres tablicy źródłowej - w końcu jest on automatycznie inkrementowany. 4\/3!!
Zacznij od zrobienia tego na pollingu, czyli w pętli while(1), bez przerwań, ale z poprawnym odczytywaniem flag TXE i RXNE przed zrobieniem czegokolwiek. Proponuje więc wrzucić do tej pętli coś takiego: [syntax=c]if ((USART3->SR & USART_SR_RXNE) != 0) { uint16_t x = USART3->DR; while((USART3->SR & USART_SR_TXE) == 0); USART3->DR = x; }[/syntax] Tym...
Wiem że ma wysyłać liczby i w terminalu przełączam się na kod dziesiętny i widzę że liczby nie są po kolei. Po prostu przesył jest błędny. Czy kod ustawiający piny GPIO i USART jest poprawny?
Może ten 'examples' pomoże: http://tech.munts.com/MCU/Frameworks/ARM... A dokładniej ten: http://tech.munts.com/MCU/Frameworks/ARM...
Ale na pewno bufor nie ma 2 bajtów. Ma - jeden bajt od razu jest ładowany do "shift register", a drugi czeka w rejestrze USART->DR. Dopiero trzeci i kolejne się nie mieszczą i muszą czekać na zakończenie wysyłania poprzednich.
[syntax=armasm]g_pfnVectors: .word _estack .word Reset_Handler .word NMI_Handler .word HardFault_Handler .word MemManage_Handler .word BusFault_Handler .word UsageFault_Handler .word 0 .word 0 .word 0 .word 0 .word SVC_Handler .word DebugMon_Handler .word 0 .word PendSV_Handler .word SysTick_Handler /* External Interrupts */ .word WWDG_IRQHandler /*...
Witam od dwóch dni mam problem z USART na stm32f4discovery. Otóż napisałem sobie prosty programik na bazie tego przykładu pod stm32f4discovery ze strony Freddiego Chopina, tyle że sam napisałem sobie konfigurację zegarów itd. Zrobiłem konfigurację USART 6, napisałem funkcję do wysyłania jednego bajtu oraz całego słowa i wrzuciłem sobie wysyłanie bajtu,...
Od tego jest RM a nie biblioteki wątpliwej jakości.
Osobiście nie zastanawiałem się nad tym długo, szukałem zestawu który ma chyba wszystko na pokładzie: Ethernet, Can, RS232, USB-RS, 485, pamięci Flash, Sram, Kartę muzyczną, Usb Host OTG, LCD + dotyk, złącze na karty SD i wiele innych... W polsce ktoś sprzedaje RedDragon za ~350zł ja zamówiłem to w chinach przez ebay i zapłaciłem z presyłką ~180zł uważam...
Hej, Poprawny kod który działą, to ten ponizej. Mysle ze mozemy zamknac temat. void UART6_Configuration(void) { __HAL_RCC_GPIOC_CLK_ENABLE(); /* Enable clock to PORTA - UART2 pins PA2 and PA3 */ __HAL_RCC_USART6_CLK_ENABLE(); /* Enable clock to UART2 module */ gpio.Pin = GPIO_PIN_6 | GPIO_PIN_7; gpio.Mode = GPIO_MODE_AF_PP;...
Witam, Chciałbym się podzielić "biblioteką" (a.k.a. długim plikiem nagłówkowym) do bit-bandingu do STM32F4. Plik definiuje dostęp do bitów do następujących peryferiów: ADC, GPIO, I2C, RCC, SPI, SYSCFG, TIM oraz USART. Dokumentacja w komentarzach na początku pliku. Smacznego.
samych errat jest 41 No ale dla jednego modelu mikrokontrolera (tak naprawdę dla kilku <; ) jest tylko jedna errata. Zresztą dla praktycznie każdego mikrokontrolera errata jest osobnym dokumentem. Teza obalona (; Ale pomijajac to ze dokumentacja jest rozbita, czasami jej jakosc jest po prostu do d... Generalnie da sie zyc z tym ze czasem niepotrzebnie...
A ja tak się zastanawiam po co męczyć się z timerami skoro usart w trybie halfduplex sie do 1wire nadaje idealnie?
Ogólnie co do płytek discovery, wszystkich modeli - zanim zaczniesz z czegokolwiek korzystać wydrukuj sobie z User Manuala płytki tabelkę (zwykle pod koniec dokumentu) i zaznaczyć na czerwono piny podpięte na płytce do czegoś tam - potem jak coś podpinam to pierwsze paczę czy nie jest na czerwono a jak jest na czerwono a chcę użyć to sprawdzam do czego...
Najtaniej zaprogramować można przez USART korzystając z fabrycznie wprogramowanego bootloadera. Jeżeli chodzi o programator/debuger - to tak, jak pisał ZbeeGin najprościej bedzie wziąć np STM8VLDiscovery. ST-Linki w tych wszystkich STM32x Discovery nie obsługują SWIM potrzebnego do STM8, tylko SWD.
Problem rozwiązany prz sprawdzaniu flagi TXE też brakowało średnika ;) działająca inicjalizacja i odczytywanie rejestru definicje #define LSI302DL GPIO_BSRR_BS_3 #define LSI302DL_SPI1_DISABLE GPIOE-> BSRRL |= (LSI302DL) //Set #define LSI302DL_SPI1_ENABLEGPIOE-> BSRRH |= (LSI302DL) //Reset #define LSI302DL_I2C1_ENABLE GPIOE->...
Nie chce mi się oglądać kodu ale tu masz mój działający kod F446 dla usart5 - tak że musisz sobie parametry zmienić. Dowolne długości przesyła. a tu akurat zeruje CR i wszystkie flagi ale to niekonieczne generalnie. [syntax=c] if(DMA1 -> HISR & (DMA_HISR_TCIF7)) DMA1 -> HIFCR |= (DMA1 -> HISR & (DMA_HISR_DMEIF7 | DMA_HISR_FEIF7 | DMA_HISR_HTIF7 | DMA_HISR_TCIF7...
Do BT wysyłasz komendy AT (jeśli moduł jest w trybie komend) lub dane (gdy jest "przeźroczysty") po USART. Poszukaj przykładów dla Arduino.
Oprócz wyżej opisanych kroków dodawales coś do includepatchs w konfiguracji? Masz tam coś? bo mi dalej się nie kompiluje bo oprócz warningow typu "warning format %x " są jeszcze errory tak jak by nie widział Gpio, usarta, Adc itp.
Witam. Próbuje oprogramować akcelerometr LIS302DL. Korzystałem przy tym z tematu: http://www.elektroda.pl/rtvforum/topic27... Problemem jest to, że nie otrzymuję odpowiedniej wartości przy zapytaniu WHO_AM_I. Terminal cały czas pokazuje wartość 0xff. Ponadto przy kompilacji dostaje warning'i: src\main.c(46): warning: #223-D: function "LISWrite"...
GPIOA->AFR Proponuję się BARDZO dobrze zastanowić nad tym kodem (abstrahuję w tym momencie od tego czy 7 << 2 * 4 jest czytelne [nie jest]).
(at)Piotrus_999 Mam przejściówkę usb ->uart i w ten sposób sprawdziłem że np prędkości 19200, 9600, 4800 działają bo przesyła mi dobre znaki na terminal, natomiast gdy ustawię w stm32f4 discovery prędkośc 300 lub 1200 to w terminalu mam krzaki.
GPIO_PinAFConfig nie powinno być przed GPIO_Init, tak strzelam. Poza tym każdą strukturę do konfiguracji peryferiów zainicjuj wartościami domyślnymi np. tak USART_InitTypeDef USART_S; USART_StructInit(&USART_S); Podejrzyj w debugerze rejestry konfigurujące USART i GPIO i prześledź czy wszystko jest OK
Dekoder to helix mp3, do bufora fifo(51200B) wkladam dane w przerwaniu od usart rxne. Stos i stera ustawione na 0x1000
Biblioteka STDPeriph jest martwa, więc lepiej ją zostaw i zainteresuj się HAL i CubeMx. Gdy program uruchamiam krokowo i jestem w petli for to dane się wysyłają. Za szybko ta pętla działa i dane za szybko są "wypychane". Należy odczekiwać odpowiedni czas za każdym razem. Regułą jest uprzednie sprawdzanie rejestru statusowego przed zapisem do rejestru/odczytem...
te 0xFF wygląda na IDLE frame
W STM32 bit parzystości wliczany jest do długości ramki. Jeśli więc ustawisz w STM32 długość 8 bitów i brak parzystości, to masz 8 bitów danych. Jeśli jednak ustawisz 8 bitów i jakąkolwiek parzystość, to w efekcie masz 7 bitów danych i bit parzystości. Jeśli więc chcesz uzyskać 8 bitów danych oraz bit parzystości, to musisz ustawić w STM32 długość ramki...
He, he, he... Patrz na to: while (1); Nic, co jest dalej, nie ma szans się wykonać, więc kompilator eliminuje zbędny kod. ...A ponadto masz błąd w inkrementacji wskaźnika. idx = (idx + 1) % BUFSIZE; - to najprostszy poprawny zapis tego, co masz zrobić, chociaż nie zawsze daje optymalny kod.
Na 99% nie. Można kombinować z auto-reload i transmisją jednego bajtu, o ile uda się przekonać DMA, że docelowy UART jest pamięcią, a nie peryferialem i o ile będziesz miał pewność, że nigdy dane nie będą równocześnie nadchodziły w takim tempie, żeby zapchać nadajnik. Czyli: nawet gdyby się udało, to jest to rozwiązanie wysoce niepewne i zawodne. Co...
No nie do końca, bo potrzebujesz np. jeden usart ale masz 3 do wyboru, z którego każdy może blokować pliny dla innych peryferiów i być zremapowany jeszcze na inne piny. Czyli teoretycznie dla jednego peryferia masz 9 możliwości.... Zastanawiam się po prostu czy jest jakaś metoda radzenia sobie z tym, przy dużych układach... Pozdrawiam krzysiek
Witam ponownie. Uruchomiłem USART na stm32f4 chodzi pięknie . Teraz testowo chce wysłać ciąg 1,2,3 z wykorzystaniem DMA i niestety pomimo moich starań ramka przesyłana jest tylko raz. W czym leży problem. [syntax=c] void usartSetup (void) { RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; // enable clock for GPIOD RCC->APB1ENR |= RCC_APB1ENR_USART2EN; // enable...
Nie 103 a 107. Cała rodzina F1 jest przestarzała. W STM32F4, F7 i F0 jest do sześciu SPI. Do tego warto dodać, że USART może pracować w trybie SPI w każdym STM32.
Witam, Mam problem z zagospodarowaniem peryferiami w mikroprocesorze STM32F407VGT6. Muszę generować sygnały z częstotliwością 4 MHz jak na rysunku poniżej: http://obrazki.elektroda.pl/3154204100_1... Do tego zamierzam wykorzystać Timer3, który ustawiłem aby pracował z czstotliwością 4 MHz, wypełnienie uzyskam dzięki PWM. Timer 3 ma 4...
Załączam pliki startowe. Może coś w nich jest źle? entry.s .syntax unified .thumb .global vectors .global defaultHandler .section .isr_vector, "a" // Lista wektorow przerywan vectors: .word _end_stack .word resetHandler .word NMI_Handler .word HardFault_Handler .word MemManage_Handler .word BusFault_Handler .word UsageFault_Handler .word...
Pomyśl, ile czasu zajmuje pomiar i jak często przetwornik chciałby wywołać przerwanie. Potem zastanów się, ile czasu zajmuje obsługa przerwania. Samo to nie jest może powodem błędu, który obserwujesz, ale z pewnością nie ma sensu i jest błędem koncepcyjnym projektu. Niezależnie od tego, w jakim trybie pracuje ADC, czytaj wynik w przerwaniu timera, np....
Włączanei UARTa przed jego skonfigurowaniem to nie najlepszy pomysł, a właśnie tak postępujesz. Masz kod (a dokładniej - tablicę z adresami i wartościami rejestrów) na STM32F0 Na F4 będzie prawie to samo: [syntax=c]{&RCC->APB2ENR, RCC_APB2ENR_USART1EN}, // port setup {&RCC->AHBENR, RCC_AHBENR_GPIOCEN | RCC_AHBENR_GPIOAEN},// GPIOC, GPIOA...
Witam, wydawałoby się, że problem jest banalny, a mimo to już dzień nad nim spędziłem (a czas mi nagli bardzo). Moim zadaniem jest odczytanie wartości ADC i wysłanie przez USART do PC (do Hyperterminala przez konwerter RS232 ->USB). Ogarnąłem wysyłanie np. znaku "a", jednak wartość ADC to jakiś ciąg cyfr (chyba 4-cyfrowy). I nie wiem jak po konwersji...
To działa: [syntax=c] #define Port_USART3 USART3 #define Port_USART3_CLK RCC_APB1Periph_USART3 #define Port_USART3_TX_PIN GPIO_Pin_10 #define Port_USART3_TX_GPIO_PORT GPIOB #define Port_USART3_TX_GPIO_CLK RCC_AHB1Periph_GPIOB #define Port_USART3_TX_SOURCE GPIO_PinSource10 #define Port_USART3_TX_AF GPIO_AF_USART3 #define Port_USART3_RX_PIN GPIO_Pin_11...
Witam, Potrzebuję odebrać dane, które wysyłam za pomocą aplikacji bez bluetooth do uC STM32F4. Dane chcę odbierać przy pomocy przerwania usart. Dane z aplikacji wysyłane są w następującej postaci: Lx , x - liczba całkowita z zakresu <0;100>, np. L25, L100. Nie do końca wiem jak pobrać tą wartość chodzi mi w tym przykładzie o liczbę 25 , chcę ją...
Byłem pewien że jest, ale jak spojrzałem to musiałem z USART'em pomylić (bo w nim jest). W sumie niema sensu aby był taki bit, ponieważ by działał w sumie identycznie jak BSY bo komunikację w obydwu kierunkach inicjuje tylko procesor. W USART może być sytuacja że nadchodzi jakaś informacja z zewnątrz a bufor wyjściowy jest wolny do którego już można...
(at)Freddie Chopin Przepraszam za zawracanie gitary. Odwouje to co napisaem w tym wątku. W teście przypadkiem ustawiłem liczenie przerwań niewłaściwego U(S)ARTu. Jakie znasz trzeba było napisać nie traciłbym czasu. Myślałem, że napisałem że chodzi mi tylko o przerwania. Jeżeli było to niezbyt jasne to jest mi naprawdę przykro. Nie napisałeś co, gdzie,...
Witam! Otóż moje następujące pytania: Czy to, co tutaj jest napisane ma prawo działać prawidłowo? Głównie mi chodzi o to, czy jest to w miarę dobrze zaprogramowane( aktualnie brak możliwości sprawdzenia, z powodu braku rezystora). Drugie pytanie, jeżeli mam funkcje USART_puts, jak zrobić, by temperatura zostawała przekazywana właśnie przez tą funkcję?...
Witam, kolegów mam prośbę jestem początkującym z stm i aktualnie bawię się komunikacją poprzez usarta do nauki korzystam z różnych źródeł jak również z poradnika z tego forum posiadam taką płytkę http://elty.pl/pl/p/STM32F429IGT6-MCU-co... skonfigurowałem sobie USARTA1 tak zwane echo z terminala ale niestety jakieś głupoty odbieram w terminalu,...
No i jak napisać niskopoziomowe funkcje komunikacji stosu ze sprzętem. Zdefiniuj słowo NISKOPOZIOMOWE w tym przypadku. Ja też myślałem - po co mi jakiś system operacyjny. Wbrew pozorom - przy normalnym stosie nie da się bez niego obejść. Jeśli chcesz "łapać ramki" i samemu zarządzać pamięcią itd.. to system operacyjny ci niepotrzebny. Gdy problemy...
Cześć, Na inżyniera robię robota kroczącego na 12 serwomechanizmach, 4 nogi, taki pająk. Aby to ładnie zakodować chcę zrobić klasę serwo, klasę noga, klasę robot z odpowiednimi metodami aby kod był przejrzysty i jasny. Problem jest następujący: Klasa serwo ogółem działa, kompiluje się idealnie, aczkolwiek przy próbie użycia jakiejkolwiek zmiennej procek...
GPIO rejestry nie obsługują DMA, DMA dziala z SPIx, I2Cx, USARTx, TIMx, SDIO, ADC, DAC, USB, DCMI w sumie wszystko co pełni funkcje alternatywne ale nie GPIO RM 009 DMA table 21, channel 0 ADC1 ( da sie zrobić DMA z ADC_DR do pamięci)
Ja tu nie widzę żadnego wysyłania... Nie wiem też czy dobrze skonfigurowałeś piny, jednak to nie wygląda zbyt dobrze: GPIOB->MODER &= ( GPIO_MODER_MODER6_1 | GPIO_MODER_MODER7_1 ) ; Dlatego właśnie osobiście do konfigurowania pinów mam swoją funkcję, która jest czytelna i działa. W zasadzie mógłbyś ją zastosować wprost - jest w moim szablonie/przykładzie...
Więc tak, to po kolei mam w zakładce Pinout : FREERTOS ADC1 ADC2 ADC3 CAN1 CAN2 CRC DAC DCMI DMA2D ETH FMC I2C1 I2C2 I2C3 I2S2 I2S3 IWDG LTDC RCC RNG RTC SAI1 SDIO SPI1 SPI2 SPI3 SPI4 SPI5 SPI6 SYS TIM1 TIM2 TIM3 TIM4 TIM5 TIM6 TIM7 TIM8 TIM9 TIM10 TIM11 TIM12 TIM13 TIM14 UART4 UART5 UART7 UART8 USART1 USART2 USART3 USART6 USB_OTG_FS USB_OTG_HS WWDG...
Czy Flash Loader Demonstrator obsługuje te układy? W dokumentacji tego nie widać. Ostatnia aktualizacja była 5 lat temu, kiedy jeszcze nie było G0, G4, L5. V2.8.0 - 01-September-2015 =============================== New Features ************ + Adding support of STM32L4x6xx devices + Adding support of STM32L0xx 192K of flash devices + Adding support of...
Chciałbym się poradzić doświadczonych w przenoszeniu kodów z niższej rodziny na wyższą. Poniżej zamieszczam chyba najbardziej wrażliwy na przeniesienie fragment kodu. [syntax=c] // inicjalizacja taktowania PLL-e itp... RCC_DeInit(); RCC_HSI_Config(); // konfiguracja wyprowadzeń fpga_Pins_configure(); // konfiguracja przerwań NVIC_Configuration(); LCD_Pins_configure();...
Czyli w ten sposób jak bym chciał wykorzystać wszystkie 4 USARTy: [syntax=c] #include "stm32f4xx.h" #include "stm32f4xx_usart.h" #include "stm32f4xx_gpio.h" #include "stm32f4xx_rcc.h" void init_USART1(void); void init_USART2(void); void init_USART3(void); void init_USART6(void); void init_USART1(void) { GPIO_InitTypeDef GPIO_InitStruct; USART_InitTypeDef...
a przy programowaniu z UART CAN zasmieca dane lecace z PC. No chłopie żeś powiedział. Nic niczego nie zaśmieci. Ale interfejs CAN wygra. Jedyna opcja to jednak sprzętowa. Bo nie zagwarantujesz wystarczająco szybkiego wysłania znaku 0x7f, by wygrał UART. Sorry zle zrozumialem, ze na tych samych pinach co USART ma wpiety CAN (czyli polaczenie elektryczne)......
Witam serdecznie, Robię hexapoda 18xservo, wykorzystuję do tego niezależne kanały TIM2,3,4,5 i TIM12. Napotkałem problem z kanałem 2 i 3 dla TIM5, nie działa. Żeby nie wrzucać całego programu i nie zaburzać czytelności, przygotowałem mini aplikację testową dla TIM5 PWM, podobnie channel 1 i 4 działa, channel 2 i 3 nie działa. Czy dla pinów PA1 i PA2...
Skoro w TICK_RATE_HZ mam 1000 to interwał między tikami to 1ms ? Generalnie tak... Co jak dojdzię jeszcze 4 zadania np 4 komunikacje USART ? A co ma być? Usypiasz wątek na 1000ms i twierdzisz, ze wolno się wykonuje? :D I niby działa - właczenie/wyłaczenie diody za pomocą przycisku trwa około 3 sekund.... Niby działa bo to co ty napisałeś to jest niby-kod....
A czy ktoś z was korzystał może ze stosu FreeRTOS+TCP ? Wydaje się być ciekawym rozwiązaniem no i jest znacznie lepiej udokumentowany. Niestety nie, mialem sie za to zabrac ale jakos brak czasu na napisanie drivera do eth... Jak masz czas i checi mozesz sie pobawic i zdac relacje ;) Bawilem sie tylko zmodyfikowana wersja uIP (FreeTCPIP) - prawde mowiac...
Startupu Freddiego nie znam, ale ta obsługa buforów nie wygląda na działającą. Zwykle tail wskazywał pierwszy bajt zajęty, a nie ostatni wolny. No i powinno być void USART1_IRQHandler(void) Mam nadzieję, że kod jest pisany w C, a nie w C++.
Hej, Chciałem uaktualnić swój stary projekt, w którym używałem Atmegi162. Układ ma łączyć się z zewnętrznym urządzeniem za pomocą magistrali UART, o parametrach 8b danych, 1b stopu, parzystość "even". Obecnie próbuję zrobić te same operacje wykorzystując płytkę z mikrokontrolerem ARM - STM32F407Z (na płytce CORE407). Po paru minutach udało mi się skonfigurować...
Chodzi tylko o piny PA2 PA3, czy problem pojawia się również na PD5 PD6 ?
Cały plik main. [syntax=c]/** ****************************************... * File Name : main.c * Description : Main program body ****************************************... * * COPYRIGHT(c) 2016 STMicroelectronics * * Redistribution and use in source and binary forms, with or without...
No i sprawa w pewnej części się wyjaśniła sama. :) Okazuje się, że do tej pory - jednak wbrew temu co twierdził Freddie - Flash Loader Demonstrator (wersja 2.2.0) nie obsługiwał żadnych nowszych układów STM32, w tym serii F-2. Wczoraj (!) na forum firmowym STM pojawiła się informacja, że na ich stronach można znaleźć nową wersję FLD w wersji 2.4.0,...
Witam Używam płytki STM32F4 Discovery. Muszę odczytać sporą ilość danych, więc UART wydaje się jedynym rozsądnym rozwiązaniem. Poniżej kod, którego używam (sugerowałem się kodami z różnych stron). [syntax=c]#include "stm32f4xx.h" #include "stm32f4_discovery.h" #include "misc.h" // I recommend you have a look at these in the ST firmware folder #include...
ale nie umiem uporać się z tym, że komputer nie widzi st linka jako normalnego portu com, przez co nie potrafię "wybrać" portu w trakcie wgrywania programu. Pierwsza sprawa. W Twoim zestawie (ten STlink i płytka) nie ma i nie będzie żadnego COM w komputerze dopóki sobie go sam fizycznie nie dołożysz. Funkcjonalność że w STlink jest dodatkowo COM występuje...
Witam, Próbuje skomunikować STM32F4-DISCOVER z modułem RN-171 po UART. RN-171 działa na 3,3V; STM32 na 3V. Masę mają wspólną. Generalnie wygląda, że działa, ale nie wiem co źle robię bo wygląda jakby STM32 był 'głuchy' na sygnał przychodzący. Na oscyloskopie wygląda to tak, że STM32 wysyła sygnał prawidłowo, a RN-171 na ten sygnał odpowiada mu tym samym...
Witajcie. Witajcie, mam spory problem. Próbuje zacząć zabawę z STM32F4. Zainstalowałem sobie CooCox IDE 1.51 do tego dograłem sobie - GNU Tools ARM Embedded (4.6 2012q2). Próbuję się z tym bawić, bo muszę przez STM32 zaprogramować USART, wyświetlacz itd. Ciężko to widzę, ale próbuję. Ogólnie mam wyświetlacz taki: http://www.digchip.com/datasheets/parts/...
Witam. Zmagam się z konfiguracją USART na rejestrach. Widziałem dużo rozwiązań na rejestrach - ale dotyczyły one odczytu pojedynczych znaków - ja chciałbym odczytywać łańcuch znaków. Inne rozwiązania bazowały na funkcjach bibliotecznych. Do tej pory efektem było odczytywanie pierwszej litery bądź ostatniej i wypełnianie nią buffora. Jak to zrobić żeby...
To, co z HAL wymaga 30 linii, bez HAL zwykle wymaga 5..8. To tyle w kwestii szybkości pisania kodu. Np . zainicjowanie UART bez HAL: włączenie GPIO i USART - 2 linie, ustawienie nóżek - 2 linie (zapis do AFR i MODER), zainicjowanie UART - 2 linie (zapis do BRR i CR1) - razem 6 podstawień w C. Ile to zajmuje z HAL? Łopatologicznie wytłumaczyłem, na czym...
Uczę się programowania uC w C. Bazuję na STM32F411. Programy opieram na bibliotekach HAL. Ostatnio sporo czasu poświęciłem na szukanie błędów w swoim kodzie. Okazało się że struktura mojego programu była nieprawidłowa. Dopiero po jakimś czasie przypomniało mi się że przerwania powinny być jak najkrótsze. I teraz mam pytanie: Co można dawać w przerwaniach,a...
Ale to nie problem bo w STM32 możesz w rejestrze UARTu ustawić negację na pinie. Tylko w niektórych rodzinach. W STM32F1 którego dotyczy ten temat (jak i np. w STM32F4) nie jest to możliwe.
Witam Pracuje obecnie nad projektem odbiornika sygnały DMX512. Sprawa wygląda następująco: -Sygnał danych czytany jest z urządzenia zwane Kwamatik USB2DMX, obsługiwane przez program Q Light Controller. „Po drodze” do uC trafia jeszcze na driver RS485 a potem na PIN RX UART1 oraz PIN PB9 skonfigurowanego jako wejścia dla Timera 11 pracującego...
1. Rozumiem że celowo startujesz transmisję 1000 razy na sekundę - o ile nie zminiłeś ustawień systicka? 2. Dlaczego nie właczysz przerwania funkcjami CMSISowym NVIC_EnableIRQ(I2C1_EV_IRQn); Te funkcje w HALu są mi nieznane (nigdy nie korzstałem) 3. Czy masz zdefiniowany wektor w tablicy? Zależy jaki masz startup w toolchainie (może to oczywiście być...
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ą...
W ZL'u zrobiłem to tak: void GPIO_Conf(void) { RCC_APB2PeriphClockCmd(RCC_APB2Perip... | RCC_APB2Periph_USART1 | RCC_APB2Periph_AFIO, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_PinRemapConfig(GPIO_Remap_USART... ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; // Tx GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;...
Witam, Próbuje skomunikować ze sobą STM32F4 z Arduino UNO po UARTcie. Skonfigurowałem UART1 i płytka komunikowała się bez problemu z Arduino. Lecz do mojego projektu potrzebna jest komunikacja przez UART2 (piny PA2-TX i PA3-RX), po skonfigurowaniu UART2 i podłączeniu do do Arduino nie mogę odczytać żadnych danych. Jeżeli podłącze UART1 z UART2 na płytce...
Usart może działać bez problemu z większą prędkością. Masz prawdopodobnie gdzieś błąd w kodzie na mikrokonroler albo PC. Szklana kula nic więcej nie chce powiedzieć.
Ok przepraszam tak szczerze jeszcze tydzien temu nie wiedziałem co to stm32 i dlatego troche robie takie gafy. Ale staram sie intensywnie uczyć i pisac samemu kazdy kod tylko ten nieszczesny uart mnie zagiął na amen już zmieniam. Pozdrawiam
1. W jakim formacie oczekujesz danych ? Jeśli ma być to YUV to przy zasłoniętym obiektywie powinieneś otrzymać ciąg wartości zbliżonych do 0x00, 0x80, 0x00, 0x80, 0x00 .... Przy zasłoniętym obiektywie otrzymuje obrazy, podobne do poprzednich... czyli porozrzucane bez ładu piksele Jaką częstotliwość w rzeczywistości ma sygnał PCLK Gdy jutro będę miał...
(at)BlueDraco. Niestety powtarzasz te same nieprawdy. 8-pinowy Cortex? Owszem, Farnell ma typów słownie jeden z rdzeniem M0+. A właściwie nie ma, bo nie ma na stanie. Cóż ten procesor widmo ma? Zegar 30 MHz, więc znowu jakimś demonem szybkości to nie jest, ale to nic. Co ma na pokładzie? USART, SPI, I2C, komparator analogowy. A gdzie ADC? Jest tańszy...
Cześć! Posiadam od wielu lat (co najmniej 4) płytkę uruchomieniową Open107V od Waveshare. Nigdy nie miałem z nią problemów, i każdy projekt robiłem na niej, bo ma wszystko ładnie wyprowadzone i szybko mogłem sobie debugować instalację. Obecnie robię układ w którym 2 układy (drugi to STM32F407) komunikują się ze sobą przez RS485, korzystając z gotowego...
Masz całkowicie źle napisaną obsługę przerwania. Po pierwsze nie kasujesz bitu zgłoszenia przerwania Po drugie nie sprawdzasz od czego dostałeś przerwanie np. STM32F4 ma takie flagi: * (at)arg USART_IT_CTS: CTS change interrupt (not available for UART4 and UART5) * (at)arg USART_IT_LBD: LIN Break detection interrupt * (at)arg USART_IT_TXE: Transmit...
BlueDarco, a jakbym chciał mieć jednocześnie VCP i podpiąć pendrive? Wyczuwam tu mały problem. Co do bootloadera to niektóre modele mające port USB mają fabryczny bootloader po USB. Ale nie róbmy off-topicu, podsumowując: 1. Najszybciej jest dołożyć złącze USB do procesora mającego USB-Device i użyć odpowiedniego oprogramowania VCOM/VCP. Jedyna wada...
Program zatrzymuje się w miejscu gdzie jest sprawdzana flaga USART_FLAG_TXE, z jakichś powodów bit TXE nie jest ustawiany.
Więc pytanie po co ci dma, jeden wątek wpisuje do kolejki swoje, drugi swoje, a przerwanie uarta aktywuje semafor do trzeciego wątku który to wpisuje dane z kolejki do USARTx->DR PS. lepiej podaj treść zadania, bo tylko to ogranicza (i zbednie komplikuje) mnogość możliwych rozwiązań
Witam wszystkich. Od jakiegoś czasu ćwiczę STMy. Przyszedł czas na bootloader, ale stanąłem w zasadzie na początku drogi. Mój zestaw to: - ARM GCC (Linaro) w wersji 4.7 2012q4 - CooCox - STM32F4 Discovery - przykład AN3965 "STM32F40x/STM32F41x in-application programming using the USART" Po kolei: - istniejący i działający program zlinkowałem z użyciem...
Próbuje uruchomić przerwania: vector.c wygląda tak [syntax=c]static void __Default_Handler(void) __attribute__ ((interrupt)); static void __Default_Handler(void) { while (1); } /* +=======================================... | assign all unhandled interrupts to the default handler +=======================================...
Czyli z taktowaniem mam problem. Próbuję zrobić tak jak tutaj http://stm32f4-discovery.com/2014/04/lib... U mnie jest: Core Clock = ((HSE_VALUE / PLL_M) * PLL_N) / PLL_P Niestety po takiej konfiguracji STM wariuje, nawet USART wysyła śmiecie. Jak prawidłowo skonfigurować...
Nie wiesz może o jakimś układzie żeby miał Ethernet+ stos w nim, i drugiej strony dało się podłączyć SPI +DMA. Kiedyś czytałem o takim czymś: http://ep.com.pl/files/4859.pdf , ale nigdy tego nie używałem. Znalazłem jeszcze (niestety opatentowane) http://www.google.com/patents/US6483840 Jak zacząłem wgryzać się w LwIP ( i młodszego brata UiP), to przeraziłem...
Witam, Programuje STM32F407 przy pomocy HAL ( STM32CubeMX ) i Keil uVision 5 . Stworzyłem komunikacje przez UART HAL_UART_RxCpltCallback wykona mi się dopiero po przyjściu 6 znaków Komunikacja UART potrzebna jest mi do implementacji interfejsu MODBUS. W interfejsie MODBUS jak czytam z pdfa "http://modbus.org/docs/Modbus_Applicati...
stm32f4 usart stm32f4 usart wysyłanie konfiguracja usart stm32f4
airlive reset trzeszczenie zasilacza zworka pinem
zmywarka bosch czyszczenie płaszcza zmywarka bosch czyszczenie płaszcza
Czy TBA120S można zamienić na TBA120T? Wyłącznik świateł stopu a tempomat w Mitsubishi Lancerze