Poza tym to, co chcesz definiować samemu, jest już od dawna zdefiniowane w plikach nagłówkowych mikrokontrolera. Z kolei programowanie SysTick znajdziesz w pliku nagłówkowym rdzenia - wystarczy przepisać treść nibyfunkcji SysTick_Config. Zmianę priorytetu przerwania, która w tej funkcji jest, możesz pominąć. No i zapis: (uint32_t) 0x00000007 to to samo,...
(at)grzegorzn Najlepiej by było jakbyś wkleił tutaj loga kompilacji. Odnośnie drugiego problemu to wygląda to na pierwszy rzut oka na niezadeklarowany Systick handler.
Ten kod który przedstawiłem, często pojawia się w internecie i przedstawiany jest jako "zawsze działający". Zamiast brać kody z netu to po prostu napisz swój. Jak sam widzisz zbyt długi to on nie jest, więc nie zajmie Ci zbyt dużo czasu. W reference manual jest opis krok po kroku jak powinna wyglądać procedura odbioru czy nadawania, więc po prostu...
Przetwornika nie ustawiasz, bo to nie jego rola. Możesz to zrobić na zylion sposobów. 1. Ustaw sobie alarm w zegarze RTC - i jak dostaniesz przerwanie to inicjuj konwersję. 2. Ustaw sobie wakeup timer w RTC i jak wyżej. 3. Sprawdzaj jakiś licznik zmieniany np. SysTick - jak jego wartość będzie większa niż poprzednia plus 600000 to inicjuj konwersję....
z tego co widzę to 19 przerwanie czyli moje prowadzi pod inny adres niż wszystkie No tak, tyle ze to przerwanie jest "19-te", tyle że przed nim jest kilka systemowych. Wg tabelki w manualu tych układów, adres wektora przerwań dla TIM14 to 0x8c, natomiast u Ciebie wektor jest pod 0x68... Błąd masz taki, że za bardzo w nią zaingerowałeś... Zwróć uwagę,...
Zapamiętaj jedna generalna zasadę: żadnych delay w przerwaniach. Do tego ten delay o ile się już uprzesz użyć go w handlerze wymaga aby systick miał wyższy priorytet, inaczej zdechnie w deadlocku
Niby można i tak, ale normalnie robi się to inaczej - programujesz SysTicka na jakąś ładną, okrągłą częstotliwość, np. 100 lub 1000 Hz, a w przerwaniu odliczasz programowo i co ileś przerwań coś robisz. Wrzucam Ci program na STM32F0, który miga dwiema diodami przy użyciu SysTick, co pół sekundy. [syntax=c] /* STM32F0DISCOVERY SysTick-based blinker gbm,...
Nie zerujesz rejestru SysTick->VAL. Opóźnienia w takim stylu są ciut bez sensu, a LCD lepiej obsługuje się w przerwaniu timera, co było pokazane parę miesięcy temu w EP (na STM32F0). W przypadku nibyopóźnienia mikrosekundowego - prawdopodobnie gubisz przepełnienia timera, bo okres SysTick jest zbyt krótki.
Witam, Pracuję nad projektem urządzenia, w którym po raz pierwszy zastosuję mikrkontroler STM32 zamiast dotychczasowych AVR. Zadecydowałem się użyć układ STM32F030K6T6 oraz środowisko programistyczne CooCox. Na poczatek napisałem prosty program w załaczniku. Mam takie pytanie, jak w programie zadeklarować, że uzywam zewnetrzny kwarc np: 12Mhz? [syntax=c]...
CO to za obsługo przycisku? Po co ten systick? Naprawdę nie da się opóźnień zrobić bardziej uniwersalnie?
Witajcie, siedzę i szukam błędu w bibliotekach do obsługi NRF24L01. Skopiowałem je z biblioteki, którą wykorzystuje w ATmega8. Działa nawet dobrze tam, niestety na STM32F0DISCOVERY już nie chce. Będę bardzo wdzięczny za pomoc. To najpierw kody, które wyrażają więcej niż tysiąc słów ;) : main.c http://obrazki.elektroda.pl/4732813300_1...
Dlatego są SysTick nazwali - globalny systemy "tick" -> prirytet na maks. Wiadomo że jak masz inne potrzeby to trzeba samemu napisać :)
Witam, Mam procesor STM32f030RCT6 (256kB flash, 32 kB ramu). Program napisany z wykorzystaniem wygenerowanego kodu w CUBE MX w środowisku AC6 . Zrobiłem już 5 płytek i co ciekawe na dwóch program działa bez problemu , a na trzech pozostałych już nie . Podglądając w trybie Debug widzę coś takiego jak zatrzymam wystartowany program: https://obrazki.elektroda.pl/5695132000_...
Ponieważ ja zawsze byłem zbyt leniwy, by pisać tak dużo instrukcji, ile potrzebują wywołania bibliotek, a jednocześnie lubię używać mikrokontrolerów z małą pamięcią, popełniłem na STM32F0 (płytka DISCOVERY) takie coś do włączania i wyłączania diod guzikiem. Program jest mało ambitny, bo ma ledwie ze 6 instrukcji w C, ale działa dobrze i może komuś się...
Jeden timer - SysTick, zliczanie czasu (np. w oddzielnej zmiennej dla każdego przekaźnika) w obsłudze przerwania i zmian stanu przekaźników przy osiągnięciu odpowiedniego czasu.
Systick i delay_ms sa w jednym module main.c Postaram sie go okroic do minimum, nie mam teraz kodu pod reka aby cos wkleic.
Przykładowy program przedstawiający opóźnienie przycisku. Jak przycisnę to program i tak musi dojść do miejsca sprawdzania warunku. Chodzi mi o takie samo tylko z użyciem przerwania (wyłączenie migania natychmiast) /** ****************************************... * (at)file main.c * (at)author Ac6 * (at)version V1.0...
Trzeba było dodać ';' przed wklejeniem. Otrzymany plik rozmiary.txt. 00000428 d impure_data 000000e0 t SetSysClock 000000d4 T __register_exitproc 0000008c T SystemInit 00000048 T __libc_init_array 00000034 W Reset_Handler 00000034 T __libc_fini_array 00000018 t register_fini 00000010 T atexit 00000006 T main 00000004 R _global_impure_ptr 00000002 W...
Program zawiesza się i już nie wiem, co z tym począć. Sprawdzić rozmiar stosu dla przerwań. NVIC_SetPriority(SysTick_IRQn,2); NVIC_EnableIRQ(SysTick_IRQn); Przerwania SysTick nie da się wyłączyć, więc "włączanie" go to nie jest dobry pomysł. Raczej podobnie jest z priorytetem. 4\/3!!
Np. zaprogramuj SysTick lub dowolny inny timer na zgłaszanie przerwań z częstotliwością 100 Hz. Co 25 przerwań zmieniaj stan jednej diody, a co 100 - drugiej. Wszystko razem zmieści się w max. 20 liniach. Jeśli chcesz "zobaczyć" działanie timera z rejestrami compare - użyj dwóch rejestrów CC. W przerwaniu końca okresu zaświeć dwie diody, w przerwaniu...
Ok, dodałem alternatywną funkcje dla portu: [syntax=c] BUTTON_PORT->AFR[1] |= 0x2;//Alternate function selection for port => TIM1_CH1 [/syntax] Teraz jest lepiej, gdy połączę PC8 z PA8 (dioda już nie gaśnie). Przypisuję capture/compare register 1 do globalnej zmiennej i następnie sprawdzam podczas debugowania wartość tej zmiennej w pętli for(;;)....
Doinstalowałem STM32F0 Support już wcześniej niż napisałem posta. Ale to nie to. Mógłbyś u siebie zobaczyć, co masz zainstalowane? U mnie jest teraz tak: http://obrazki.elektroda.pl/6353554100_1...
Witajcie ponownie :) Wybaczcie, że dopiero teraz odpisuję. Ogólnie "odpaliłem" wreszcie te emulację EEPROMa w FLASH. Działa, ale mam jedno pytanie, wirtualny adres zmiennych, czy muszę jakoś uważać na to co tam wpiszę? Chodzi mi o tę linijkę kodu: [syntax=c]uint16_t VirtAddVarTab[NB_OF_VAR] = {0x5555, 0x6666, 0x7777};[/syntax] To pytanie dedykuję głównie...
Mam taki prosty programik: [syntax=c]void TIM1_BRK_UP_TRG_COM_IRQHandler(void) { TIM1->SR &= ~TIM_SR_UIF; GPIOA->ODR ^= GPIO_ODR_2; //led PA2 if(TIM1->CR1 & TIM_CR1_DIR) TIM1->CNT = 0; //blokuję licznik przed przeładowaniem else TIM1->CNT = 20; } void TIM1_CC_IRQHandler(void) { TIM1->SR &= ~TIM_SR_CC1IF; GPIOA->ODR ^=...
Testuję pobór prądu w uśpieniu takim kodem: [syntax=c]void EXTI0_1_IRQHandler(void) { EXTI->PR |= EXTI_PR_PR0; GPIOA->ODR ^= 1<<3; } int main(void) { uint32_t a,b; _delay_ms(300); //RCC RCC->AHBENR |= RCC_AHBENR_GPIOAEN; RCC->APB1ENR |= RCC_APB1ENR_PWREN; //Typ - wyjcie GPIOA->PUPDR |= GPIO_PUPDR_PUPDR0_1;//pull down GPIOA->MODER...
Witam, wyświetlacz pokazuje mi nieodpowiednie znaki na ekranie. Ośmio bitowy tryb wyświetla nieprawidłowe znaki(po wpisaniu jednego polecenia wyświetlają się dwa znaki) a cztero bitowy nie wyświetla nic. Trzeba jakoś ustawić taktowanie zegara? Używam ekspandera I2C PCF8574 czyli D4-D7 dane, D0-D3 rs,rw,en,led tak ? Orientuje się ktoś co robię źle? Jestem...
Może za krótko czekasz po włączeniu zasilania i próbujesz komunikować się/inicjalizować zewnętrzne urządzenie zanim zdąży zakończyć sekwencję POR. Mogę tylko gdybać bo nie wiem co masz do tego uC podłączone, ale widać że jakieś magistrale szeregowe masz wyprowadzone. No ale koniec sekwencji POR oznacza wykonanie kodu z Reset Handler ? [syntax=c]int...
Ja mam zestaw z STM32F0 wygrany w konkursie organizowanym przez kamami. Wcześniej programowałem już ARM'y ATMELa. W przykładzie jak powyżej wykorzystywany jest System timer tick. U atmela normalnie ustawiałem zezwolenie na przerwania od SysTick, a tutaj tego nie widzę. W RM od tego procesora µC w tabeli wektorów przerwań nie widzę, żeby SysTick...
Witam od pewnego czasu probuje uruchomic żyroskop l3gd20 na płytce Discovery stm32f0072B-disco , niewiem gdzie robię błąd . [syntax=c] SPI_HandleTypeDef hspi2; void SystemClock_Config(void); void Error_Handler(void); static void MX_GPIO_Init(void); static void MX_SPI2_Init(void); uint8_t data; uint8_t setting; int main(void) { HAL_Init(); SystemClock_Config();...
Tabela wektorów jest niekompletna, brakuje kilku zarezerwowanych pozycji między wyjątkami HardFault a SVCall i SVCall a PendSV [syntax=c] ( void ( * )( void )) &__main_stack_end, // 0 Reset_Handler, // 4 NMI_Handler, // 8 HardFault_Handler, // C 0, // 10 0, // 14 0, // 18 0, // 1c 0, // 20 0, // 24 0, // 28 SVC_Handler, // 2C 0, // 30 0, // 34 PendSV_Handler,...
No to ja nie wiem jak Wy piszecie te programy, bo mój program dla STM32F0DISCOVERY mrugający LED'ami po kompilacji zajmuje 564 bajty. [syntax=c] int main(void) { GPIO_InitTypeDef GPIO_Init_t; SysTick_Reload(60000); // wartość dla czasu 10ms SysTick_CLKSource(SysTick_CLKSource_HCLK... // Fsystick = CCLK/8=6MHz SysTick_IRQEnable(ENABLE); // włączenie...
Witam, Przesiadam się z STM32F103 na F051, a raczej ćwiczę sobie na obu tych mikrokontrolerach. Napisałem program na F0, w celu poćwiczenia sobie z konfiguracją interfejsu SPI. Zadanie jest takie SPI1 posyła dane, a SPI2 odbiera je zgłaszając odbiór. Interfejsy podłączyłem ze sobą SPI1->MISO z SPI2->MISO SCLK - SCLK MOSI - MOSI Niestety komunikacja...
Witajcie, od dwóch dni próbuję ogarnąć przerwania EXTI. Już na to patrzeć nie umie... Gdy naciskam przycisk wszystko się zacina. Działanie programu (docelowe jakie ma być): dioda mruga co sekundę, po wciśnięciu przycisku gaśnie, po ponownym wciśnięciu zaczyna mrugać i tak w kółko. Działa: mruga, po wciśnięciu zostaje w stanie w jakim była podczas wciskania...
oto kod programu [syntax=c]/* Includes */ #include <stddef.h> #include "stm32f0xx_rcc.h" #include "stm32f0xx_gpio.h" #include "lcd_hd44780_lib.h" /* Private typedef */ /* Private define */ /* STM32F0_DISCOVERY board definitions */ #define LED_PORT GPIOC #define LED1 GPIO_Pin_9 #define LED2 GPIO_Pin_8 #define KEY_PORT GPIOA #define KEY GPIO_Pin_0...
Witam. Na początku muszę zaznaczyć, że jestem raczej początkującym w temacie mikrokontrolerów i ogólnie elektroniki. Kupiłem sobie stm32f0 discovery oraz termometr ds18b20, podłączyłem wszystko jak trzeba - pin 1-wire do pc7, oraz piny zasilania odpowiednio do 3v i GND na płytce. Korzystam z IAR Embedded Workbench EWARM. Termometr działa, bo procedura...
Dobry wieczór Mam podłączony do płytki wyświetlacz. Chcę wysłać przy użyciu SPI i DMA do niego dane początkowo ich liczba to 65535 i jakiś tam początkowy kolor pikseli następnie w przerwaniu od DMA końca transferu ustawiam nową wartość 11265 i inny kolor pikseli. Nie wiem z jakiego powodu poniższy kod działa w środowisku Keil, a w STM32CubeIDE już nie,...
Cześć. Tak jak napisałem w nazwie tematu posiadam ARM'a STM32F072RB. Podłączyłem kolejno kolumny, później wiersze klawiatury matrycowej 4x3 do portów GPIOC1-GPIOC7. Chcę odczytywać wciskane klawisze na klawiaturze i napisałem jak na razie taki kod: [syntax=c] #include "stm32f0xx.h" #include <stdio.h> volatile uint32_t timer_ms = 0x0; void delay(int...
O tym, że test z machaniem pinu jest bez sensu już Koledzy pisali. Nie zamierzam nawet z tym polemizować, za to zrobiłem mały eksperyment, nazwijmy go "optymalizacja machania" :) STM32F051 pędzony 48 MHz i oto wyniki dla optymalizacji 01 oraz 03: https://obrazki.elektroda.pl/1055823600_... https://obrazki.elektroda.pl/6644752300_...
Witam, w przerwaniu inkrementuję pewną zmienną i tu powstaje problem; warunek: if(write_bit_tim2==10) wykonuje się gdy write_bit_tim2==5, nie wiem czym jest to spowodowane ponieważ przerwanie wykonuje się co sekundę(dioda miga co sekundę). Miał ktoś coś podobnego i wie czym jest to spowodowane? Dziękuję. Kod: [syntax=c] #include "stm32f0xx.h" #include...
Rozwiązałem już swoje problemy następnego dnia po napisaniu posta, ale nie zdążyłem tu napisać, przepraszam. Dziękuję za porady, mimo że po czasie. Problem z delayem rzeczywiście leżał w priorytetach RTC_Handler i SysTick_Handler. Nie rozumiem tylko, dlaczego SysTick_Handler miał niższy priorytet od RTC, skoro w pliku z wektorem SysTick ma priorytet...
Ja mam taką funkcję od opóźnienia zrobionego na podstawie SysTick'a, nawet działa. Korzystam z niej podczas komunikacji 1wire i wszystko pięknie śmiga. W funkcji delay_init( 168 ); wpisujesz częstotliwość zegara w MHz np. dla STM32F4. [syntax=c_loadrunner]#include "../lib/stm32f0xx.h" #include "delay.h" static uint8_t fac_us = 0; void delay_init( uint8_t...
Tylko tyle zdążyłem napisać: [syntax=c]/** ****************************************... * (at)file main.c * (at)author Ac6 * (at)version V1.0 * (at)date 01-December-2013 * (at)brief Default main function. ****************************************... */ #include "stm32f0xx.h" #include...
Nie mam oscyloskopu pod ręką :( Gdy zrobiłem tak: [syntax=c]#include "stm32f0xx.h" #include "stm32f0_discovery.h" volatile uint8_t x=0; int main(void) { RCC -> AHBENR = RCC_AHBENR_GPIOCEN; // port C GPIOC -> MODER |= GPIO_MODER_MODER8_0; // wszystkie piny jako wyjścia GPIOC -> PUPDR |= GPIO_PUPDR_PUPDR8_0;//pull-up dla całego portu SysTick_Config(16000000);//SysTick...
Za dużo tego jest :^( Z tego merge wynika, że zostało dodane/zmienione 55 plików :^O No widzisz, tak to właśnie wygląda (; Niemniej jednak z tych 55 plików 17 związanych jest z paczką CMSIS dla serii STM32F1 (external/CMSIS-STM32F1), a 9 związanych jest z wsparciem dla płytki NUCLEO-F103RB. Zostaje więc 29 (; Z tych 29 można wyodrębnić absolutne minimum,...
Cały obecny kod: http://obrazki.elektroda.pl/5926424400_1...
Witam, za pomocą STM32 F072RB steruje silnikami krokowymi. Problem polega na tym iż nie mogę w tym samym czasie mieć włączonych dwóch silników. Włączanie kolejnego silnika następuje po wyłączeniu aktualnie działającego silnika. Tu nasuwa się pytanie, jak to zmienić? Tak, aby silniki mogły pracować równolegle niezależnie od siebie tzn. jeden silnik obraca...
A pisałem, żeby nie ruszać _NIC_ poniżej SysTick włącznie... Jeśli weźmiesz tablicę dla STM32F4 bez ŻADNYCH zmian, to Twoje przerwanie zadziała, bo ten obszar tablicy jest identyczny dla tych dwóch rodzin. 4\/3!!
Jeszcze raz dziękuję za cenne rady i wskazówki:) szczególnie dla: m.ki BlueDraco nie omieszkam sprawdzić przykładów z EP jak mi wpadną w ręce. Żeby zostawić ślad i pokazać że nauka nie poszła w las wklejam kod z uruchomienia Timerów na porcie A plus diody znajdujące się na płytce(PC8, PC9). Sam szukałem kodu do sterowania tymi diodami z PWM, więc może...
extern "C"... C++ name mangling
Są makra tylko struktura nazywa się SysTick a nie STK
Wydaje mi się że mnie plik wygląda okay [syntax=c] /** ****************************************... * (at)file startup_stm32f030xc.s * (at)author MCD Application Team * (at)version V2.3.0 * (at)date 27-May-2016 * (at)brief STM32F030xc/STM32F030xb devices vector table for Atollic TrueSTUDIO toolchain. * This module performs:...
Mnie właśnie przydałby się sam scheduler, bo koncepcja działania peryferiów często bardzo zależy od użytego układu i samego projektu. Może powinieneś rozdzielić ten projekt na dwa, jeden to czysty scheduler i drugi projekt to cały system który z kolei jest oparty o ten pierwszy projekt. Zauważ, że im bardziej rozbudowany będzie ten projekt, tym trudniej...
Jak się bawisz Keilem, to prześledź sobie działanie programu w symulatorze jak nie masz debuggera. Zobacz też czy masz zdefiniowane przerwanie od systick i co ono robi, jak nie grzebałeś nic w pliku konfiguracyjnym, to z automatu on jest włączany na wartości domyślne.
Dla enkoderów ze stykami mechanicznymi, jeśli nie podłączasz go do uC za pomocą prostego filtru RC, wykorzystywanie timera czy przerwań to ślepa uliczka. Z racji, że takie enkodery nie generują impulsów o dużej częstotliwości, to najlepiej zrealizować odczyt programowo, np. cyklicznie w systicku sprawdzać czy mamy stan wysoki przez minimalny czas i...
/* Setup SysTick Timer for 1 µsec interrupts */ Następny... Czy naprawdę uważasz, że przerwanie co jedną MIKROsekundę to jest dobry pomysł? Twój program się "zatrzymuje", bo po prostu w kółko wchodzi i wychodzi do przerwania (które zresztą nie jest nikomu do niczego potrzebne, ale...). Jeśli do tego próbujesz pracy krokowej, to już w ogóle Twój...
1. Deinicjalizujesz RCC, PLL i pozostałe zegary 2. Resetujesz i wyłączasz Systick 3. Wyłączasz przerwania wcześniej zerując flagi 4. Ustawiasz wskaźnik stosu na początek pamięci bootloadera 4. Skaczesz do adresu pamięci bootloadera +4 Wszystko jest analogiczne do poniższego przykładu dla F4: https://stm32f4-discovery.net/2017/04/tu...
składanie zmiennej przez |= miało pokazać co musiałbym zrobić aby uzyskać podobny kod wynikowy do tego co wygenerował kompilator. I ja tak nie piszę lecz takie coś na podstawie prostej operacji wygenerował kompilator. Tak wygląda mój kod bo widzę, iż ktoś sięciągle czepia przykładu jak mniej więcej wyglądać musiałby kod źródłowy aby uzyskać taki dziwny...
A jak ten kod działa, kiedy przycisk pozostaje wciśnięty? Faktycznie, po upływie zadanego czasu program odczytuje długie wciśnięcie jako kolejne. , i w czym jest on lepszy od moich dwóch linii kodu, które dają poprawną reakcję na naciśnięcie przycisku? O których liniach kodu mowa? Jeśli chodzi o SysTick (przykład 2), to niestety, ale jeszcze tego nie...
Tu jest fragment całego programu : [syntax=c]#include "stm32f0xx.h" #include "KS0108.h" #include "eeprom.h" #define PRZYCISK1_PORT GPIOF #define PRZYCISK1_PIN GPIO_Pin_4 #define PRZYCISK2_PORT GPIOF #define PRZYCISK2_PIN GPIO_Pin_5 #define STACYJKA_PORT GPIOA #define STACYJKA_PIN GPIO_Pin_2 #define LPG_PORT GPIOA #define LPG_PIN GPIO_Pin_3 #define PB_PORT...
Dobra, nie ma się co pastwić. Znajdź jedną i tylko jedną różnice, więcej nie szukaj: [syntax=c]SysTick -> LOAD |= SYSTICK_F/1000000 - 1; [/syntax] [syntax=c]SysTick -> LOAD = SYSTICK_F/1000000 - 1; [/syntax]
Ale kod czego... funkcji sin i arm_sin_f32 ? Przecież ja tych funkcji nie pisałem ;) A funkcja obliczająca czas wykonywania oparta jest o timera systicka takowany zegarem z SYSCLK (168Mhz): [syntax=c] A = 1241.332423; B = 0.3225; time = SysTick->VAL; C = A / B; div_time = time - (SysTick->VAL - 2); time = SysTick->VAL; C = sqrtf(B); sqrtf_time = time...
Do wstępnej konfiguracji korzystam puki co z SystemInit() dostarczonego przez ST z uwzględnieniem przeze mnie rzeczywistej prędkości zegara (8mhz). Funkcja opóźniająca oparta na SysTick wydaje się że działa dobrze (stan diody zmienia się co 1s): [syntax=c]void Czekaj_ms(int ms) { int i; for( i=ms; i; i--) { SysTick->LOAD = (21000)-1; SysTick->VAL =...
Po czym poznajesz że przerwania od Systicka nie działają? Próbowałeś bez FreeRTOSa migać diodkami?
200 tysięcy przerwań na sekundę to nie jest żaden problem dla STM32F4. Rozwiązaie z timerem programowym przy już działającym SysTick to 3 linijki kodu; ze sprzętowym bez przerwań timera - jakieś 7..8 linii. Więcej czasu zajmuje pisanie tych postów, niż implementacja tego w taki sposób, jaki podałem. Rozwiązujesz dziwne i nieistniejące problemy.
Dzień dobry, Dopiero zaczynam swoją przygodę z uC, mniej więcej ogarniam język C i stanęło przede mną zadanie napisania kodu sterownika do diod WS2812B. Wiem, że na temat tych diod było już sporo wątków na forum, więc będę się streszczał. Sercem sterownika ma być docelowo mikrokontroler z serii STM32F0 lub STM32F4, w zależności od tego jak dużo będę...
Cześć, Ponieważ pojawiła się prośba o możliwość udostępnienia uproszczonej wersji na inny uC to przedstawię krótką instrukcję jak dostosować projekt do potrzeb. Generalnie w obecnej wersji obsługiwane są dwie rodziny procesorów czyli STM32F4xx i STM32H7xx - prawdopodobnie nie powinno być większych problemów z innymi podobnymi układami STM natomiast...
Peryferia na pewno wszystkie się mieszczą (prócz takich cudów jak systick etc), a nagłówek ssie :) ale to w końcu wielkie i szanowane ST , wszyscy korzystaja z StdLib i tego nagłówka a my się tylko czepiamy.
Wiesz chodzi o to, że wydaje mi się że źródło sygnału taktującego rdzeń i timer systick jest takie samo, więc przeważnie wiąże się to z przemnożeniem częstotliwości zegara tak aby uzyskać 168MHz (Stm32F4). Więc nie bardzo kumam twoje usiłowanie wbicia tam 12MHz (No chyba, że zwalniasz na siłę cały rdzeń albo ja po prostu jeszcze tematu do końca nie...
Bazując na https://obrazki.elektroda.pl/4178510200_... https://obrazki.elektroda.pl/8769073400_... main.c [syntax=c] /* Virtual address defined by the user: 0xFFFF value is prohibited */ uint16_t VirtAddVarTab[NB_OF_VAR]={0}; uint16_t Virtval[NB_OF_VAR]={0}; uint16_t VarValue= 0; int main(void) { HSE_init(); //systick_init();...
Ja nie lubię STM32, a STM32 mnie! Muszę coś zrobić na STM32 i robię to w Truestudio. Na razie proste testy na przypomnienie sobie STMów i wejście w C++ i na dzień dobry ściana! Po kompilacji w tablicy wektorów przerwań jest tylko adres na DefaultHandler. Mimo tego, że nazwa funkcji obsługi przerwania jest taka sama jak w pliku ze startupem i funkcja...
Rozwiązania bywają różne ale dla tamtego konkretnego przypadku ja np zastosowałem cos takiego [syntax=c] timeout = SysTick->VAL; while( !( I2C2->SR1 & I2C_SR1_ADDR ) ) { if (STCLK_MS*10 < (timeout - SysTick->VAL)) return 2;} dummy = I2C2->SR2;flag[/syntax] zaobserwowałem że program zatrzymuje sie zawsze w jednej i tej samej pętli,...
[url=http://stm32f4-discovery.com/2014/0... masz pokazaną zasadę działania 1wire z N DS18B20. Co prawda kod jest oparty na F4, jednak dużo różnic nie będzie w porównaniu z F1. Zawsze zamiast tworzenia swojego timera do delaya możesz skorzystać z SysTicka.
Korzystam z przykładów pokazanych tutaj: http://www.st.com/internet/evalboard/pro... Dokładnie z projektu Demo jako baza do rozwoju jako takiego. Podłączyłem LCD pod odpowiednie piny, wykomentowałem jedynie z main() kod, który wywołuje domyślne zachowanie układu (miganie ledami). Wstawiłem natomiast swój własny kod, funkcja main wygląda...
Piszę pewną funkcje która ma za zadanie przemielić trochę danych, operacje na macierzach. Mam kilka wersji tej funkcji, każda działa dobrze, ale chciałbym wybrać tą która liczy najszybciej. Jak zmierzyć ile mniej więcej czasu, bądź rozkazów procesora ona zajmuje? Na razie zrobiłem tak, że przerwania od systicka są wywoływane co 1 us a w nim inkrementowana...
Witam serdecznie. Niżej kawałek kodu z pliku main.c W tym kodzie odczytuje sekundy z zewnętrznego układu RTC po I2C. Jak widać stworzyłem sobie funkcję "odczytaj_sekunde" w pliku "main.c" przed funkcją główną: unknown type name I2C_HandleTypeDef Co oznacza, że funkcja nie wie czym jest "I2C_HandleTypeDef" i to jest dla mnie jasne. Próbowałem zainkludować...
Tylko pytanko - czy wystarczy opcja : ./configure --enable-stlink przy konfiguracji? Raczej niezbyt. Konieczne jest jeszcze włączenie trybu "maintainer-mode" przy kompilacji źródeł z repozytorium. Jak z obslugą USB? ? EDIT: Rozwiązanie zostało znalezione, oczywiście błąd u mnie - nie czytać tego co pisze niżej! (; Ja natomiast mam pytanie do was, dotyczące...
Nie znalazłem tego problemu ani na elektrodzie ani na googlu, nawet po angielsku Jakiś czas temu zacząłem bawić się płytką stm32f4 discovery, mam wszystko skonfigurowane pod mini USB, pierwsze proste programy napisane, działające, itp. Dzisiaj pojawił się problem, jako, że bawiłem się pare dni temu lcd, pozostawiłem go podpiętego pod piny PE7-14 i 2x5V...
Ile taktów zegara trwa 'while(nCount--)' ? chyba nie jeden? Dodano po 6 Jak na razie wydaje mi się że nie masz dobrego sposobu określenia rzeczywistej prędkości taktowania. Zapuść jakiś timer albo SysTick i na tym zrób delay, bo to łatwo policzyć. Dodano po 1 A czemu SystemInit(); masz przed main()? Dodano po 2 Wyłącz wszystkie PLL itp. i włącz tylko...
Ok, dzięki w takim razie zacznę pisać programy nie korzystając z gotowych funkcji, ale mam jeszcze jedno pytanie o role plików _write.c i _inictialize_hardware.c które dodawane są do moich projektów nie zależnie czy wybrałem projekt z dodanym przykładowym programem na świecenie diodami czy nie, o ile widzę w drugim pliku inicjalizacje PLL to pierwszy...
Witam wszystkich serdecznie! Potrzebuję pomocy z pewnym zadaniem z systemów wbudowanych, 4 rok studiów. Programuję w języku C środowisku CooCox CoIDE procesor STM32F103ZET6 użyty w module HY-RedBull_V3 posiadający 3,5-calowy ekran dotykowy TFT LCD HY35A (kontroler LCD SSD1963, kontroler ekranu dotykowego ADS7843 lub XPT2046), który ma wykonać poniższe...
Dodałem: [syntax=c]__enable_irq();[/syntax] Nic nie pomogło. Dodałem sekwencję: [syntax=c]__disable_irq(); __enable_irq()[/syntax] Również bez zmian. Pobrałem i zainstalowałem Atollic TrueStudio for ARM. Wygenerowałem czysty projekt, sprawdziłem wektory, startup, plik linkera - nie różnią się w istotny sposób od moich (są niemal identyczne). Debugowałem...
Mam takie pytania związane z opóźnieniami reakcji RTOS'a na zdarzenia. Tak czytając ten fragment odniosłem wrażenie że omawiasz opóźnienie związane z reakcją na przerwanie, a nie na reakcje samego wątku. W końcu są elementy, tak wolne że można zrealizować dla nich osobny wątek (np sprawdzanie stanu przycisku), czy wtedy jednak opóźnienie będzie wynosiło...
Witam serdecznie. Zacząłem się bawić PWM w smt32f4 w trybie DMA. Korzystałem z tego kursu tutaj: https://forbot.pl/blog/kurs-stm32-f4-8-z... Generalnie wszyto działa, ale jak chciałem sobie zmienić kierunek DMA (czyli nie zpamieci do peryferiów), ale na odwrót - z peryferiów do pamieci to w zmiennej duty mam cały czas...
Pisze program na STM32F429i DISC1 Wygenerowałem kod w CubeMX na ADC i LCD ale nie chce działać razem. Działa ADC albo LCD i zależy to od kodu w sekcji "USER CODE BEGIN 2" Jeśli pierwsze są linijki ADC_START to działa ADC, jeśli BSP_LCD to działa LCD. Ktoś wie jak odpalić oba naraz? [syntax=c]int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END...
witam ponownie, po dłuższym czasie walczenia z uruchomieniem mikrofonu i odtworzeniem nagranego dźwięku niestety nie udało mi się osiągnąć zamierzonego celu. Po poszukiwaniach w internecie znalazłem pomoc na forum ST pewnego użytkownika jednak również po jego instrukcjach występuje kilka błędów. Instrukacja zgodnie z którą próbowałem uruchomić mikrofon...
Udało mi się odpalić UARTA, ale sypie krzakami zamiast konkretnych znaków. [syntax=c]void USART_Conf(void) { RCC->APB1ENR |= RCC_APB1ENR_USART2EN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; //TX - PA2/AF7//RX - PA3/AF7 GPIOA->AFR[0] = (7<<8); //str 60 DS<<4*pin GPIOA->MODER |= (2<<4); GPIOA->MODER &= ~(2<<6); //APB1/4...
Faktycznie coś za optymistycznie chciałem :) Mam inny pomysł, który jednak osobiście niezbyt mi się podoba... ale działa. W przykładzie są tylko dwa kanały, ale dołożenie dwóch kolejnych jest bezproblemowe. Uruchomienie licznika jest w przerwaniu SysTicka tylko po to, aby odbywało się cyklicznie. Machanie pinem PA5 w celach "synchronizacji". http://obrazki.elektroda.pl/5897283800_1...
Witam, Próbuje skomunikować ze sobą STM32F4 z Arduino UNO po UARTcie. Skonfigurowałem UART1 i płytka komunikowała się bez problemu z Arduino. Lecz do mojego projektu potrzebna jest komunikacja przez UART2 (piny PA2-TX i PA3-RX), po skonfigurowaniu UART2 i podłączeniu do do Arduino nie mogę odczytać żadnych danych. Jeżeli podłącze UART1 z UART2 na płytce...
Witam wszystkich, mam stm32f7 disco. Chciałbym ogarnąć temat Karty uSD. I męczę się z tym któryś już dzień i mi nie wychodzi... Używam cuba doi generowania kodu. Karta jest po SDMMC. Używam FATFs. I ciągle nie mogę nic na kartę zapisać.. W plikach wygenerowanych z Cuba nic nie zmieniam, dopisuje tylko w main.c wydaje mi się poprawną obsługe. Jakieś...
Dzięki za odpowiedź:) Negacja składowych GX, GY jak najbardziej wynika z orientacji sensorów. Na płytce ewaluacyjnej (Rysunek 3) Widać, iż osie X,Y żyroskopu L3GD20 mają są przeciwnie zorientowane względem założonego układu współrzędnych i co do tego nie mam wątpliwości. Zastanawia mnie natomiast oś Z, a właściwie potrzeba zanegowania GZ. Dziwi mnie...
Cześć, Miałem już problem z konfiguracją FreeRTOSa. Szczegóły: [url=]https://www.elektroda.pl/rtvforum/... Myślałem, że po dorzuceniu tych 3 linijek do FreeRTOSConfig.h i zakomentowaniu jednej z implementacji SysTicka wszystko już będzie działać jak należy... A jednak nie :P Pojawił się kolejny problem. Chcę skorzystać z funkcji...
1. Rozumiem że celowo startujesz transmisję 1000 razy na sekundę - o ile nie zminiłeś ustawień systicka? 2. Dlaczego nie właczysz przerwania funkcjami CMSISowym NVIC_EnableIRQ(I2C1_EV_IRQn); Te funkcje w HALu są mi nieznane (nigdy nie korzstałem) 3. Czy masz zdefiniowany wektor w tablicy? Zależy jaki masz startup w toolchainie (może to oczywiście być...
Witam Mam zdaje się banalny problem - mianowicie chcę zamigać diodą - procesor STM32F103RBT6 :P O ile na STM32F4 nie miałem z tym problemów to tutaj nie mogę sobie z tym poradzić od kilku godzin. [syntax=c]void RCC_Config(void) { RCC->CR |= RCC_CR_HSEON; FLASH->ACR |= FLASH_ACR_PRFTBE | (1<<2); //konfiguracja flasha (latency = 2 takty) RCC->CFGR...
Witam Was, Próbuję od wczoraj uruchomić SPI1 dla tego układu jednak nie chce mi ruszyć nie wiem czemu. Zacznę od kodu dla SP1 http://obrazki.elektroda.pl/3120399500_1... Ma ktoś pomysł czemu SPE nie chce się ustawić i czy wysyłanie jest poprawne, ma działać tylko MOSI bo inne piny nie są mi potrzebne. Będę wdzięczny za pomoc.
Cześć, Próbuję się skomunikować pomiędzy RPi i stm32f4. Na RPi korzystam z biblioteki bcm2835 a na stm32f4 z HAL. Być może nie do końca rozumiem zasadę działania SPI i sta te problemy. RPi jest masterem i co 1000ms wysyła dane w postaci tablicy o rozmiarze równym 4 elementy. Te dane są w poprawny sposób odbierane na stm32f4. Na stm32f4 korzystam z DMA,...
Witam Pracuje aktualnie nad obsługą diod WS2812 za pomocą mikrokontrolera stm32 (nucleo-f401re i stm32f0discovery). Komunikacja odbywa się za pomocą SPI z DMA. Problem w tym, że diody zachowują się praktycznie losowo. Zazwyczaj świecą się na biało. Nie jestem także w stanie kontrolować ich ilości. Poniżej udostępniam kod. https://obrazki.elektroda.pl/6687811200_...
Ok, poszedłem o krok dalej. Zmieniłem całą funkcję inicjalizacji SPI, na taką którą ja rozumiem. [syntax=c] RCC_APB1PeriphClockCmd(RCC_APB1Periph_SP... ENABLE); //taktowanie dla SPI2 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GP... //taktowanie dla B // GPIOB - PB11( CS ) to na pewno dziala GPIOB->MODER |= GPIO_MODER_MODER11_0; GPIOB->OSPEEDR |=...
Witam, otóż mam problem, a mianowicie chciałbym obsłużyć przerwanie z pinu ALRT z przetwornika ADS1115 w celu wyeliminowania opóźnienia które teraz stosuje przy odczycie każdego z kanału (delay(20)) dokumentacja: https://cdn-shop.adafruit.com/datasheets... z góry dziękuję za pomoc mój dotychczasowy kod: [syntax=c] /* Includes ----------------------------------------...
samych errat jest 41 No ale dla jednego modelu mikrokontrolera (tak naprawdę dla kilku <; ) jest tylko jedna errata. Zresztą dla praktycznie każdego mikrokontrolera errata jest osobnym dokumentem. Teza obalona (; Ale pomijajac to ze dokumentacja jest rozbita, czasami jej jakosc jest po prostu do d... Generalnie da sie zyc z tym ze czasem niepotrzebnie...
Witam! Mam problem przy generowaniu sygnału komplementarnego na timerze 1 w mikrokontrolerze STM32F427ZIT6 (płytka STM32F429I-DISCO) przy pomocy bibliotek HAL. Udało mi się wygenerować sygnał komplementarny ale nie udaje mi się skonfigurować deadtime-ów. [syntax=c] /** ****************************************... *...
systick handler stm32 systick systick interrupts
katalog kodów volvo silnika konwertowanie plików video
claas dominator mikrokomputer cobra1
Schemat klimatyzacji Renault Scenic II - szczegóły MID 128 PSID 98 - Błąd czujnika ciśnienia DPF