Przecież wyraźnie widać, że STM odbiera 8 bitów, a w Realterm jest ustawione 7 bitów. Stąd różnica i obcięty najstarszy bit. Poza tym, dane się zgadzają. Format danych musi być ten sam. STM to pewnie 8N1, Realterm 7E1.
Problem mam następujący. Ustawiłem, żeby procesor odbierał ramki przez USARTA na przerwaniu i w tym przerwaniu sprawdzał czy z nią wszystko ok. Kod całęgo przerwania wygląda tak: void USART1_IRQHandler(void) { u8 ReceivedByte; extern ReceivingFrame; extern ReceivingHeader; extern MultinetRun BufStruct; extern RxIndex; extern TxIndex; extern...
Wyłącz przerwanie od TXE skoro nie chcesz wysyłać. 4\/3!!
Podłączasz i nic się nie pali :) W większych modelach FT są USART1, 3-5
Olej te ich dziwaczne wywody na temat obliczania wartości do rejestru odpowiedzialnego za baudrate i po prostu wpisz do tego rejestru wartość równą PRĘDKOŚĆ_ZEGARA_UART / BAUDRATE. Te całe zabawy w część stałą i ułamkową właśnie do tego się sprowadzają, chyba ktoś kto pisał dokumentację miał nadmiar fantazji. Wg tegoż BRR powinien być równy 6666 czyli...
Aktualnie nie odwracam sygnału w komunikacji o czym pisaliśmy wcześniej. Jeśli nie odwracasz polaryzacji sygnału na linii REQ i łączysz STM32 i Multicall na wprost, to nie masz szans się porozumieć.
USART1->ISR &= ~USART_ISR_RXNE; To jest po pierwsze zbędne - flaga jest czyszczona automatycznie jeśli coś odczytasz - a po drugie błędne - do czyszczenia flag słłuży rejestr ICR, a nie ISR (który jest tylko do odczytu). Na pinie RX warto albo ustawić wewnętrzne podciąganie, albo zrobić podciąganie zewnętrzne.
Ale nie każdy od 0. Ja np. bardzo rzadko. Bo mi się po prostu nie chce. Dobrą metoda na znalezienie przykładów w internecie jest wpisywanie do wyszukania nazw rejestrów. Wpisywanie tekstów w stylu "STM32 code UART" przynosi efekty w postaci znalezienia kodów na bibliotekach od STMa. Czyli nie to co byśmy chcieli. Ale jak się wpisze "STM32 USART1->CR1"...
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...
Spróbuj tak: [syntax=c]void startUSARTDMATransferTx(uint8_t * buffer) { DMA1_Channel4->CCR &= ~DMA_CCR1_EN; DMA1_Channel4->CMAR = (uint32_t)buffer; DMA1_Channel4->CNDTR = BUFFER_SIZE; GPIO_SetBits(GPIOA, GPIO_Pin_8); USART1->SR &= USART_FLAG_TC; DMA1_Channel4->CCR |= DMA_CCR1_EN; }[/syntax]
Z DMA powinno być łatwiej a z pewnością mniej obciąża CPU. Oczywiscie ze nie. Jak zwykle kol. (at)LChucki wprowadza w błąd. Dla 2 znaków oczywiście to nie ma sensu. Trzeba po stronie odbierającej wykrywać koniec transmisji (np poprzez IDLE, przekróecenie bufora itd itd). Do tego trzeba zaimplementować odpowiednie mechanizmy synchronizacyjne. Sądząc...
Cześć, Nie dawno zacząłem przygodę z STM32. I mam duży problem nad którym siedzę już parę dni. Chciałem stworzyć prostą komunikację z komputerem gdzie przez terminal odpowiednimi komendami będzie można gasić i zapalać diody i w drugą stronę przesyłać które diody są zapalone. nie wiem gdzie jest tu błąd więc Ustawienie GIPO void GPIO_Conf(void) { GPIO_InitTypeDef...
Witam, Ustawienie __main_stack_size = 1024; nic nie pomogło. Mam jeszcze jedno pytanie które mi się nasuwa. Czy deklaracja funkcji obsługującej przerwanie("stm32f10x_it.c") powinna wyglądać tak: void USART1_IRQHandler(void) { Czy wymagane są jakieś dodatkowe atrybuty (__attribute__) ? W pliku out/*.lss jest zawarty kod obsługujący przerwanie:...
Początek programu FreeRtos wygląda tak: /* Private define ----------------------------------------... #define LED_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE ) #define LCD_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE ) #define USART_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE ) #define LED_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) #define...
Czy jest techniczna możliwość wyłączenia wewnętrznego bootloadera? Zworka BOOT0 zwarta z GND. Piszę aplikację komunikującą się z PC za pomocą USART1 w trybie master(PC)/slave(STM32) i wszystko działa dobrze dopóki PC nie nadaje podczas startu STM'a. Szukam odpowiedzi na powyższe pytanie lub sposobu jak brak takiej możliwości obejść.
Co to jest USART1_DR_BASE? Czy to samo, co &USART1->TDR ? DMA przed każdym użyciem wymaga, przynajmniej częściowego, powtórnego zaprogramowania - napewno długość bloku, być może też adresy. Ty tego nie robisz.
Przerwania, w odróżnieniu od starych ARMów są w całości zarządzane przez ARM'a czyli CortexMx. W dokumentacji ARM znajdziesz opisy rejestrów i jako to działa. Każdy producent, taki jak ST zmienia znaczenie linii przerwań, definiując je po swojemu za wyjątkiem kilku pierwszych zarezerwowanych przez ARM. Ponadto, Cortex'y mają możliwość nadania przerwaniom...
Na moje oko to nie ma prawa działać poprawnie. W tym kodzie praktycznie wszystko jest źle. Funkcja callback jest wołana po odebraniu danych do bufora, wcześniej przekazanego przy wywołaniu Receive. Ty nie bierzesz danych z bufora, do którego zapisała je obsługa przerwania z HAL, za to kolejno wielokrotnie odczytujesz RDR, nie wiedząc, co właściwie z...
A gdyby tak... [syntax=c]void USART1_IRQHandler(void) { u8 data; if(USART_GetITStatus(USART1,USART_IT_RXN... { USART_ClearITPendingBit(USART1,USART_IT_... data = (USART_ReceiveData(USART1) & 0x7F); USART1_Putc(data); } }[/syntax]
Witam, Żadne rozwiązanie z innych tematów nie działa. Posiadam płytkę STM32VLDISCOVERY, zasilam ją z portu USB. Dodatkowo posiadam konwerter na FT232, konwerter działa poprawnie, echo jest przesyłane. Korzystam z programu Terminal v1.9b. Program na odebranie 49 ma zapalać diodę LED a po odebraniu 50 ma gasi diodę. Proszę o pomoc w znalezieniu błędu....
Faktycznie, rozwiązanie kwestii działania SPI było dosyć proste i po sprawdzeniu - SPI działa. Odczytuję zapisany wcześniej rejestr poprawnie. Teraz mam inny problem. Poniżej zamieszczam program z pliku main.c, w którym są dodane miejsca wysyłania kolejnych numerów przez UART i program zatrzymuje mi się po wysłaniu numeru 88. Nic więcej się nie dzieje,...
By jednak się definitywnie upewnić czy niedziałanie programu wynika z zatrzaśnięcia stanu wysokiego z pinu BOOT0 podczas resetu, moim zdaniem warto by było, do egzemplarza płytki, który nie działa, spróbować "zagadać" z programu "STM32 Flash loader demonstrator" poprzez USART1, Jeśli Boot0 jest w stanie wysokim to ważne jest w jakim stanie jest Boot1,...
Tak dokładnie to powinno być: if (USART1->ISR & USART_ISR_TC) GPIOA->BRR = 1u << DE_BIT; Coś mi dzisiaj klawiatura nie służy.
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...
Witam, Próbuje uruchomić komunikacje uart w przerwaniu, no i oczywiście mam problem z tym, że nie działa :o Wygląda na to, że przerwanie wogóle nie jest wołane. Czy ktoś z szanownych forumowiczów mógłby zerknąc w kod i podzielić się informacją dlaczego ten program nie ma szansy działać? USART_SendData(USART1, 'X') do main'a działa ok. Jak również użycie...
[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 /*...
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 mam problem z obsługą magistrali 1Wire a dokładnie z odczytem temperatury przez DS18B20, napisałem funkcje do podstawowej obsługi 1Wire, RESET działa poprawnie natomiast przy odczycie danych mam zawsze same 1. Dodam iż korzystam z płytki STM32DISCOVERY a czujnik szynę danych ma podciągniętą do 3,3V za pomocą rezystora 4,7K według noty katalogowej....
Ja ostatnio rozwiązałem to tak do transmisji danych z 3 osiowego akcelerometru: [syntax=c] sprintf((char *)buforTx,"X%03iY%03iZ%03iE%1c%1c",Buffe... USART_ITConfig(USART1, USART_IT_TXE, ENABLE); //Przerwanie-transmisja [/syntax] Potem w programiku napisanym w C# wyłuskuję z ciągu interesujące mnie dane: http://www.youtube.com/watch?v=d-q6DuQH-...
Witam, Wykonałem sobie płykę pod STM32F103CBT6 i próbuję się z nim połączyć w jakiś sposób. Próbowałem JTAG'iem - nie widzi procesora. Próbuje RS'em - również się nie może połączyć. BOOT1 mam ustawione 0, BOOT0 - 1 . Jak zrozumiałem z PDF'a aby uaktywnić bootloader należy oprócz takiego ustawienia PINów BOOT, po włączeniu zasilania podać na NRST stan...
Cały czas jednak nie ogarniam tego, dlaczego jeżeli chce pobrać dane z IrQHandler z tablicy gpsread do tablicy RxBuffer w funkcji niżej, to wgl nie moge skopiować danych nawet zwykłym for'em? [syntax=c]void USART1_IRQHandler(void) { //odbiór danych if((USART1->ISR & USART_ISR_RXNE) != RESET) { uint8_t data = USART1->RDR; gpsread[wpp] = data; if(++wpp...
Usuwając "AFIO, ENABLE" nadal jestem w stanie wysłać dane z płytki Masz rację, AFIO tylko w przypadku, gdy przekierowujesz USART1 na inny port. Mówisz, że nadawanie działa to z pewnością prędkość masz dobrze ustawioną. Może zapal jakiś LED po odebraniu '1'. Skoro pracujesz na bibliotece to przykłady znajdziesz na stronie wydawnictwa BTC jako załącznik...
Chyba tak jest, tutaj plik startup_stm32f10x_md.c [syntax=c]/** ****************************************... * (at)file startup_stm32f10x_md.c * (at)author Coocox * (at)version V1.0 * (at)date 12/23/2009 * (at)brief STM32F10x Medium Density Devices Startup code. * This module performs: * - Set the initial SP * - Set...
kardynalny błąd -> oczekiwanie na co, na TC==1 ? Przeciez w notce katalogowej zalecają poczekać po zakonczeniu transmisji na TC. Poza tym nie odpowiedziałeś na moje pytanie, które tyczy się nie tylko USARTA: Chodzi mi o to czy jeśli program wejdzie w obsługę przerwania od konkretnego wyprowadzenia, to czy ponowna zmiana stanu tego samego wyprowadzenia...
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.
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;...
Czy ten zapis jest koniecznie potrzebny: USART1->SR=0x80;. Powinno działać bez ingerencji w rejestr SR w przerwaniu.
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...
Rzeczywiście teraz dopiero do mnie dotarło jak funkcjonuje mbed. W przeglądarce generuje mi plik .bin który np. za pomocą ST-Link Utility mogę wgrać. Pozytywnie zaskakuje mnogość bibliotek, jednak tak jak wcześniej napisałeś mogą wymagać drobnej edycji. Zainspirowany podanymi wyżej sugestiami, problem z Uartem rozwiązałem tak, że dane wychodzące przekazuje...
Wygeneruj sobie projekt w cube i podejrzyj. Jest to najszybsze i najprostsze. Dodano po 11 [syntax=c]void HAL_UART_MspInit(UART_HandleTypeDef* huart) { GPIO_InitTypeDef GPIO_InitStruct; if(huart->Instance==USART1) { /* USER CODE BEGIN USART1_MspInit 0 */ /* USER CODE END USART1_MspInit 0 */ /* Peripheral clock enable */ __USART1_CLK_ENABLE(); /**USART1...
Chodzi mu o to że PA9 ma przypisane 2 peryferia w jednym trybie, i jeśli obydwa peryferia są włączone i żadne nie jest zremapowane to następuje konflikt. TIM1 ma możliwość odłączenia się od tego portu, ale być może biblioteka nie do końca mu to umożliwia. Ta biblioteka zbyt inteligentna nie jest i ma błędy i dlatego z niej nie korzystam, po drugie szkoda...
Procesor jest taktowany zewnętrznym generatorem 16MHz. Jeśli tak, to musisz mieć pewność że makro HSE_VALUE ma odpowiednią do tego wartość, bo domyślnie w SPL dla F1 jest zdefiniowane jako: [syntax=c]#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */ [/syntax] Od strony programu nie ma możliwości sprawdzić jaka...
Zaczynam zabawę z stm32. Chciałbym obsłużyć USART przez przerwania. Większość przykładów opiera się na stdperiph lib, chciałbym uniknąć stosowania tej biblioteki. Używam tylko nagłówka stm32f10x. Wydaje się że włączyłem przerwanie przez NVIC_EnableIRQ(USART1_IRQn) bit w rejestrze USART1->CR1 również został ustawiony i w zasadzie na tym utknąłem. Prosiłbym...
http://www.st.com/content/ccc/resource/t... tylko usart1 w f103
Uruchomiłeś zegar dla UART i dla portów ? Generalnie cała inicjalizacja wygląda tak: [syntax=c]RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; GPIOA->CRH = 0xA0; // USART -> TX push pull 2MHz RCC->APB2ENR = RCC_APB2ENR_USART1EN; // enable clock for USART1 USART1->BRR = FREQUENCY/BAUD; // set baud rate to BAUD USART1->CR1 |= USART_CR1_TE; // enable transmitter USART1->CR1...
Embedded boot loader The embedded boot loader is located in the System memory, programmed by ST during production. It is used to reprogram the Flash memory with one of the available serial interfaces: ● In low-, medium- and high-density devices the bootoader is activated through the USART1 interface. ● In XL-density devices the boot loader...
A dlaczego tego nie sformatujesz normalnie za pomocą np. sprintf? [syntax=c] volatile float a,x; int p; volatile char Text_Buffer[32]; x = 150; a = x/47; sprintf((char*)Text_Buffer, "%4.4f", a); p=0; while(Text_Buffer[p]!= 0) { USART_SendData(USART1, Text_Buffer[p]); p++; } [/syntax]
Poprawiłem kod: [syntax=cpp] void USART1_IRQHandler(void) { if(USART_GetITStatus(USART1,USART_IT_RXN... sie gdy bufor odbiorczy nie jest pusty { RxBuf[i++] = USART_ReceiveData(USART1); if(i>7){ //USART1->CR1&=~(1<<2);// Odbiornik wylaczony USART1->CR1&=~(1<<5);//blok... przerwania odbioru i=0; j=0; for(l=0;l<=7;l++)...
Masz wewnątrz procka kontroler USB oraz Usart. Kod ich wirtualnego coma według mnie pozwala na konwersje od wejścia USART do wyjścia USB bo Przerwania: [syntax=c_loadrunner]void USB_LP_CAN1_RX0_IRQHandler(void) { USB_Istr(); } void USART1_IRQHandler(void) { if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { /* Send the received data to the PC...
Cześć Od razu nadmienię, że jestem w tym początkujący. Posiadam mikrokontroler STM32F100C4T6B oraz moduł GY-50 L3G4200D. Próbuję nawiązać połączenie za pomocą interfejsu I2C i wyświetlić informację na komputerze kominukując się po UART, który na pewno działa. Jeżeli chodzi o połączenie to jestem na 99% pewny, że jest dobrze. Korzystam z programu STM32CubeMX...
ISO7221 są tańsze ( w Łodzi ) i dwukanałowe.
Nie mogę pokazać kodu ponieważ nie jestem jego właścicielem. USART2 wykorzystywany jest do komunikacji z SIM900, USART1 oraz TIM3 do Modbus RTU. Jakie ustawić priorytety od w/w źródeł przerwań ?
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_...
Cześć wszystkim, Zwracam się do Was z prośbą o pomoc w rozwiązaniu problemu z poprawnym wysyłaniem stringa po UART za pomocą przerwania nadawczego. Męczę, się z tym już któryś dzień, czytam reference manuala, i cały czas nie udało mi się tego problemu rozwiązać. Ogólnie rzecz biorąc funkcje do buforowania zdarzeń odbiorczych/nadawczych są sprawdzone...
Witam Wysyłam przykładowe ramki z terminala do STM32 przez driver MAX3485 i cały czas sypie mi błędami w odpowiedziach. Nie mam też pewności czy to co wysyłam z terminala do STM32 dociera bez błędów. Poniżej fragment kodu oraz zrzut ekranu. Powinienem otrzymać to co wysyłam. Czarny kolor to odebrane ramki. Proszę o pomoc http://obrazki.elektroda.pl/7456669500_1...
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,...
Dane nadaję w postaci paczki, kod ASCII litery P, potem 3 bajty prędkości, po czym bajt z kodem litery K. W programie testowałem również czy nadając daną wartość odczytuję ją poprawnie, dla każdego bajtu tak było. Wydaje mi się, że to nie tu tkwi problem, jednak mimo to załączam kod obsługi przerwania od UART1: [syntax=cpp] void USART1_IRQHandler(void)...
Jak wygląda sprawa z przerwaniami? Tam zamiast przerwań są używane callbacki. To nie tak jest. Callbacki są całkiem do czego innego. W programie HALowym, to użytkownik pisze obsługę przerwań sprzętowych (tak jak w klasycznym podejściu "rejestrowym") a specyfiką HAL jest tylko to że dostarcza pewnych gotowców na obsługę przerwań. Przykładowo weźmy uart....
Witam serdecznie. Mam problem ze zrozumieniem pewnej kwestii... Posiadam zestaw STM32F7 i chciałbym zrobić taką komunikację dwoma UARTami (wzorując się poniekąd na Poradniku udostępnionym tu na forum). Urozmaiceniem miałoby być to, aby do złączy STM32F7 był podłączony modulik bluetooth HC05. W tym celu skonfigurowałem sobie UART6 bo z tego co widzę...
oczywiście próbowałem volatile już wcześniej ale bez powodzenia - dalej pętla while jest omijana w czasie kompilacji, dałem volatile gdzie tylko się dało [syntax=c]volatile char Buffer[MAX_STRLEN]; volatile char* volatile pWrite = Buffer; volatile char* pRead = Buffer; volatile char* const pBegin = Buffer; volatile char* const pEnd = Buffer+MAX_STRLEN;[/syntax]...
Główna pętla przybrała taki kształt " while(!(USART1->SR & USART_SR_TC)); "
Witam, walczę z UART i natrafiłem na przeszkodę w postaci odbioru danych (wysyłanie działa). Analizując mój kod przynajmniej teoretycznie powinien działać, ale w praktyce tego nie widać, więc proszę o zdjęcie mi klapek z oczu i wytknięcia błędów. Zamieszczam kod, który ma za zadanie sterowanie diodą w zależności od odebranego rozkazu. Konfiguracja UART...
Cześć, Od jakiegoś czasu borykam się z takim problemem: chciałbym odbierać po CANie ramki, wpisywać je w gotowy szablon i dalej wysyłać po USARCie na kompa w kodzie ASCII. Czegoś mi brakuje w tym kodzie i za każdą wskazówkę będę wdzięczny. Z góry dzięki:) To mój main: [syntax=c] unsigned char tx_uart[]=" ID: DL: F: T: DATA: ";//54 char ramka[55]; unsigned...
Witam. Jestem zupełnie nowy w programowaniu STM32, korzystam z zestawu http://kamami.pl/index.php?ukey=product&... i uczę się według książki weń zawartej. Próbuję nawiązać komunikację między zestawem i komputerem z użyciem flag oraz wymienić przykładowe dane, lecz na razie brak sukcesu. Terminal (korzystam z aplikacji Terminal autorstwa...
Staram się uruchomić komunikację z modułem radiowym HM-TRLR-LF/HFS. Komunikacja sprzętowa po USART działa ok, ponieważ otrzymuję komunikaty błędu od modułu, ale nie potrafię wysłać żadnego poprawnego rozkazu do modułu. Z opisu wynika że polecenia mają być wysyłane w ASCII, dużymi literami i kończyć się znakiem <CR>. Najprostsze polecenie to Test...
Ja rozumiem ze mozna szarpać się z darmowymi toolchainami, ale zeby z keilem?... Postawienie darmowego toolchaina trwa minute :)
Dobra - kolejny test. Wydaje mi się, że masz lekki problem ze swoimi funkcjami. Może w Twoich funkcjach nie ma oczekiwania na zakończenie poprzedniej transmisji? Wywołaj swoją funkcję wyświetlania znaku mniej więcej tak: USART_SendData(USART1,'a'); USART_SendData(USART1,'b'); USART_SendData(USART1,'c'); USART_SendData(USART1,'d'); USART_SendData(USART1,'e');...
Cześć Mam problem z Kodem w stm32F103, chodzi dokładnie o znak końca wiersza, prowadzący zajęcia dał na funkcję która działa podobno na linuxie natomiast na windowsie już niekoniecznie. Poniżej przedstawię fragment kodu w którym jest problem: [syntax=c]volatile char rxBuf[32]; uint8_t rxBufPointer; volatile uint8_t rxDataRead; void USART1_IRQHandler(void)...
niezbędny będzie konwerter USB do TTL (inaczej USB do Serial) To pozostawia pewną niejasność, bo właśnie kupiłem dwie różne przejściówki USB do Serial, i one różnią się paroma cechami. Jedną z nich jest to, że stan STOP na wyjściu TxD (nie pomyl z BREAK, bo to akurat jest odwrotny) dla jednej daje 0V (czyli L, a stany START i BREAK 5V, czyli H), a...
Witam, Chcę wykorzystać w uK Uart4 do pracy w przerwaniu jednak wszystkie moje wysiłki jak na razie kończą się niepowodzeniem. Skonfigurowałem Uart4 do pracy z prędkością 9600/rx/tx włączyłem odpowiednio taktowanie i ustawiłem porty. Wysyłam znaki do uK i z uK wszystko idzie poprawnie dopóki nie ustawię przerwania UART4_IRQHandler. // włączenie portów...
Czy znane są wam inne skuteczne algorytmy pomiaru amplitudy PWM? Pracuje na STM32F072CB i tylko taki mam do dyspozycji wedle założeń projektu więc przesiadką choćby na F1 nie wchodzi w grę... Do tego celu jest więcej niż wystarczający. Metoda pomiaru jest dobra. Dodatkowe pytania: 1. Czy oglądałeś ten przebieg na oscyloskopie? Może po prostu nie jest...
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...
A próbowałeś tak ? If USART1 is used to connect to the bootloader: the USART2_RX (PD6), CAN2_RX (PB5), OTG_FS_DM (PA11) and OTG_FS_DP (PA12) pins have to be kept at a high or low level and must not be left floating during the detection phase. Nie mogę zrozumieć po co Ci to PA9 podciągnięte do vcc
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...
W tym momencie wypłynęło mi coś zupełnie innego. Sprawa dotyka USART i modułu BTM222 (kamodBTM222). Nie mam pojęcia, dlaczego nie mogę wykonać tak prostej czynności, jak zmiana nazwy komendą ATN. Korzystam z przykładu zamieszczonego na http://www.mikrokontroler.pl/content/blu... W tym momencie zrezygnowałem z przerwań...
Makra takie: /* Flash Control Register bits */ #define CR_PG_Set ((uint32_t)0x00000001) #define CR_PG_Reset ((uint32_t)0x00001FFE) #define CR_PER_Set ((uint32_t)0x00000002) #define CR_PER_Reset ((uint32_t)0x00001FFD) #define CR_MER_Set ((uint32_t)0x00000004) #define CR_MER_Reset ((uint32_t)0x00001FFB) #define CR_OPTPG_Set ((uint32_t)0x00000010) #define...
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...
Można jeszcze zmniejszyć płytkę, wyrzucając złącze JTAGA oraz USB. USART1 do programowania zupełnie wystarczy. Upraszcza to trochę program na STM32. Stosując taki zabieg jak przedstawiłeś oraz moje eliminacje - wyszły nam z kolegami płytki o 50% powierzchni mniejsze niż te z kitu AVT oraz oczywiście dla cięcia kosztów pasujące do standardowej obudowy...
Witam, Mam problem z komunikacją przez USART, będąc w debugu wykonując poniższą pętle krok po kroku (step into) wszystko jest ok, dane są wysyłane i odbierane. Natomiast po wciśnięciu run czy step over czasami zostanie wysłany i odebrany [Tx i Rx zwarte] jeden, maksymalnie trzy bajty(najczęściej liczba wysłanych jest o 1 większa) i hard fault, czasami...
Ponieważ np. I2C komunikuje się z urządzeniem zewnętrznym przez piny GPIO ustawionymi jako alternatywna funkcja pinu AFIO i dlatego trzeba te bloki włączyć ..najoględniej mówiąc. Najogólniej mówiąc to AFIO służy jedynie do remapowania pinów i pierwsze słyszę, że należy je włączać dla I2C, ADC etc. Zegar należy włączyć dla GPIO i dla danego peryferium....
Szanowni Forumowicze, Nabyłem ostatnio moduł Waveshare z uc STM32F107VCT6 o nazwie Core107V. Mam problem z dostaniem się do niego za pomocą USART1. Podłączam się przez przejściówkę na układzie PL2303 (próbowałem tez z FTDI) zgodnie z tym co podaje datasheet. Czyli: Przejsciowka | Mikrokontroller 3.3V => 3.3V na procku GND => GND na procku RX => PA9...
Witaj, na początku tylko powiem, że jednak cały czas pracuję na bibliotece, bo po prostu jest dla mnie bardziej zrozumiała; nie jestem specem od mikrokontrolerów, ale cały czas się uczę :) jeśli już faktycznie ona całkiem nie będzie działać, to będę próbować "po Twojemu". Wydaje mi się, że program, który ma dla mnie sprawdzić wysyłanie nie powinien...
Oczywiscie tak. Dodam ze uzywam programu System Workbench [syntax=c] /** ****************************************... * (at)file startup_stm32.s dedicated to STM32F103C8Tx device * (at)author Ac6 * (at)version V1.0.0 * (at)date 2018-04-06 ****************************************...
Witam, Mam taki kod: DD DD DD ... Próbuje jednak użyć przerwań aby odczytywać to co wpada na USART1, który przemapowałem sobie na PB6/7. Drugie urządzenie na pewno działa bo jak podłącze do przejściówki RS232 to otrzymuje dane w terminalu. Problem leży pewnie w NVIC_InitTypeDef, ale próbowałem różnych sposób i niestety ale każdy powoduje zatrzymanie...
Witam, Próbuje skomunikować się z modułem SIM800 przy pomocy STM32F100RBT6B. Mam skonfigurowane peryferia i wysyłam dane do modułu. Niestety problem pojawia się przy odbiorze, Odbieram tylko pierwszą literę i nie wiem dlaczego. Wykorzystuje przerwania do transmisji UART. Komunikacja z poziomu PC <-> SIM800 przebiega bez problemów, prosiłbym o...
Zmieniłem : 2. change The initial stack pointer in the vector table: (void *)&pulStack[STACK_SIZE-1]... to (void (*)(void))((... long)pulStack + sizeof(pulStack)), w startup_stm32f10x_md_vl.c Dalej to samo. [syntax=c]/** ****************************************...
Witam, Od niedawna zajmuje sie dlubaniem w STM32. Natknalem sie na problem z uruchomieniem UARTow 2 i 3 na STM32F103RBT6. UART1 dziala, szyna APB1 chodzi na 36 Mhz. UARTa konfiguruje nastepujaco: sGPIORxInit.GPIO_Pin = GPIO_Pin_3; sGPIOTxInit.GPIO_Pin = GPIO_Pin_2; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); RCC_APB1PeriphClockCmd(...
Funkcja SystemInit jest wywoływana w obu przypadkach na początku main. Podałem ją w kodzie. Może tutaj faktycznie jest problem. Pliki startup.s Keila i Cube się różnią. Zauważyłem, że funkcja SystemInit jest wywołana w pliku dla Cube. Niestety te pliki to dla mnie czarna magia. Czytałem o nim artykuł waszego kolegi z elektrody. https://www.elektroda.pl/rtvforum/topic3...
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){...
Tak sobie patrzę na kod od końca: i dlaczego przy 'default' nie zwracasz wartości funkcji (byte)?
Witam, W taki sposób deklaruje komunikację z USART: [syntax=c]RCC_AHBPeriphClockCmd(RCC_AHBP... ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_US... ENABLE); USART1_Configuration(); NVIC_EnableIRQ (USART1_IRQn); void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; /* Connect PA9 to USART1_Tx */ GPIO_PinAFConfig(GPIOA, GPIO_PinSource9,...
Witam, Mam problem z komunikacją STM32 z komputerem. Moja płytka to STM32L-Discovery [url=http://www.st.com/internet/evalboar... Chciałem napisać sobie najprostszy program do komunikacji z komputerem. Jak na razie nic nie działa. Pisałem program z pomocą książki "Mikroprocesory STM32 w praktyce" Krzysztofa Paprockiego. Musiałem...
W koncu sie zebralem i narysowalem schemat ( patrz zalacznik). Wypatrzylem u siebie 3 bledy: 1) pin GND od gniazda SIM nie podlaczony 2) pin 19 V_MAIN od ME3000 nie podlaczony (ale podlaczone pozostale, piny 20 i 21 V_MAIN) 3) /RESET od ME3000 podlaczony do bazy BJT NPN a nie do kolektora. Te bledy poprawilem i teraz modem sie juz wcale nie odzywa,...
Witam, mam problem z odbieraniem danych po usarcie. Jest on skonfigurowany tak: USART_ClockInitStructure.USART_Clock = USART_Clock_Disable; USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge; USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; /* Configure the USART1 synchronous paramters...
Po skonfigurowaniu UART-a mam TXE w stanie 0 a RXNE w stanie 1 bo: USART_ITConfig(USART1,USART_IT_RXNE,ENAB... Przynajmniej to chciałem uzyskać pisząc ten kod:) Kod debugowałem i nie zacina się, wychodzi normalnie przez ostatni return w funkcji USART1_TxBuf. Sprawdziłem też że moja obsługa przerwania USART1_IRQHandler się nie wywołuje. Deklaracja TxIndex:...
Siemka. Mam mikrokontroler STM32F072RB oraz moduł Wi-Fi ESP-01. Próbuję przesyłać UARTem do modułu Wi-Fi wszystko, co UARTem otrzyma mikrokontroler od PC'ta połączonego z nim po USB. Byłem pewien, że zadziała to od kopa, a jednak nie. Przy samej inicjalizacji, układ otrzymuje znak '\0' od modułu Wi-Fi, a później już nic. Żadne komendy AT nie wywołują...
Wyglądają dobrze. 4\/3!!
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 +=======================================...
Ta funkcja powinna wyglądać tak: [syntax=c]u8 usart_read_byte () { while(!(USART1->SR & USART_SR_RXNE)); return USART1->DR; }[/syntax] Widisz drobną różnicę ? Jak bit jest nieustawiony to czeka, w Twoim przypadku jest tak, że jak nie ma nic do odebrania to zwraca losową wartość jaka aktualnie będzie na stosie. Kod w mainie zamiast tak: [syntax=c]if...
Witam, Próbowałem na podstawie książki "Mikokontrolery stm32 w praktyce" uruchomić na STM32F107 transmisję z wykorzystaniem USART-a. Połączyłem Rx i Tx ze sobą i próbuję wysyłać a następnie odczytywać wysłane dane. Poniżej jest mój kod: int main(void) { SetSysClockTo72(); EnablePerypherialClocks(); ConfigureNVIC();...
stm32 usart1 przerwać stm32 usart1 przerwanie usart1 atmega128
szpilka głowica kompaktowanie outlook rezystor xsara
moment dokręcania śruby korbowody klucz udarowy uszkodzony
Radio Seat 6K2 - Modernizacja, Problemy Techniczne, Wymiana Jak ustawić zegar w kuchence Beko CSM52323DW?