GPIOx->BSSR
Nie jest to możliwe - zapis do dwóch portów to będą dwie odrębne operacje. Różnica między nimi może wynosić kilka cykli zegara (~3).
Ale dlaczego instrukcja PIN_x_y = z miałaby sterować konkretnym pinem? Proszę o definicję. Bo PIN_x_y jest makrem operującym bezpośrednio na pinach za pomocą bit-bandingu, czyli czegoś o czym użytkownicy biblioteki nie wiedzą i raczej się nie dowiedzą, bo w bibliotece nie ma takich możliwości, a po co szukać więcej info niż w manualu do biblioteki?...
Jest szybsze bo tak jak mówisz te rejestry są tylko do zapisu. Też mam coś takiego: [syntax=c]typedef struct { __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */ __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */ __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset:...
Witam Szukałem na forum (ale nie znalazłem tego co mnie interesuje), chce pobrać stan PORTuA i PORTuC zapisac do pamięcia uC następnie odczytać z pamięci i wysłac USARTem na chwile obecną robię to bez pamięci: if(byte=='s') //gdy odbierze literke "s" wysyła naprzemian stan portu A i C { st=1; } ......... if(st!=0)...
Witam, Zaopatrzyłem się w zestaw edukacyjny STM32F0 Discovery oraz środowisko uruchomieniowe System Workbench for STM32. Staram się napisać prosty fragment kodu do obsługi portów według informacji w internecie - niestety nic nie działa, kompilator wyrzuca sam błędy. Zwracam się z prośbą o napisanie fragmentu takiego kodu na wzór, do testów. W załączniku...
https://obrazki.elektroda.pl/5694434400_... Moduły zasilaczy warsztatowych, takie jak DPS5005, dostępne są od dłuższego czasum.in. na AliExpress. Doczekały się wielu recenzji, w większości pozytywnych. Jednakże często wskazywanym problemem z tymi modułami jest kiepskiej jakości oprogramowanie – interfejs użytkownika pozostawia...
http://obrazki.elektroda.pl/2463034100_1... Witam wszystkich, Chciałbym tym razem przedstawić projekt gotowego radiomagnetofonu internetowego. Jest to rozwinięcie opublikowanego wcześniej na Elektrodzie małego odtwarzacza MP3. Radiomagnetofon umożliwia granie strumieni radiostacji internetowych, nagrywanie tych strumieni na kartę SD,...
Witam, chciałbym stworzyć prosty układ pomiarowy, który by miał za zadanie pobrać w krótkim czasie sporą liczbę pomiarów (np 1000 pomiarów w ciągu sekundy przy 12 bitowym przetworniku adc) i jednocześnie zapisać te pomiary na kartę sd ( system plików fatfs ) po to aby móc swobodnie w dłuższym czasie przesłać otrzymane dane poprzez port rs232 na PC ....
Witam, mam pewien błahy problem, ale nie mogę sobie z nim poradzić. Chciałbym ustawić numer portu w zależności od jakiejś zmiennej, a nie na sztywno np.: Zamiast ustawić: [syntax=c]GPIO_SetBits(GPIOB ,GPIO_Pin_12);[/syntax] Chciałbym ustawić: [syntax=c]int licznik=12; GPIO_SetBits(GPIOB ,GPIO_Pin_licznik);[/syntax] Niestety powyższy zapis jest niepoprawny...
Tak BTW to w 16-bitowych PICach odczyt i zapis do portu trwa zapewne tyle co w AVR, mają więcej pamięci, 16-bitowe porty i śmigają na 40MHz No tak, tylko znowu nowy procesor, nowa architektura, ale dzięki za naprowadzenie na taki trop. Swoją drogą sprawdziłem, że STM32 potrafi wysyłać na port dane z prędkością znacznie powyżej 18MHz, niestety dopiero...
GPIOx_BRR i GPIOx_BSRR są tylko do zapisu a nie odczytu - GPIOx_BRR służy do kasowania stanu portu poprzez ustawienie odpowiedniego bitu. GPIOx_BSRR służy do kasowania i ustawiania portów. Oba rejestry dają funkcjonalność atomowego dostępu do poszczególnych bitów portów. Rejestr GPIOx_ODR jest standardowym rejestrem do odczytu i zapisu do portów.
Jeżeli chcesz do szyny wykorzystać np. połówkę portu (8 bitów) to najszybciej BSRR. Najszybciej wtedy wykonywać 8-bitowy zapis do rejestru ODR. 4\/3!!
Witajcie, Od paru dni walczę z pamięcią IS66WV51216EBLL-70 ([url=https://www.mouser.pl/datasheet/2/... Na QSPI mi nie wyszło to zwróciłem się ku pamięciom równoległym. Z tym, że nie używam żadnego dedykowanego protokołu tylko po prostu użyłem jednego całego portu jako magistrali danych i drugiego (oraz kawałka jeszcze...
A mapowanie działań na porcie w pamięci i maskowanie przed zapisem do fizycznego rejestru portu? Coś jak w PLC. Potrzebujesz żeby to szybkie było? Inna rzecz że weź nawet dwukanałowy oscyloskop i potestuj na jakimś arduinku.
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,...
Bufor cykliczny, inaczej też nazywany kołowym, to najlepsze rozwiązanie do tego co chcesz zrobić. Tym bardziej, że jak zaznaczyłeś danych będzie sporo. Każdy odebrany znak wpisujesz do bufora i przesuwasz wskaźnik zapisu o 1. Możesz to robić przez obsługę przerwania od portu szeregowego, albo możesz do tego wykorzystać DMA. Dlaczego bufor? Ponieważ...
Dodajmy, że jak już ktoś musi zmieniać stan portu programowo, to w STM32 służą do tego raczej rejestry BSRR i BRR, a w innych uC albo analogiczne rejestry pod innymi nazwami (np. FIOSET, FIOCLR w LPC17xx) albo zapisu maskowany (np. w LPC11xx). W każdym razie nie robi się tego przez programowe operacje logiczne na portach.
Cześć Wszystkim, chciałbym przedstawić urządzenie, które być może przyda się również dla innych elektrodowiczów :) Jest to moja pierwsza publikacja w DIY, więc proszę o wyrozumiałość. Nie mniej jednak każdą krytykę przyjmę - o ile będzie konstruktywna i może coś wnieść do konstrukcji :) Urządzenie powstało z potrzeby własnej :) Od blisko 2 lat zajmuję...
dioda LED na PC8 razno miga I tak ma być. Ta funkcjonalność dotyczy tylko blokowania rejestrów konfiguracyjnych danego pinu, czyli dokładniej rejestrów GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR, GPIOx_AFRL i GPIOx_AFRH. Po prostu zablokowana jest możliwość przeprogramowania wejścia na wyjście czy odwrotnie, przełączenia na inną funkcję...
Nie wiem czy ożyło bo ten wstawiony ostatnio program zlasowal mi mózg , błędów zamiast mniej to było coraz więcej i w końcu ten kod odłożyłem na bok. Próbuje cos zwojować na bibliotece HALL ale pomimo iż program się kompiluje nie wiem czy jest poprawianie napisany a nie będę pytał AI bo i tak mi nie powie. Program się nie uruchamia więc albo inicjacja...
Witam. Pięknie Panowie piszecie. Przypuszczam że większość z was naukę zaczynało na 8051 lub AVR. Teraz jak już opanowaliście do perfekcji C i zdobyliście bardzo duże doświadczenie w programowaniu to nie macie problemu ze zmianą procesora w zależności od potrzeb projektu. Tylko że w starym AVR aby ustawić port wystarczą dwie lub trzy komendy i już można...
Na to pytanie nie da się odpowiedzieć nie wiedząc, jak jest podłączona dioda. Zasadniczo kod do zaświecenia diody w C ma 2 lub 3 linie (a nie kilkadziesiąt) - włączenie portu, ustawienie linii jako wyjścia, a jeśli dioda jest podłączona pomiędzy wyjście i masę - zapis jedynki. Na STM32F0 wygląda to tak: [syntax=c]RCC->AHBENR |= RCC_AHBENR_GPIOCEN;//...
Nie spojrzałem dokładnie w jaki sposób użyte były te operacje w powyższym kodzie. Ja używam zapisu poniższego: Przy takim zapisie [syntax=c]GPIOB->BSRR = GPIO_BSRR_BS9; [/syntax] ustawiam 9 bit portu B ,a przy takim [syntax=c]GPIOB->BRR = GPIO_BRR_BR9; [/syntax] zeruje tą końcówkę i w tym przypadku jest to równoważne. (przynajmniej znowu tak mi się...
Akurat nie, bo w portach z maskowanym dostępem operacja logiczna jest wykonywana w samym rejestrze portu, a nie w sterowniku szyny, więc nie ma tu r-m-w. Nigdzie nie pisałem, że BitBand jest zły. Napisałem tylko, że niekoniecznie nadaje się do zerowania znaczników przerwań w rejestrach peryferiali, tym bardziej, że ten sam efekt można osiągnąć przez...
Witam. W swoim projekcie chcę wysyłać duże ilości danych (100MB-500MB) z komputera po virtualnym porcie COM interfejsem RS485 do uC STM32. Udało mi się już uruchomić komunikację i próbowałem zapisywać dane po stronie uC STM32 na kartę SD w trybie SPI. Niestety okazało się w praktyce, że sam zapis na kartę SD trwa "bardzo długo" (nawet 60ms dla jednego...
W manualu jest tylko wykaz jaka funkcja do jakiego portu może być przypisana. A mi chodzi o konkretny kod, jak go skleić. Chyba masz tylko datasheet do klocka. Freddiemu chodzi o RM0008 w którym wszystko o co pytasz jest opisane. Kodu nie trzeba podawać bo zapis jest w postaci prawie że takiej jak są opisane rejestry w manualu. Zaraz nad sekcją GPIO...
Jakbyś nie zauważył to inna rodzina procesorów ;-) W użyciu jest lepsze. Inaczej po co w tamtych procesorach stosowano by bit band? Albert W STM32 też taki zapis można wykonać jedną instrukcją. Mimo, że są oddzielne rejestry do ustawiania i kasowania bitów. Porty są 16bitowe a jeden z tych rejestrów jest 32bitowy. Zapis do starszych 16b powoduje kasowanie...
Ale chyba Arduino nie ma USB, tylko zainstalowany port szeregowy na USB (może jeszcze kwestia, który model, ale Arduino Nano na pewno) - podłączenie do komputera Arduino przez USB to podłączenie portu szeregowego i komunikacja z Arduino poprzez ten port - komputer nie może "zobaczyć" Arduino jako pendrive-a. Natomiast można to zrobić z STM32F103C8T6...
Jeśli zakładasz, eż poresecie jakiś bit może mieć "nie tę wartość co trzeba", to konsekwentnie powinieneś również założyć, że po Twoim zapisie ten bit również może mieć "nie tę wartość co trzeba", więc pisanie programu na niedziałający uC nie ma sensu. Coś takiego powinno działać, o ile nie pomyliłeś lini portu: [syntax=c]int main(void) { RCC->AHBENR...
Witam, Po paru dniach ślęczenia udało mi się - tak myślę :) , skonfigurować rcc na 72MHz. : void rcc_init(void) //RCC init włączający procesor na 72MHz { RCC->CR|=0x1; //wlacz HSI wewnętrzny oscylator, włączany jako pierwszy po zasilaniu. while(!(RCC->CR&0x2)); //poczekaj na HSI sprawdza czy HSI się włączyło RCC->CFGR|=(0xF<<18);...
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...
Witam, trochę czasu spędziłem na przeglądaniu dokumentacji AFIO, GPIO ale niestety nie znalazłem niczego co mogłoby mi pomóc dlatego chciałem się zapytać Czy w STM32 jest możliwość takiego remapowania wyprowadzeń żeby np z wolnych pinów stworzyć np 8 bitową magistralę z możliwością zapisu, odczytu danej lub np takim przemapowaniu któregoś z portów żeby...
Szanowny Państwo, zwracam się z uprzejmą prośbą o pomoc z pewnym zagadnieniem. Piszę program do układu sterowania zgrzewarką punktową o wysokiej częstotliwości przekształtnika. Korzystam ze sterownika XL7 firmy Horner oraz płytki STM32. Moją koncepcją na stworzenie układu sterowania jest transmisja danych poprzez protokół MODBUS RTU po kablu RS-485....
Ale chaos. Najpierw korzystasz z biblioteki od STM32, a później zapisujesz bezpośrednio do rejestrów? Zdecyduj się na jedno podejście. Dziwnie masz ta funkcję pull low napisaną. Ja zawsze robię writebit która zajmuje cały slot czasowy na jeden bit. Na 1Wire robiąc pull low musisz ustawić port jako wyjście i ustawić go na poziom niski. Aby go wyłączyć...
ogólnie wziąłeś maszynę o sporej mocy i jej funkcjonalność obciąłeś do nieco lepszego arduino. Niezupełnie. Moc obliczeniowa jest potrzebna do przetwarzania sygnałów. W prosty sposób można dopisać moduły robiące w zasadzie dowolne obliczenia, nawet zmiennoprzecinkowe czy DSP. Skomplikowany algorytm sterowania nie zrobi na CPU dużego wrażenia. Ograniczeniem...
Dzięki, wszystko oczywiście działa. Chciałbym poruszyć jeszcze jedną kwestię dotyczącą bilioteki do obsługiwania peryferiów do STM32. Dopiero zaczynam, więc sam jej używam, jednak da się zauważyć, że produkuje ona obszerny kod wynikowy. Myślę, że podobną funkcjonalność można stworzyć używając samych dyrektyw preprocesora, które nic nie zajmują. Napisałem...
Liczę na to, iż rzeczywiście jest dobrze zainstalowany ten bootloader w moim STM-e... Jeśli Flash Loader Demonstrator nie wyrzucił błędu to masz zainstalowany dobrze. Inna sprawa to jest czy ten plik boot20_pc13.bin masz w odpowiedniej wersji do kompletu z driverem i obsługą w Arduino. Przez Manager Bibliotek nie udaje mi się z ciągnąć i zainstalować...
Aktualizacja z września 2025: zobacz tutaj, aby uzyskać szczegółowe informacje na temat konwersji STM32 przez UART zamiast J-Link (tj. J-Link nie jest wymagany) https://www.elektroda.com/rtvforum/viewt... (dzięki (at)max4elektroda!) zobacz tutaj, aby uzyskać wyższą wersję przekonwertowanego oprogramowania CK-Link Lite dla STM32...
uC to stm32f207. Timer napędza pwm jedno z wyjść (zmienne pwm z preloadingiem co jakiś okres). Wszystko działa ładnie na zmapowanym pinie dla wyjścia OC tego timera (tim 10). Jednak czasem potrzebuję wygenerować identyczny przebieg na pinie tego timera oraz na innym pinie GPIO, akurat tego z tim1. Jednym z rozwiązań jest załadowanie danymi w tym samym...
Cześć. Dość dawno się tu nie udzielałem, jakoś mi było nie po drodze. Trochę zmieniłem zainteresowania, trochę było dużo pracy i nieco odszedłem od elektroniki i niskopoziomowego programowania. Czas powoli wracać, ale dziś przychodzę z problemem :) Mam pewne urządzenie, zaprojektowane dobrych kilka lat temu. Urządzenie działa na STM32F407VGT6 , ale...
Trochę mi się pomieszało ale zaraz wyjaśnię. Najpierw przebiegi, tak jak obiecałem: Częstotliwość 64MHz, sterowanie GPIO za pomocą HAL: https://obrazki.elektroda.pl/6940879300_... Ta sama częstotliwość, sterowanie GPIO przy bezpośrednim zapisie do portu: https://obrazki.elektroda.pl/2013222800_... Ta sama częstotliwość,...
Rozsądek, rozsądek, Panowie, a nie magia. Autor prawie odpowiedział sam - dobrze kombinując, a Freddie czaruje "na wszelki wypadek". Podstawowe pytanie: Czy zachodzą okoliczności, w których nieaktualna zawartość bufora/kieszeni kodu czy danych może być użyta? Potrzebujemy dwóch odpowiedzi: jednej dla danych, drugiej dla kodu. W przypadku odpowiedzi...
Witam, na początku dodam, że od dawna piszę w języku C, na AVR, od niedawna na ARM Atmela, oraz od kilku dni na STM32. Jako, że 2 pierwsze nie sprawiały mi większych trudności, mam kilka pytań dotyczących procesorów ST, na początek zamieszanie z bit-bandem, może ktoś mi wytłumaczyć na jakiej zasadzie to działa? podaje przykład #define bitband_t *(volatile...
Witam, To mój pierwszy post na tym forum :) Staram się zrealizować komunikację mojej aplikacji z płytką STM32 poprzez UART. Moim problemem jest to, że stworzona aplikacja pobiera tylko pierwsze 8 bajtów ramki zamiast 52. Jest to na pewno wina mojej aplikacji, ponieważ sprawdzałam co na port COM wysyła STM za pomocą RealTerm'a i wszystko się zgadzało....
Z tego fragmentu programu dużo wniosków nie wyciągniemy, ale... Przesłanie kodu 0x55 do układu pod adres 0x0B powoduje ustawienie pinów od 12 do 15 jako wejścia bez pullup'a. Strona 7 DS'a. Przesłanie kodu 0x55 do układu pod adres 0x09 powoduje ustawienie pinów od 4 do 7 jako wejścia bez pullup'a. Strona 7 DS'a. Przesłanie kodu 0x55 do układu pod adres...
W sumie w trybie 8-mio bitowym możliwe że by poszło (double buffering), bo pamięci jest na obraz 18-to bitowy. Oczywiście pod warunkiem że wtedy pamięć jest wykorzystywana jako 8-mio bitowa. Nie wgłębiałem się. Najgorzej jak nadal jest 18-to bitowa a konwersja 8-->18bitów jest robiona w locie podczas zapisu do tej pamięci. ten lcd jest wogóle jakiś...
4,7k jest wyliczony raczej dla 5V, DS18B20 jak i STM32 może działać na 3.3V i wtedy proporcjonalnie to już jest ~3k. A jak zasilasz układ czujników jednak 5V to tym gorzej dla układu. Nie mam styczności z MacOS, sprawdzałeś to: http://macappstore.org/stlink/ ? Poza tym przy wgraniu bootloadera trzeba pamiętać o zworkach, bo się kasuje, może uległeś...
Poniżej program do obsługi wyświetlacza TFT: Interesuje mnie dlaczego funkcja LCD_Clear(WHITE) na STM32 działa wolniej niż na Atmedze32 z kwarcem 16MHz. Wydawało mi się że powinno czyścić ekran szybciej na STM32 a już na pewno nie wolniej. Tylko nie zwracajcie mi uwagi na temat pętli opóźniającej;) ponieważ i tak nie jest wykorzystywana w LCD_Clear....
Wyjaśniłem Ci to w poprzednim wątku z przykładem do Nokia_LCD.h, ustaw sobie kontrast między 40 a 60, u mnie na 40 jest OK, na 60 jest czarny ekran. Problem nie jest z kontrastem, ale z tym, że używam (ustawiam) dla obu urządzeń Hardwarowy interfejs SPI, ze wspolnymi pinami MOSI/MISO/CLK . Problem pojawia się dla wszystkich bibliotek poza ta najbardziej...
Skorzystałem z zamieszczonych przez Was kodów i ciągle coś mi nie wychodzi =/ Poniżej zamieszczę kody źródłowe, może Wy znajdziecie jakieś błędy. Wątpię żeby wszystkie kody które wykorzystałem do tej pory były złe - więc albo popełniam jakieś błędy podczas inicjalizacji ssd1963(chodzi mi tutaj o parametry czasowe vertical i horizontal sync mimo, że...
Witam, mam problem z funkcją wysyłającą dane przez SPI w STM32F4 a dokładnie ze sprawdzaniem flagi RXNE. Program zawiesza się na pętli sprawdzającej tą flagę mimo, że warunek jest spełniony...nie wiem o co chodzi, tutaj jest kod funkcji: void LIS35_WriteRegister(char addr, char v) { GPIOE->BSRRH = GPIO_Pin_2; //linia nSS stan niski while((SPI1->SR...
stm32 zapis portu zapis portu stm32 zapis
nagrywanie plików funai zielony dioda adjust white balance
pralko suszarka pralko suszarka
Iveco Stralis EBS 2 – funkcja portu 4 w modulatorze osiowym, tryb awaryjny hamulców Thomson T55FSL5140 TV No Power, No LED – PSU Board 40-L141H4-PWC1CG Faults