Ja bym raczej proponował się zdecydować czy chodzi o USART1 czy może USART2, bo dwóch na raz się raczej nie da używać z tym kodem... 4\/3!!
Hej, Próbuje na płytce STM32F3 uruchomić komunikację z PC po USART. Działa mi TX bo w main-ie mam wysyłanie przykładowego tekstu i działa prawidłowo. Niestety problem jest gdy wysyłam dane z terminala do STM - brak efektu przerwania. Nie jest to problem kabelków bo je kilka razy zamieniałem i dalej brak reakcji. Prędkość jest dobra bo prawidłowo odczytuje...
To teraz sprawdź czy sprintf() jest funkcją która jest "reentrant". Nie mówiąc już o takiej "drobnostce" jak blokująca implementacja send_string(), która korzysta z JEDNEGO i TEGO SAMEGO UARTu, oczywiście wywoływana w obydwóch przerwaniach. Reasumując - obserwujesz w 100% prawidłowe objawy, ten kod nie ma prawa działać bo jest totalnie pozbawiony sensu....
Aj, link się nie wkleił. Komunikacja idzie przez USART na pinach PC4-PC5. Zapewne gość ma jeszcze podpięty jakiś konwerterek USB UART.
GPIO powinien być ustawiony na odpowiednie alternate mode. https://obrazki.elektroda.pl/6186263400_... [syntax=c]GPIOA -> MODER &= ~((0b11 << GPIO_MODER_MODE2_Pos) | (0b11 << GPIO_MODER_MODE3_Pos)); GPIOA -> MODER |= (0b10 << GPIO_MODER_MODE2_Pos) | (0b10 << GPIO_MODER_MODE3_Pos); //set alternate GPIOA...
Witam, jestem w trakcie nauki programowania uC. Zakupiłem płytkę STM32F3Discovery. Próbuje wysłać na początek jeden znak na COM-a. Jednak niestety coś idzie nie tak :( Używam przejściówki USART-USB. Dodam, że konfiguracja musi być OK, bo gdy korzystam z biblioteki HAL to wszystko działa. Chce bawić się StdPeriph, bo mam wrażenie, że tutaj będę wstanie...
Na początku rozdziału o USART w reference manual jest taki podrozdział "USART implementation" (29.4). Masz tam rozpiskę jakie "ficzery" są dostępne w jakich dokładnie układach - widać tam, że 7-bitową długość danych mają tylko niektóre układy z tej rodziny. https://obrazki.elektroda.pl/2466354800_...
Jak zwykle małe gówno a tyle kłopotu. Oto przyczyna nie działania: RCC_APB1PeriphClockCmd(RCC_APB2Periph_US... ENABLE); a powinno być: RCC_APB2PeriphClockCmd(RCC_APB2Periph_US... ENABLE); i teraz wszystko działa. Dzięki za chociaż chęci pomocy. Pozdrawiam.
Dzięki za to, że napisałeś odpowiedzi na Twój problem, przydało się ale niestety nadal mam problem... Poniżej jest mój kod do odczytu przez I2C i wysyłanie po UART. Putty niestety wyrzuca "S▒▒" co restart. Ktoś wie czemu? (wiem, że ten kod nie jest najlepszy ale powinno działać. [syntax=c]#include "stm32f30x.h" void SysTick_Handler(void);...
Czy pamiętałeś o włączeniu portów w ODPOWIEDNIM rejestrze APBENR? volatile nie ma nic wspólnego z AVR. Tego atrybutu używa się np. wtedy, kiedy zmienna modyfikowana przez obsługę przerwania jest testowana przez inny fragment kodu. Pokaż kod procedury przerwania, bo coś tam narozrabiałeś.
Lepiej tak: void USART1_IRQHandler(void) { if (USART1->ISR & USART_ISR_TXE) { // jeśli zakończona wysyłka to coś... USART1->CR1 &= ~USART_CR1_TXEIE; // kasowanie flagi tak mi się wydaje że to to. } } A to jest źle każde przerwanie powinno wyglądać tak: [syntax=c] void XXXX_IRQHandler(void) { uint32_t isr; isr = XXX->ISR & XXX->IER; if( isr & flag)...
Mam następujące zadanie; stworzyć projekt na laboratoria z mikroprocesorów. Męczę się z tym już od początku semestru i szczerze nie mam pojęcia gdzie robię błędy. Liczę na moc internetu i oczywiście odpłatnie na pomoc. Pełna specyfikacja projektu: 1. Komunikacja z komputerem za pomocą interfejsu USART z buforem kołowym. 2. Zaprojektowanie i implementacja...
Mam problem z inicjalizacją UARTA. Otóż kod działa na portach PA9,PA10 lub PC4,PC5. Jednak gdy zmieniam na PB6, PB7 komp nie otrzymuje danych wysyłanych przez płytkę. Może źle to robię, ale według specyfikacji to na te porty można wyprowadzić USART1, więc nie wiem o co chodzi, a jeszcze raczkuje w temacie STM32. [syntax=c]#ifndef _USART_C_ #define _USART_C_...
Oczywiście tak nie zaprogramujesz option bytes. Ten rejestr FLASH-OBR jest tylko do odczytu i jest jedynie kopią odpowiedniego bitu w option bytes. Musisz najpierw odblokować zapis do option bytes (rejestr OPTKEYR) , następnie je zaprogramować i zresetować uK Poszczególne bajty option bytes masz opisane w RM/.
Czasem Arduino do czegoś się przyda Dodano po 2 Możesz dać przykład takiej krytycznej czasowo operacji? Problem jest a raczej był związany z buforem nadawczym uarta. Mam funkcję: Blokuj tylko przerwania od UART.
Witam, Pisze program do pewnego urządzenia. Jednym z wymogów było to, aby wykonywał on obliczenia ze zmiennymi typu float. Po ok. miesiącu udało mi się napisać w pełni działający kod. Niestety... wczoraj stał się cud - wyniki jakie zacząłem uzyskiwać były/są chaotyczne. Okazało się szybko, że to wina programu. Napisałem program testowy, który wygląda...
Witam! Czy ma ktoś pomysł w jaki sposób wykonać maskowanie sygnałów wyjściowych OCx z TIM1 zewnętrznym sygnałem w STM32F303RE? Chodzi o to, by maskowanie nie "zakłócało" pracy licznika, ale wyłączało wyjścia na czas trwania impulsu zewnętrznego, czyli robiło swojego rodzaju operację AND na wszystkich wyjściach i sygnale ETR... No i żeby nie musiał się...
Patrzyłem zbyt wąsko na problem - znowu (!) coś dzieje się z transmisją przez USART :/ Jeśli w pętli while(1) nie używam "żądania" wysłania na terminal "w" w celu przesłania wartości mierzonej przez ADC - program działa. Wraz z dopisaniem linijki odpowiedzialnej za sprawdzanie co pojawia się w terminalu, program działa tylko w przypadku (A) ! (czyli...
Witam ponownie, Po sprawdzeniu stwierdzam, że inicjacja USB wszystko wiesza... Wziąłem dla pewności "surowy" przykład z ST, dodałem zwykłe miganie diody - Set,Reset GPIO + for jako delay - i tnie automatycznie diode. Nie chce się już z tym grzebać bo straciłem już na tą transmisje ponad miesiąc :/ Przerobiłem kod, dodałem obsługe USART i kod wygląda...
Witam, Zgodnie z instrukcją próbuje zrobić generowanie impulsu 10us a później zliczanie timera ale cały czas wynik jaki uzyskuje to 100 czyli domyślna wartość. Nie wiem dlaczego impulsy nie są zliczane: main.c http://obrazki.elektroda.pl/2307557400_1...
Bo ten schemat jest ze strony, która opisywała tutorial do obsługi USART na Discovery. Moja przejściówka różni się tylko tym, że ma mniej wyjść (okrojona wersja przejściówki ze schematu) i niczym więcej. Jeśli chodzi o napięcie na wyjściach, jest ono równe dokładnie 3.45V w stanie wysokim
Witam. Stosunkowo niedawno wziąłem się za Cortexy i chciałbym na nich oprzeć swój projekt. I potrzebuje kilku rad odnośnie projektowania płytki pod te procesory (STM32F372CCT6 /LQFP48). Niestety w datasheecie prócz tego jak podłączyć zasilanie innych pomocy nie znalazłem i mam kilka pytań. 1. Co zrobić z wejściem kwarcu dla RTC jak nie mam zamiaru z...
Może zbyt namieszałem. Zasadniczo chodzi po prostu o to jak stworzyć projekt w SW4STM, który nie zawierałby tych wszystkich śmieci z SPL i HAL i dało się pisać na rejestrach. Taki czysty podstawowy projekt pod rejestry z tylko niezbędnymi rzeczami jak w przypadku pisania na AVRy. Ja robię to tak: I. Potrzebne narzędzia: 1. System Workbench for STM32...
Witam wszystkich. Uzywam Eclipse + OpenOCD (0.9.0) + GCC. Do tej pory używałem STM32F103 (Cortex-M3), a teraz przesiadłem się na STM32F373 (Cortex-M4). Wziąłem ze starego programu skrypt linkera, startup, vectors.c i posklejałem do kupy odpowiednio je modyfikując. Program generalnie odpala się, mogę sterować GPIO. Następnie spróbowałem uruchomić SysTicka....
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...
define są warte używania gdyż ułatwiają zrozumienie oraz łatwiej modyfikować kod w przyszłości. Tak więc, nie jest lepiej używać 0<<14 niż define. 3<<16 | 2<<14 | 1<<8 - od razu widać że mamy 3 tryb na pinie 8, 2 na 7 i 1 na 4. Modyfikacja to 2 kliknięcia GPIO_MODER_MODER7_1 | GPIO_MODER_MODER7_0 | GPIO_MODER_MODER6_1 | GPIO_MODER_MODER5_0...
A STM32 niema przerwania że wysłał dane i czeka na następne. rozumiem ze to jest pytanie a nie stwierdzenie. Jeżeli pytanie to oczywiście zależy to od peryferiów użytych. Np wszelakie interfejsy komunikacyjne typu I2C, SPI, USART - oczywiście mają. Jeżeli to ma być równolegle to o ile nie zrobisz tego na DMA, to takiego przerwania nie ma (no bo jak...
Zrobiłem wersję mniej czytelną ale taką co nie miałeś uwag, czyli nie dałem przesunięć bitowych [syntax=c] // PC6 PC7 pins GPIOC->MODER &= ~(GPIO_MODER_MODER6_1 | GPIO_MODER_MODER7_1); // input mode GPIOC->PUPDR |= (GPIO_PUPDR_PUPDR6_0 | GPIO_PUPDR_PUPDR7_0); // pull up GPIOC->AFR[0] = 0x44770000; } [/syntax] czyli AF7 dla USART1_TX, USART1_RX (PC4,...
[syntax=C] int main(void) { char bajt=0; char bajt2=0; char a[10]; Delay_config(); Delay_us_Init(); usart_Init(); gpio_init(); // konfiguracja pinów dla SPI1 - Master RCC->AHBENR |= RCC_AHBENR_GPIOAEN; gpio_pin_cfg(GPIOA, GPIO_Pin_4, GPIO_AF5_PP_50MHz); // NSS gpio_pin_cfg(GPIOA, GPIO_Pin_5, GPIO_AF5_PP_50MHz); // SCK gpio_pin_cfg(GPIOA, GPIO_Pin_6,...
Witam, Po długiej walce z żyroskopem L3GD20 jestem zmuszony zwrócić się po pomoc do Was. Komunikuje się z urządzeniem za pomocą interfejsu SPI. Teoretycznie wszystko działa przy czytaniu danych- żyroskop odpowiada tak, jak jest napisane w datasheet (na ramkę WHO_AM_I odpowiada wartością 212, a na odczyt rejestru kontrolnego nr 1 odpowiada 7, czyli włączonym...
łatwiej stosować ci te przesunięcia bitowe, gdy zdefiniowane masz wszystko elegancko w CMSIS do stm? Ci jest czytelniejsze? USART1_CR1_UE czy 1<<2 ?? BlueDraco czepianie się tego UL to przesada, i chyba tylko tobie wadzi. Lepiej by było jeśli gdzieś miałoby zabraknąć.
(at)kogiel Wygląda na to, że zabrałeś się do sprawy od niewłaściwej strony, co Koledzy już wypunktowali. Jeżeli nie chcesz kupować rejestratora, ale chcesz zbudować takie urządzenie, to konieczne jest zastanowienie się jakie funkcje ma realizować i w jakim zakresie. Funkcje to np. - rejestracja stanów wejść logicznych, wyników przetwarzania ADC, czasów...
Kanal nadal nie ustawiony, zły kierunek transmisji.
No właśnie jeśli wyśle liczbe 1.0001 - to otrzymam na terminalu .0001. Nie wiem co jest... próbowałem bawić się naprawdę podstawą podstaw tzn. robiłem rzut z float->int - nie działa; potem mnożenie *10 i /10 (też nic) tak, aby otrzymać tą część całkowitą. Niestety... buffor tab_1 niczym się nie zapełnia, tak jakby STM nie wiedział jaki jest wynik tych...
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.
Akurat tam tyle jest ;p Czy po stronie komputera masz dobrze skonfigurowany COM?
Witam, Mam jeden z dwóch często występujących problemów. Nie wiem czy to wina konstrukcji czy kodu. Z napięcia około ~12V mam zrobiony dzielnik napięcia (4K7 i 8K) tak, że na wyjściu mam około 2.44V. Po wgraniu kodu otrzymuje następujące wyniki: 2715 $ 2723 $ 2721 $ 2718 $ 2717 $ 2715 $ Jak widać, rozbieżność jest w granicy moich oczekiwań jak na rezystory...
Flaga USART_CR2_TXINV w CR2 USARTu.
Witam, Używam Timera 3 w celu generowania sygnału PWM na kanale 1 i 2 tegoż timera. Sam PWM działa jak ta lala, ale wygląda na to, że udostępnienie przerwania z tego Timera powoduje, że kontroler nie wykonuje instrukcji z pętli głównej. Czy ktokolwiek wie o co co może chodzić i jak to naprawić? Z góry bardzo dziękuję. Poniżej wklejam istotne fragmenty...
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....
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...
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...
Witam, Mam 2 płytki Stellaris LaunchPad z procesorem LM4F120XL na pokładzie, po podłączeniu do nich modułu nrf24l01 bez ustanawiam komunikację między płytkami i steruje np: serwem, diodami. Program do Stellarisów napisałem w IDE o nazwie Energia, który jest klonem IDE do Arduino (dostosowanym pod płytki Texas Instruments). Teraz ta ciekawsze część,...
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
Na pewno z tego powodu przerwania nie mogły przestać działać. Przebudowałeś cały projekt?
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....
A gdzie masz włączanie przerwań od USART? Dodano po 7 Powinno być coś w stylu: NVIC_EnableIRQ(USART2_IRQn);
Inicjowanie UART to 2 lub trzy zapisy do rejestrów, przemieszczenie linii - po jednym zapisie na port (czyli jeśli zmieniasz z portu A na B to masz dwa zapisy). Czas tych operacji nie przekroczy ułamka mikrosekundy (kilkanaście cykli procesora), o ile nie będziesz korzystał z SPL ani HAL.
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.
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.
Prawdopodobnie nie włączyłeś przerwania odbioru danych w USART - bit RXNEIE w rejestrze CR1. A poza tym . oczekiwanie w procedurze obsługi przerwania to nie jest dobry pomysł, a właśnie to robisz. Masz poniżej tablicę do zainicjowania USART z przerwaniem odbioru w STM32F0 - adresy rejestrów i ich zawartości - wychodzi to sporo krócej niż przy użyciu...
Zmienne globalne zajmują...... Pewnie ram dla led jest rezerwowany w chwili uruchomienia biblioteki przez memalloc. Gdybyś sam pisał obsługę led to użyłbyś tablicy o określonym rozmiarze dzięki czemu wiedziałbyś ile ram zajmuje program. Poszukaj jak wyświetlić ilość wolnej pamięci ram w czasie działania programu. Jakiś freemem jest. Trochę oszuka ale...
http://wikimarek.referata.com/wiki/Progr...
Od tego jest RM a nie biblioteki wątpliwej jakości.
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...
Jeśli opierałeś się na moim przykładzie, to proponuję zajrzeć do dokładnie 35 linijki skryptu linkera i dobrze zrozumieć to co jest napisane w jej okolicy.
Witam, Napisałem program który wysyła kolejno bajty przez USART do drugiego urządzenia i jednocześnie odbiera bajty (taki powiedzmy full-duplex :)) . W zasadzie nic specjalnego program wygląda następująco: https://obrazki.elektroda.pl/5185361200_... . Czy przyczyną są drgania styków? Wcześniej tą komunikacje realizowałem za pomocą DMA...
Chyba jednak mirkokontroler :P Byłem dziś u znajomego, ma inne sterowniki na laptopie i gdy dziś podłączyłem swoją płytkę z USARTem u niego to po chwili też pojawił się bluescreen. Czy powodem może być to, że jakiś czas temu spaliłem USARTa podpinając do niego zasilanie(3,3V) i masę z płytki, która z kolei była podłączona też do laptopa przez USB ?...
Może ten 'examples' pomoże: http://tech.munts.com/MCU/Frameworks/ARM... A dokładniej ten: http://tech.munts.com/MCU/Frameworks/ARM...
Wg mnie powinieneś resetować po transferze adres tablicy źródłowej - w końcu jest on automatycznie inkrementowany. 4\/3!!
A ja tak się zastanawiam po co męczyć się z timerami skoro usart w trybie halfduplex sie do 1wire nadaje idealnie? Bo USART może być potrzebny w projekcie np. do Modbusa ? ;)
Dekoder to helix mp3, do bufora fifo(51200B) wkladam dane w przerwaniu od usart rxne. Stos i stera ustawione na 0x1000
USART1->CR1 |= USART_CR1_UE; //włączenie usart USART6->CR1 |= USART_CR1_UE; //włączenie usart To daj po całej konfiguracji a potem wysyłaj i odbieraj.
(at)qaz88 ok. Btw. w każdym RMie jest to opisane inaczej. W RM0364 (STM32F334) jest taki ładny przepis: baud = \frac{2 \cdot f_{ck}}{USARTDIV} \hspace{8} (dla OVER8 = 1) USARTDIV is an unsigned fixed point number that is coded on the SARTx_BRR register. • When OVER8 = 0, BRR = USARTDIV. • When OVER8 = 1 – BRR Sorry za OffTop Jaki...
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.
STM32F030 i F05x znajdziesz w Kamami.
https://obrazki.elektroda.pl/5900465500_... Nie, nie jest to kolejny klon STM32F030 jak by sugerowało oznaczenie. Jest to Cortex M0 z pinoutem podobnym do 8-mio bitowych mikrokontrolerów STM8S. STM8S/HK32F030M/STM32F030: https://obrazki.elektroda.pl/8248415200_... https://obrazki.elektroda.pl/9155014300_...
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.
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.
Jeżeli z konwerterem usb sprzęgnięty jest UART1 to ja bym to widział tak. Potrzebna ci obsługa przerwania od odbioru z USART 1. W tym przerwaniu wysyłasz komendę przez UART6 do modułu. Z kolei informacja zwrotna z HC06 generuje w przerwanie od odbioru z UART6 w którym wysyłasz dane na UART1. Ewentualnie bez użycia przerwań ale przez DMA. Jeżeli jesteś...
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?
Ja już nie wiem, jaki uC w końcu programujesz, bo na STM32F0 mi to nie wyglądało i nie wygląda nadal Panowie wybaczcie za mój skrajny głupi błąd. Niechcący korzystałem z manuala dla F3, a mam przecież STM32VLDiscovery na której siedzi F0. W wolnej chwili wprowadzę poprawki. I jeszcze pytanie? Czy do założeń tego co robie, czyli skanowanie 4 kanałów...
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
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ą...
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...
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...
Czy dostępne obecnie programy ładujące, jak np.: - Flash Loader Demonstrator (ST), - FlyMcu (mcuisp), - vsprog (z platformy VerSaloon PROGramer). obsłużą mikrokontrolery z nowej serii STM32F-2, np. STM32F217 (z 1MB flash)? Wiadomo tylko, że seria F-2, podobnie jak F-1, posiada bootloader i można je ładować przez USART, ale nie wiadomo jakim programem....
(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.
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...
Swoją drogą ciekawy maluch, na plus RTC i cena, na minus mało interfejsów, chociaż jeszcze jeden UART żeby był. Jeżeli chodzi o F030 to mają ich od jednego w górę. Nawet 20sto nóżkowce. STM to ma zawsze (przynajmniej nie widziałem takich, które nie maj) I2C, SPI, USART, ADC
1. W jaki sposób piszecie kod do obsługi peryferiów występujących pojedyńczo w mikrokontrolerze? Np RTC, LCD, RNG, czy CRC. Najzupełniej normalnie, czyli jako zwyczajną klasę. Jeśli jest tylko jeden taki układ peryferyjny, to w projekcie po prostu mam jeden taki obiekt. Z pewnością nie bawię się w żadne singletony czy klasę w której wszystko jest statyczne....
poprawiłem kolejność i dalej nic ;/ void initUsart(){ RCC->AHBENR |= RCC_AHBENR_GPIOAEN; //enable clock for PORTA RCC->APB2ENR |= RCC_APB2ENR_USART1EN; //enable clock for USART GPIOA->AFR[1] |= (1<<8) ; //mapping AF1 to get RX on PA10 GPIOA->AFR[1] |= (1<<4) ; //mapping AF1 to get...
Możesz do tego celu użyć sprzętowego interfejsu USART. Jeżeli nie masz na tym pinie dostępnej takiej możliwości to będziesz zmuszony zaimplementować programowego UARTA. Należy do tego wykorzystać timer z przerwaniem. Częstotliwość przerwań powinna być przynajmniej 4x większa niż Twój bitrate (a najlepiej to x16) co w przypadku 1200bod/s nie będzie problemem.
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)......
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...
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...
Musisz więc w loop() sprawdzać stan wybranego pinu funkcją digitalRead() Naliczyłem 17 delay, których czas ustawiony jest na 100ms. Daje to łącznie 1,7sekundy i może być tak, że po takim czasie program zareaguje na zmianę stanu wejścia. Pierwsza rzecz jaką bym zrobił to wywalił delay i sterowanie zrealizował na przerwaniach od timera. Przy takim podejściu...
pisałem taki driverek na I2C i pomyślałem ,że zrobię za pomocą bibliotek od ST no i działało oczywiście do czasu. Pytanie, do jakiego czasu :) Jak do tej pory zrobilem juz wszystko poza USB i ethernetem i jakoś działa. zostawiłem na noc obsługę 2 czujników(I2C) wyniki wyswietla mi na kolorowym LCD(SPI), do tego komunikuję się z komputerem(USART) i...
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...
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ć...
(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 Zastanawiam się jak można oszacować wydajność systemu DMA. Chcę użyć trzech kanałów DMA a nie chce mi się kontrolować i prawidłowo reagować gdy transmisja DMA się nie wykona. Chcę: - odbierać dane przez USART 20 bajtów co 20 [ms] (ramka z wykrywacza) - wysyłać dane przez SPI 2*504 bajtów co 50 [ms] (obsługa dwu wyświetlaczy z nokii 3310) - generować...
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...
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();...
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 Mam następujący problem przy płytce STM32F0Discovery. Celem programu jest na poziomie obsługi przerwania ustawienie globalnej zmiennej, a następnie po powrocie do maina sprawdzenie zmiennej i wykonanie instrukcji. Kod pliku main.c [syntax=c] #include "stm32f0xx.h" #include "setup.h" volatile bool new_data = false; int main (void){ setup(); while(1){...
a czy software'owa implementacja ma w ogóle sens? Jaki baudrate chcesz uzyskać? I czy chcesz implementować wersję asynchroniczną czy synchroniczną? Zakładam, że asynchroniczną, skoro piszesz, że ma się toto komunikować z AVRami. Z szybkich obliczeń wychodzi mi, że w wersji asynchronicznej, dla baudrate=115200bps i tzw. trybu NORMAL, w którym trzeba...
https://obrazki.elektroda.pl/8952633700_... Projekt miał na celu stworzenie sterowania dla topologii half-bridge z możliwością ustawiania częstotliwości za pomocą programu na komputerze. Dodatkowo układ posiada synchroniczne próbkowanie przebiegu prądu w celu dokładnego pomiaru fazy oraz amplitudy i wykreślenia wykresu wartości tych...
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);...
SysTick jest chyba najprostszy, jedna linijka kodu aby 'zapuścić'. Obsługa przerwania SysTick nie wymaga niczego - żadnego kasowania flag itp. dlatego w prostych projektach jest najczęściej używany jako timer delaya. Nie wymaga także skomplikowanych obliczeń - tylko zegar, podział przez 8 lub brak podziału, podział przez wartość odliczania - i koniec....
stm32f3 paczki stm32f3 discovery stm32f3 timer
internet zawiesza espace prędkości gramofon wkładką magnetyczną
pilarka einhell pralka podświetlenie wyświetlacza
Korekty po wymianie pompowtryskiwaczy w VW Passat B5 1.9 TDI AVB Napięcie na statorze w skuterach i motocyklach: typowe wartości i pomiary