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...
Przejrzyj setkę wątków na forum poświęconych temu, dlaczego do przycisków nie uyżwa się przerwań portów, a potem zrób to w przerwaniu timera, np. tak, jak w tym artykule: http://ep.com.pl/files/10324.pdf Samo programowanie prtzerwania też masz ciut bez sensu - najpierw uruchamiasz przerwanie, potem programujesz linię portu, która ma je zgłaszać. Zanim...
1. Jako że masz tylko 8 bitów to maks prędkość jaką możesz uzyskać to 3.27MSPS Z takiego który mi Attolic TrueStudio wygenerował. Może w Attolic'u są jakieś błędy. Użyj Cube. I generując projekt w Atollicu patrz na co klikasz. Samo się nie generuje. Przy okazji błędów szukaj u siebie. Akuracik mam takową płytkę to sobie sprawdziłem na rejestrach. [syntax=c]...
GPIOA -> MODER |= ~GPIO_MODER_MODER8;//wejście a jednak.....
Ok to teraz mam pytanie poniższy kod działa poprawnie pod warunkiem preskalera większego od zero. Powie mi ktoś w czym jest tutaj problem ? [syntax=c] #include <STM32F411xE.h> uint8_t Receive_data; int main (void) { RCC -> AHB1ENR |= RCC_AHB1ENR_GPIOAEN; RCC -> APB2ENR |= RCC_APB2ENR_SPI1EN; __DSB(); GPIOA -> MODER |= GPIO_MODER_MODER7_1...
Pomysł, żeby nadawać znak wtedy, gdy odbiornik jest gotowy i nie wiedząc, co jest w buforze nadawania, niekoniecznie musi być poprawny. Pomyśl, co będzie wysłane po odbiorze pierwszego znaku. Bufor odbioru ma u Ciebie raz 16, a raz 17 znaków. Cyz odebranodane ma atrybut volatile? Czy włączyłeś przerwanie UART? Takie inicjowanie UART działa poprawnie...
STM32 Kod: c Kolega zacytował tutaj przykład z użyciem nieszczęsnej biblioteki SPL, która jest martwa. W rzeczywistości pisząc używając definicji rejestrów z pliku nagłówkowego jest o wiele prościej na przykład: [syntax=c]RCC-> AHBENR |= RCC_AHBENR_IOPAEN // włączenie zegara dla portu A GPIOA-> MODER |= GPIO_MODER_MODER5_0 // ustawienie trybu portu...
[syntax=c] GPIOA->MODER = (GPIOA->MODER & ~(0x03 << 2*2)) | (0x00 << 2*2); //PA2 Input GPIOA->PUPDR = (GPIOA->PUPDR & ~(0x03 << 2*2)) | (0x00 << 2*2); //PA2 Floating void EXTI2_3_Config(void) { RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN; SYSCFG->EXTICR[0] = 0x0000; EXTI->IMR |= EXTI_IMR_MR2; //EXTI->RTSR...
W plikach ".cpp" extern "C" [syntax=c]extern "C" void SysTick_Handler(void) { GPIOA->MODER = 0; }[/syntax]
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...
Niestety podmiana wektorów nie pomogła, przy kompilacji nie pokazują się żadne błędy, a mimo to przerwanie nie działa. W sumie istnieje możliwość, że mój program jest źle napisany. Wrzucam poniżej: [syntax=c]#include "stm32f411xe.h" void UART_send_string (char* s); int main ( void ) { RCC -> AHB1ENR |= RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOCEN; RCC...
Witam Od paru dni próbuje uruchomić interfejs I2C na płytce nucleo. Do testów podłączyłem ekspander PCF uznałem że na tym najlepiej będzie sprawdzić działanie komunikacji. Interfejs inicjalizuje zgodnie z diagramem w RM a przynajmniej tak mi się wydaj :) . wartości dla rejestru TIMINGR dałem takie jak są w tabelce dla prędkości standardowej 100kHz....
Kod: http://obrazki.elektroda.pl/3540213700_1... STM32F0DISCOVERY
co najmniej włączyć pullup lup pulldown na tych pinach. Lub ustaw nieużywane piny w GPIOA_MODER jako analog Można też ustawić jako wyjście. Ważne, aby napięcie nie "pływało".
Witam ! Posiadam mikrokontroler STM32L100RC. Chciałem napisać następujący program: Timer2 ma zliczać 5-krotne naciśnięcie przycisku i zapalać i gasić diodę w przerwaniu. Przycisk jest podłączony do pinu PA1, dioda do pinu PC9. Obsługa przerwania działała kiedy Timer był taktowany zegarem mikrokontrolera, zatem wnioskuję, że coś jest nie tak z ustawieniem...
Witajcie uczę się programować ARMy i właśnie nastał moment gdy komunikaty pokazywane przez diody mnie już nie wystarczają. Ponieważ mam pod ręką Bluetooth HC05 (często w ATmega wykorzystywałem wiec podłączenie mam dobre) to właśnie na niego padł wybór. Niestety gdy staram się odpalić program, który odbierze mi znak i go odeśle wszystko się sypie i np....
Dzień dobry. Od kilku dni bawię się z STM32L152RE, mam problem z generacją PWM z timera 4. Wszystko robię zgodnie z opisem w RM i już nie wiem w czym tkwi problem. Opis programu: TIM4 skonfigurowany do genercji PWM na swoim wyjściu (TIM4_CH1), dla pinu 6 portu B włączona funkcja alternatywna (jako TIM4_CH1). Na wyjściu timera kompletna cisza, ponadto...
Ja u siebie konfigurację PIN'ow rozwiązałem stosując makro (jeszcze jedna alternatywa dla konfiguracji I/O). Przykładowe definicje dla portów SPI (ale SPI1, więc będą trochę inne od SPI3) pokazują, które rejestry/opcje trzeba uwzględnić podczas konfiguracji pinów: [syntax=c] //--------------------------------------...
Witam, na forum znalazłem kilka tematów z problemami podobnymi do moich, ale w żadnym nie znalazłem rozwiązania. Mam zamiar skomunikować STM32F4 z układem nrf2401. Chcę użyć do tego SPI1 na pinach PA RCC -> APB2ENR |= RCC_APB2ENR_SPI1EN; //zegar SPI1 RCC -> AHB1ENR |= RCC_AHB1ENR_GPIOAEN; //zegar GPIOA GPIOA -> MODER |= GPIO_MODER_MODER1_0|GPIO_MODER_MODER2_0|...
Witam wszystkich! :) Mam parę małych pytań początkującego odnośnie GPIO oraz JTAG w procesorze STM32L152RET6, na którym zaczynam właśnie naukę 32-bitowców. Próbując ustawić GPIO w stan wysoki zauważyłem kompletny brak reakcji na wartości wpisywane do rejestrów. Poprawcie mnie jeśli się mylę, ale po wielu godzinach z dokumentacjami wywnioskowałem, że...
Cały obecny kod: http://obrazki.elektroda.pl/5926424400_1...
Dzień dobry, Sprawa wygląda tak, że chciałem zrobić zadanie 8.4 z poradnika na temat stm32. Wymodziłem sobie takie coś: Open On-Chip Debugger 0.9.0-dev-00186-g30203b3 (2014-11-09-22:49) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxyg... Info : The selected transport took over low-level target control....
Staram się ustawić częstotliwość próbkowania ADC1 i ADC2 w trybie Regular simultaneous dual. ADC1 taktuję Timerem 2: [syntax=c]void timer2_init() // this timer is triger of ADC1 and ADC2 conversion { RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // APB2 clocked TIM1 by 45MHz TIM2->PSC = 0; // F TIM = 45MHz TIM2->ARR =45e6/Fp; // Fp= Ftim/val //TIM2->DIER...
Popatrz bardzo dobrze na te linijki: GPIOA->MODER = (0x01 < (2 * 0)); //Pin PA0 jako wyjście //GPIOA->OTYPER &= ~(1 < 0); //Pin PA0 jako Push-Pull GPIOA->OSPEEDR = (0x03 < (2 * 0)); //Pin PA0 jako High Speed Tablica wektorów ma marginalne znaczeni dopóki nie używasz przerwań - bez nich wykorzystywane...
Witam, Używam płytki stm32f4discovery. Od kilku dni próbuję nawiązać po SPI (w trybie 4-wire) połączenie z wbudowanym w nią akcelerometrem LIS302DL. Aktualnie skupiam się na podejrzeniu na oscyloskopie wartości rejestru WHO_I_AM. Więc wysyłam do akcelerometru instrukcję 0x8F00 (używam formatu 16 bitowego żeby, po wysłaniu 8 bitów zegar dalej pracował...
Nie trzeba, o ile będziesz pamiętał, żeby w programie nie wyłączyć funkcji SWD na nogach PA13 i PA14 - uważaj na rejestry GPIOA: MODER, OSPEEDR i PUPDR, a jeśli używasz CubeMX - zaznacz koniecznie SYS-SWD Debug w konfiguracji. Pamiętaj też, żeby linia BOOT0 była przy starcie ściągięta do masy - bezpośrednio lub przez rezystor, a jeśli jest to również...
Witam, Temat: Program ma zrobić przerwanie na przycisku PC2 i PA0 tak aby zaświecić LED-ami na płytce. Zacząłem przygodę z STM32. Przerabiam poradnik ściągnięty z tego forum "Poradnik STM32 v1.9" . Bardzo interesująca lektura i bardzo wciągająca. Niestety napotkałem problem. Nie znalazłem odpowiedzi na forum więc piszę zapytanie tutaj. Chodzi o przerwanie...
Witam. Mam taki problem z którym walczę od ponad tygodnia. Posiadam wyświetlacz 3.2cala LCD TFT ze sterownikiem SSD1289. Chcę go podłączyć pod płytkę DISCOVERY STM32F4 (uC F407). Myślę, że płytka dobrze znana. Wyświetlacz pochodzi z płytki Landtiger z LPC1768. Jednak odrzuciłem prace na lpc. STM jak dla mnie ma lepiej i bardziej zrozumiale napisane...
Witam, Bawię się STM32F0Discovey i chciałem sobie w ramach testu skonfigurować bez użucia bibliotek od ST Input capture na Timer1 Chanel1. Chciałbym,aby mierzyło mi na PA8, więc skonfigurowałęm tą nóżkę jako Alternate function mode. Jako sygnał podłączyłem PC8 (połączyłem kabelkiem PA8 z PC8). Gdy to zrobiłem, to dioda niebieska przestaje pulsować....
Dziękuję za rozwianie wątpliwości. Ostatnie pytanie. W następujących linijkach moim zdaniem rzutowanie jest niepotrzebne, skoro kompilator już wie na jaki tym będzie wskazywał. Czy może się mylę? [syntax=c] GPIOA_MODER = (uint32_t*)0x48000000; GPIOA_ODR = (uint32_t*)(0x48000000 + 0x14); [/syntax] [syntax=c] int main(void) { volatile uint32_t *GPIOA_MODER...
Do ustawienia typu pinu potrzebne są 2 bity, a więc jak ustawić wejście/wyjście jeśli bit MODERx Masło maślane. Sam napisałeś, że moder jest wartością 2-bitową a później temu zaprzeczasz. Moder jako wartość 2-bitowa przyjmuje wartość z zakresu 0-3: 0 - wejście 1 - wyjście 2 - funkcja alternatywna 3 - wejście analogowe i tak go programujesz. Przykładowo...
[syntax=c]void system_init(void) { RCC->APB1ENR |= RCC_APB1ENR_PWREN; PWR->CR = 0x800; FLASH->ACR |= FLASH_ACR_ACC64; FLASH->ACR |= FLASH_ACR_PRFTEN | FLASH_ACR_LATENCY; RCC->CR |= RCC_CR_HSION; while ((RCC->CR & RCC_CR_HSIRDY) == 0); RCC->CFGR |= RCC_CFGR_PLLDIV2 | RCC_CFGR_PLLMUL4; RCC->CR |= RCC_CR_PLLON; while ((RCC->CR...
Spróbowałem maski, ale też wspomniałem, że dokładnie takim samym błędem kończy się poszczególne ustawianie bitów jak robię to na całej reszcie rejestrów. Salmona widziałem, z tym, że on korzystał z STM32 C031, co prawda dokumentacja z której korzystał jak na razie pokrywa się, tak jemu sterowanie diodą zadziałało od razu, tak mi już nie działa. Inna...
He he racja nie zauważyłem tego :) Swoją drogą trochę szkoda że np strukturze nie da rady w jakiś sposób zdefiniować tablicy. [syntax=c] struct MODER_BITS { __IO uint32_t MODER[16]:?; }; [/syntax] w taki sposób aby móc korzystać z [syntax=c] GPIOA->MODER.bit.MODER[0]=2; [/syntax]
Poczytaj o operacjach bitowych w języku C, np. na mikrokontrolery.blogspot.com. W praktyce najwygodniej jest określić całą zawartość każdego rejestru sterującego, a następnie zapisać go jednym prostym podstawieniem. Technika taka jest jednak niemodna w pewnych kręgach, gdzie w dobrym stylu jest napisanie min. 120 linii kodu w celu zainicjowania pięciu...
void USART2_ConfBasic(void) // RealTerm { RCC->APB1ENR1 |= RCC_APB1ENR1_USART2EN; // wlaczenie taktowania dla USART2 RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN; // wlaczenie taktowania dla portu A GPIOA->MODER &= ~GPIO_MODER_MODE2 & ~GPIO_MODER_MODE3; // wyczyszczenie grupy bitów dla PA2 i PA3 GPIOA->MODER |= GPIO_MODER_MODE2_1 |...
Ustawienie MOE nic nie dało :( Problem mam również z uruchomieniem sprzętowego pwm. [syntax=c] #include "stm32f0xx.h" #include "stm32f072b_discovery.h" int main(void) { RCC->AHBENR |= RCC_AHBENR_GPIOCEN | RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOAEN ; //wlaczenie zegara portu C, B, A RCC -> APB2ENR |= RCC_APB2ENR_TIM1EN; //wlaczenie zegara dla TIM1 GPIOC->MODER...
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...
GPIOA->MODER ^=~(GPIO_MODER_MODE0_0 | GPIO_MODER_MODE1_0); A co to ma robić? Jezeli zerować bity to nie za bardzo GPIOA->MODER &=~(GPIO_MODER_MODE0_0 | GPIO_MODER_MODE1_0); Wracając do kasowania: rób to wciskając reset. O ile nie spaliłeś procka podłaczając coś do niego powinno działać
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...
The Problem with Reset switch to GPIO is a date-of-production problem? Yes, but only for TSSOP20 (OTS19501). Older SO8 (OTS23501) have switched pins 6 and 7. ======================= One more update. New chip revision (OTS37166) 2,75mA when set to 32MHz and do nothing: [syntax=c]FLASH->ACR = 1; // Flash wait state RCC->CFGR = 0; // SYSCLK/1 FLASH->INT_VEC_OFFSET...
Taki kod na szybko sprawdziłem na STM32F401RE, bo akurat ten mam pod ręką: [syntax=c]RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; GPIOA->MODER &= ~(0b00 << GPIO_MODER_MODE0_Pos); GPIOA->MODER |= (0b10 << GPIO_MODER_MODE0_Pos); GPIOA->AFR[0] &= ~(GPIO_AFRL_AFRL0); GPIOA->AFR[0] |= (0b0001...
... Zauważyłem że jeśli uruchomię OpenOCD i w kodzie zrobię np. GPIOA->MODER = 0; to debugger się rozłącza. Jakakolwiek zmiana w GPIOA->MODER przez przypisanie a nie np. |= lub &= kończy się tak samo. Jaką to ma zależność to już nie wiem... Bo wyłączasz piny SWD??
Mikrokontroler STM32 F030CC Konfigurując timer za pomocą HAL'a wszystko działa, kod poniżej w środowisku AC6 działa natomiast w TrueStudio wchodzi w pętlę nieskończoną mi w pliku startup_stm32f030xc.s Dodałem znaczniki syntax. Proszę ich używać, ponieważ kolorowanie składni ułatwia czytanie i analizę kodu.
(at)excray Widzę - tylko inaczej napisane. GPIOA->MODER |= (GPIO_MODER_MODER0_0); to będzie gpio.GPIO_Mode = GPIO_Mode_OUT; A gpio.GPIO_OType = GPIO_OType_PP; to założyłeś że jest po resecie. Ale czy tak być zawsze musi?
Załączam konfigurację SPI dla F3xx sprawdzoną z WS2812, dla HCLK 40 MHz. Bez aktywnego wyjścia SCLK oczywiście działa. To poniżej - to wektor struktur o budowie {adres, wartość}. [syntax=c]{&FLASH->ACR, FLASH_ACR_PRFTBE | 1},// enable prefetch, 1 wait state {&RCC->CFGR, RCC_CFGR_PLLMULV(PLLMUL) | RCC_CFGR_SW_PLL},// switch to PLL clock // enable peripherals...
Witam staram się skonfigurować spi tak aby wybierać slave za pomocą stanu na pinie PE3. Aktualnie komunikacja działa jednakże niezależnie od stanu na zadanym pinie. Podczas gdy chce wylaczyc mozliwosc komunikacji i ustalam stan na pinie PE3 na wysoki gdy na poczatku funkcji read_spi() zmieniam stan na wysoki to po wyjsciu z tejże funkcji stan ustalony...
Dzień dobry, zmagam się już z tym problemem od kilku dobrych popołudni, a zatem chcę napisać kod, który będzie uruchamiał tryb PWM korzystając z timera1 na dowolnym pinie w mikrokontrolerze STM32F303RE i nijak mi nie chce to zadziałać. Próbowałem już wielu rzeczy i nie wiem, co jest nie tak (zrobiłem to tak, jak jest w dokumentacji napisane, aby zrobić)....
W kodzie powyżej zamazujesz jedne wartości drugimi przed ich użyciem. Bez SPL to, co chcesz zrobić wygląda tak: RCC->AHBENR |= RCC_AHBENR_GPIOAEN; GPIOA->PUPDR |= BF2(15, GPIO_PUPDR_PU) | BF2(13 GPIO_PUPDR_PU); GPIOA->MODER |= BF2(14, GPIO_MODER_OUT);
Witam, W oparciu o kody znalezione w internecie chciałem wykonać PWM na porcie A. Udało mi się to z pinem 7, natomiast piny 8-10 pozostają niewzruszone. Wydaje mi się, że problem leży w ustawieniu Timera 1, jednak nie potrafię go znaleźć. Timer 3 dla pinu 7 działa. Oto kod funkcji inicjalizującej PWM: [syntax=c]void initPWM() { RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;...
fiata cinquecento przekierowanie numeru wewnętrznego przednia klapa
bateria milwaukee diagbox lexia
Sanxing S34U28 – lokalizacja modułu GSM w licznikach energii, komunikacja PLC-G3, brak GSM Grundig V303 - Dane techniczne wzmacniacza