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...
Cześć! Mam problem z usartem. Nie wiem gdzie mam błąd... Wysyła tylko "S" zamiast całe "SIEMA". Byłbym wdzięczny za pomoc. Z góry dzięki! [syntax=c]#include "stm32f4xx.h" #include "misc.h" #define READ_BUFFER_LEN 64 #define WRITE_BUFFER_LEN 256 char readBuffer[READ_BUFFER_LEN]; char writeBuffer[WRITE_BUFFER_LEN]; short rBufferEmptyIndex = 0; short rBufferBusyIndex...
Tu masz przykład DMA. Zrobione na szybko. Po przesłaniu dowolnej liczby znaków DMA się wyłącza. [syntax=c]void init_usart( void ) { RCC->APB1ENR |= RCC_APB1ENR_USART2EN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; RCC->AHB1ENR |= RCC_AHB1ENR_DMA1EN; gpio_pin_cfg( GPIOA, 2, GPIO_AF7_PP_50MHz_PULL_UP ); gpio_pin_cfg( GPIOA, 3, GPIO_AF7_PP_50MHz_PULL_UP ); USART2->BRR...
Taka obsługa przerwania: [syntax=c] void USART2_IRQHandler(void) { uint8_t a=USART2->DR; //odczyt znaku if (a>=97) a=a-32; //Jeśli mała to duża while ((USART2->SR & USART_SR_TXE)==0); //Sprawdzenie czy usart gotowy do wysyłki (właściwie to czekanie, aż gotowy będzie) USART2->DR=a; //wysłanie znaku } [/syntax] nie jest najlepszym pomysłem.
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
[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 /*...
A gdzie masz włączanie przerwań od USART? Dodano po 7 Powinno być coś w stylu: NVIC_EnableIRQ(USART2_IRQn);
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...
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,...
Nie korzystam z systemInit ani zadnej innej biblioteki, cały kod który mam jest napisany w 100% przeze mnie. Czyli dobrze założyłem, to 16Mhz, pytanie ktore dalej pozostaje bez odpowiedzi to co jest nie tak ? :( Chyba jednak nie cały. Nie napisałeś nic o środowisku - obejrzyj SystemInit(). Najbardziej nie tak jest to, że nie pokazałeś poprawionego...
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...
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...
Może ten 'examples' pomoże: http://tech.munts.com/MCU/Frameworks/ARM... A dokładniej ten: http://tech.munts.com/MCU/Frameworks/ARM...
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.
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;...
W CoIDE obsługa NVIC jest schowana w "misc.h" z Repozytorium. Taka logika ;) A gdybyś od razu napisał, że korzystasz z STM32F4Discovery, to nie musiałbyś się tak zastanawiać. Przecież na tej płytce linia TX jest na sztywno połączona z VBUS portu USB i wyjściem układu kontroli zasilania na tym porcie, a linia RX jest na sztywno spięta z ID. Jeżeli przypadkiem...
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;...
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.
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]...
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...
Zmieniłem na podane przez Ciebie funkcje: [syntax=c]#include "stm32f4xx.h" #include <stdio.h> #include "stm32f4xx_spi.h" #include "main.h" #include "gpio.h" #define CS_0 GPIOE->ODR &= ~(1<<3); #define CS_1 GPIOE->ODR |= (1<<3); void spi_init( void ) { RCC->APB2ENR |= RCC_APB2ENR_SPI1EN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;...
Witam, Nie mogę się dogadać z tym układem. Widzałem już dużo przykładów ale nic mi to nie daje już sam nie wiem. Kod: *Ini [syntax=c] void czujnik_spi_ini(void) { RCC->APB2ENR|= RCC_APB2ENR_SPI1EN ; //wlacz spi1 taktowanie RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN ; //aktywuj i w porcie A RCC->AHB1ENR |= RCC_AHB1ENR_GPIOEEN ; //aktywuj i w porcie...
A ja tak się zastanawiam po co męczyć się z timerami skoro usart w trybie halfduplex sie do 1wire nadaje idealnie?
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...
(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.
A jak to możliwe, że echo idzie równocześnie z przesyłanymi danymi? Pokaż kompletny kod, który wysyła i odbiera dane. Jednak tak ten RN-171 działa, że w czasie rzeczywistym nadaje to samo co otrzymuje (można to wyłączyć). Tak czy owak problem tkwił w odbieraniu danych, użyłem: if(USART_GetITStatus(UART5, USART_IT_RXNE) != RESET) a powinienem:...
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ą...
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...
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
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
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.
(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...
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...
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...
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....
Witajcie. Dalej mam podobny problem. Używam STM32F407. Posiadam staram się obłużyć 3 różne USARTY (USART1, USART3 i UART4) wszystkie pracują w trybie asynchronicznym. Pod te usarty podpięte są następujące urządzenia: -USART1 - GPS z protokołem NMEA wysyłający dane co 1 sekundę -USART3 - datalink łączący płytkę z STMem z komputerem. -UART4 - akcelerometr...
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...
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...
mam ustawione przerwanie zewnętrzne ustawione na wyzwalanie zboczem opadającym i narastającym w funkcji obsługi przewania zapisuję sobie do bufora: void EXTI0_IRQHandler(void) { //Check if EXTI_Line0 is asserted if(EXTI_GetITStatus(EXTI_Line0... != RESET) { Buffer[iWriteIdx] = 'I'; GoToNextElement(&iWriteIdx);...
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 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)
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...
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"...
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...
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...
(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! 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ę?...
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...
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();...
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...
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...
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,...
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...
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);...
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 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)......
Jesteś 100% pewny, że Twój układ pracuje na 16MHz?
Dostałem taki log przy kompilacji: [syntax=c]startup/startup_stm32.o:(.isr_... undefined reference to `WWDG_IRQHandler' startup/startup_stm32.o:(.isr_vector+0x4... undefined reference to `PVD_IRQHandler' startup/startup_stm32.o:(.isr_vector+0x4... undefined reference to `TAMP_STAMP_IRQHandler' startup/startup_stm32.o:(.isr_vector+0x4... undefined...
Cześć, Projekt zaraz będę konfigurował od początku. Fakt, podałem za mało danych, wybaczcie, skrajna nerwica mnie na to wzięła. Od początku: Używam SW4STM32, ale chciałbym od tego odejść mocno, bo za dużo automatów i za mało szczegółów, może dlatego, że nie potrafię tego wszystkiego ogarnąć. Kompilatora używałem poprzez naciśnięcie "build". W ustawieniach...
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,...
Niestety nie wiem o którą informację na początku skryptu linkera chodzi. :| O tą? * description: * Linker script for STM32F4xxxG chip (1MB Flash, 112kB SRAM, 16kB aux SRAM, * 64kB CCM RAM and 4kB backup SRAM). Only main block o SRAM (112kB) is used. Poza tym Twoja szklana kula działa wyśmienicie. :) Po wystąpieniu przerwania uint8_t...
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...
Witam, otóż zasilam owy wyświetlacz napięciem ±3.3V, a także stany logiczne są na tym poziomie. Pin kontrastu jest podpięty bezpośrednio do masy, kontrast wizualnie wydaje się być dobrany idealnie. I problem w tym, że pixele bardzo wolno się zapalają.(wyszło mi ok. ~300ms na pełne zaświecenie pixela) Czy jest to jest maksimum wyświetlacza, czy...
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ą...
Procesor to konkretnie STM32F439IGT6. Mam taki kod w mainie: https://obrazki.elektroda.pl/2215514800_... A powinno być tak: https://obrazki.elektroda.pl/3426620100_... Najciekawsze wnioski są jednak po dodaniu tych linii: https://obrazki.elektroda.pl/6540612300_... A tu dla wersji która inicjalizuje...
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.
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/...
(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,...
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...
te 0xFF wygląda na IDLE frame
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...
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...
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ć...
HAL to w zasadzie to samo co SPL. Jest przykłdem złego designu oprogramowania pod wieloma względami. Oto próbka absurdu: [syntax=c] pif = (USBH_InterfaceDescTypeDef *)0; pcfg = &phost->device.CfgDesc; if((pif->bInterfaceClass == 0xFF) &&(pif->bInterfaceSubClass == 0xFF) && (pif->bInterfaceProtocol == 0xFF)) { return 0xFF; } [/syntax] Przenoszenie kodu...
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...
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...
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...
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ł...
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...
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 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...
usart stm32f4 stm32f4 usart wysyłanie konfiguracja usart stm32f4
ustawianie zbieżności sygnał syrena mixer pioneer
politechnika łódzka telewizor elektron
Samochód nie reaguje na kluczyk, akumulator OK Napis "Nou USB" na DVD - co oznacza?