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.
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 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....
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...
Co może być przyczyną tego, że zamiast wysyłanego "hello" odbieram w termianlu "hhhhheeeeeellllllllllllllllllllloooooo"... Dodam, że przy wyłączonym DMA nic takiego nie ma miejsca. Nie wnikam w konfigurację DMA i USART, ale logika tego fragmentu programu jest dziwna. Mam wrażenie, że funkcja wysyłająca tekst (usart_dma_str) jest wywoływana w przerwaniu...
Witam też mam problem z uartem. Komunikacja jest ale z błędami. Siedzę już za długo nad tym: [syntax=cpp] void usart__ini() { RCC->APB2ENR|= RCC_APB2ENR_USART1EN ; //wlacz uart1 taktowanie RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN ; //aktywuj i w porcie B GPIO_PinConfigure ( GPIOB ,7 , GPIO_MODE_AF ,GPIO_OUTPUT_PUSH_PULL ,GPIO_OUTPUT_SPEED_50MHz , GPIO_NO_PULL_UP_DOWN);...
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...
Wg mnie powinieneś resetować po transferze adres tablicy źródłowej - w końcu jest on automatycznie inkrementowany. 4\/3!!
Kanal nadal nie ustawiony, zły kierunek transmisji.
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
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...
A gdzie masz włączanie przerwań od USART? Dodano po 7 Powinno być coś w stylu: NVIC_EnableIRQ(USART2_IRQn);
Może ten 'examples' pomoże: http://tech.munts.com/MCU/Frameworks/ARM... A dokładniej ten: http://tech.munts.com/MCU/Frameworks/ARM...
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...
[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 /*...
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...
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.
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?
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.
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...
Witam, Niedawno dłubałem z kartami SD wiec ten temat przyciągnął moją uwagę. Udostępniam swoją routine odczytu bloku :) - kod co prawda puszczałem na AVR ale to chyba nie ma znaczenia, komunikacja jak i odczyt działa mi idealnie. Dołączam też wysyłanie CMD. Może cię natchnie :) Komentarze mogą być kaleczonym angielskim - przepraszam :oops: [syntax=c]...
Witam, Niestety poddaje się bo nie wiem czego mi brakuje w kodzie albo co robie nie tak. Nie moge odebrac na komputerze zadnego komunikatu z plytki DEV. Kontrolka na USB - USART swieci się od RX czyli cos jest nadawane (ciagle swiatlo) ale nic nie odbieram Załączam poniższy kod w celu debuggingu: #include <string.h> #include "stm32f4xx.h"...
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...
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.
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.
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...
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"...
A ja tak się zastanawiam po co męczyć się z timerami skoro usart w trybie halfduplex sie do 1wire nadaje idealnie?
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.
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.
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...
te 0xFF wygląda na IDLE frame
Witajcie, Potrzebuję pomocy przy STM32F429. Moje pierwsze podejście do rozwiązania docelowego zadania było oparte o biblioteki HAL i była to moja pierwsza styczność z STM. Pomysł fajnie się spisywał, ale później miałem jakąś totalną masakrę, żeby zaimplementować jakiekolwiek klasy. Wyszło tak, że przerzuciłem się na rejestry i nie wygląda to najgorzej....
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...
Postanowiłem zawalczyć z tym UARTem ale (wstyd przyznać) trochę sobie nie radzę. Podejrzewam, że robię gdzieś jakiś głupi błąd, którego nie mogę zlokalizować. Połączenie STMów wygląda następująco: ZL26ARM programuję z USB za pośrednictwem STM32F4 (SWD->JTAG), oprócz tego ZL'a zasilam sobie z drugiego USB. Na ZL'u USART1 remapowałem sobie na piny PB6(Tx)...
Dekoder to helix mp3, do bufora fifo(51200B) wkladam dane w przerwaniu od usart rxne. Stos i stera ustawione na 0x1000
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...
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
przerwanie: [syntax=c]void USART1_IRQHandler() { if(USART1_SR_RXNE_bb) { RXD1_buffer[RXD1_head] = USART1->DR; RXD1_head = (RXD1_head + 1); if (RXD1_head == RXD1_tail) { // tutaj możemy w jakiś wygodny dla nas sposób obsłużyć błąd spowodowany // próbą nadpisania danych w buforze, mogłoby dojść do sytuacji gdzie // nasz wąż zacząłby zjadać własny ogon...
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...
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...
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
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, 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ą...
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...
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...
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....
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! 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ę?...
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...
Ja mam stm32f4discovery i obecnie przygotowanie do tego środowiska programistycznego to pikuś. Dobra współpraca z linux (przygotowanie środowiska programistycznego) dobrze działa debuger http://wikimarek.referata.com/wiki/Progr... Będę chciał zrobić na początek zegarek i jeszcze do końca nie wiem jak z możliwością wykorzystania portów...
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...
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)
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...
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...
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...
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();...
(at)GrzegorzKostka Możesz mi jeszcze powiedzieć np dlaczego w dokumentacji USART3_TX jest na PB10 i PD8 ? Albo USART1_TX jest na PB6 i PA9 ? Mogę sobie wybrać np. PB6 lub PA9 ale nie ma możliwości dwóch naraz jako oddzielnych ?
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...
Wiem że może. Dawno nie ruszałem ST32 tak ze sobie odswierzam pamiec. Na drugą płytke wycisnałem asynchronicznie ~3.8Mbps. Tak byem ciekaw jak szybko mozna do pc-ta uzywajac J-linka jako USB <> COM Ale jak chcesz kod. USART2 na 45MHz. [syntax=c]USART2 -> BRR = (((FCLK / (8UL * SPEED)) << 4) | FRAC(FCLK, SPEED)) ; USART2 -> CR1 = (USART_CR1_TE...
Pierwsza i pewnie jedyna przyczyna to płytka Discovery. PA2 jest podłączone do wyjścia MEMSa: INT2 i jednocześnie ma być wyjściem TX. "Oba samce" ;) PA3 jest podłączone do TFT: B5 i ma być wejściem RX. Może zadziała, o ile nie używasz TFT. PD5 możesz użyć jako wyjścia TX i powinno działać bez problemu. PD6 jest podłączone do TFT: B2. Może zadziała,...
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)......
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....
Jesteś 100% pewny, że Twój układ pracuje na 16MHz?
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 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...
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ć...
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...
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...
Witajcie. Piszę krótko. Używam STM32F407. Do trzech różnych USARTów mam podłączone cwa czujniki i jeden datalink Czujnik_1 - USART1 Czujnik_2 - UART5 Datalink - USART3 Z czujników zbierane są dane a datalink wysyła te dane, które zostały odebrane. Wszystko dzieje się na przerwaniach. Kiedy podpinam każdy z czujników oddzielnie i datalink'a, wszystko...
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/...
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 +=======================================...
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...
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ć...
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...
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, Kiedyś działało mi bez problemu jedno zadanie w freeRTOS, jednak teraz mam problem gdy próbuję utworzyć dwa zadania. Gdy debuguje program to zatrzymuje się na vTaskStartScheduler(); Co to może być ? Mój main to: [syntax=c] #include "stm32f4xx.h" #include "FreeRTOS.h" #include "task.h" #include "math.h" #include "stdio.h" #include "myusart.h"...
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...
Jak widać na screenach on używa innej niż Ty i w jego bibliotece tego makra nie ma. Jak widać na screenach używa dokładnie tych samych nagłówków CMSIS dla STM32F4 co każdy (chyba że znasz jeszcze jakąś "bibliotekę" która ma główny nagłówek o nazwie `stm32f4xx.h` i ma dokładnie takie same definicje dla USARTa, innych rejestrów GPIO czy dla RCC?). Ale...
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...
Przeniosłem mój projekt na szablon Freddiego i również napotykam na błędy, m.in: Po czyszczeniu projetku "clean" muszę kompilować 2 razy. Za pierwszym razem mam błąd w konsoli np. taki lib/stm32f4xx_hal_pcd.c:664:66: warning: unused parameter 'hpcd' natomiast drugie naciśnięcie build powoduje poprawną kompilację 11:53:05 **** Incremental Build of configuration...
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ą...
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ć...
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
(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...
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ł...
Próbuję bawić się systemem FreeRTOS. Mam problem, gdy uruchomię tylko jedno zadanie led lub tx to wówczas one działają. Gdy próbuję uruchomić 2 zadania, nie działa nic. Próbowałem zmieniać rozmiar stosu, priorytety zadań i nic. [syntax=c]#include <stm32f4xx_usart.h> #include <misc.h> #include "stm32f401_discovery.h" #include "usart.h" #include...
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...
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...
Witam, męczę się od jakiegoś czasu z komunikacją przez USART. Poniższy kod działa prawidłowo kiedy załaduję go do FLASH, ale nie chce działać poprawnie w RAM. 4 diody z poniższego kodu zapalają się w obu przypadkach, tylko uC nie wysyła danych jak program siedzi w RAM. Używam CoIDE. Proszę o pomoc. [syntax=c] #include "stm32f4xx.h" void init_RCC(void);...
(at)Piotrus_999 Tak masz racje patrzyłem na STM32F401RE. Ale i tak problem jest dalej z USART3. Poruszałem już ten temat tylko że z tego co pamiętam to jest jakiś problem na NUCLEO i nie uruchomie usarta3 na pinach PB10 i PB11. Konfiguracje mam taka: Dodano po 3 Próbowałem zrobić na alternatywnych pinach PC10 i PC11, w konfiguracji zmieniłem na port...
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ń
usart stm32f4 stm32f4 usart wysyłanie konfiguracja usart stm32f4
dodawac adres ustawienia dekodera globo zrobić kolorofon sterownik
toyota corolla verso toyota corolla verso
Gasik RC dla obciążenia indukcyjnego 230V 150W Kod błędu ECM 045 w Iveco Stralis - przyczyny i diagnostyka