extern "C"... C++ name mangling
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!!
http://www.elektroda.pl/rtvforum/topic22... PM0214 SysTick jest jeszcze prostszy w obsłudze niż GPIO :D
Jesteś pewny, że procedura obsługi przerwania nie jest uruchamiana? Volatile obecny? Swoją drogą - czemu nie skorzystasz z funkcji "SysTick_Config" z CMSIS?
Jednym z układów jest mikrokontroler STM32F407VGT6, który pełni rolę centralnego kontrolera lotu (Flight Control Unit – FCU). Podstawowe dane techniczne Rdzeń i wydajność CPU: ARM Cortex-M4F (z FPU – jednostką zmiennoprzecinkową) Częstotliwość: do 168 MHz DMIPS: ok. 210 DMIPS DSP: tak, rozbudowane instrukcje DSP Pamięć Flash: 1 MB SRAM: 192 KB (112...
można jeszcze jedno z definicji ustawić z atrybutem "weak" Po co? ale pewnie wymagałoby to dodatkowego uzasadnienia oraz dodatkowej opcji kompilacji, a właściwie chyba linkera... nie wymagałoby
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...
Wiesz co ja dopiero zaczynam z programowaniem stm ale jedna sprawa rzuciła mnie się w oczy. twoja funkcja jest prawie funkcją z biblioteki której definicja i rozwinięcie znajduje się w pliku core_cm4.h [syntax=c] __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) { if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible...
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 |=...
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.
To prawda, coś się dzieje, tylko że poza miganiem diody TX niewiele się zmienia jeśli chodzi o działanie programu... coś jeszcze musi być nie tak EDIT: Błąd znaleziony! Okazało się że nie wystarczy domyślny opis pinu LED_BUILTIN, a PC13 to oznaczenie dla płytki STM32F4. Prawidłowe oznaczenie to PB12, płytka wstała.
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 ----------------------------------------...
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,...
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.
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...
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. Też mi się tak wydaje, że to nagłówek, ale wolę sprawdzić i być pewny, niż wysuwać osąd na podstawie złych doświadczeń z innymi produktami ST...
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...
Tych kroków jest trochę więcej, na przykład włączenia zegara dla domeny RTC. Poniżej daję kod do analizy (STM32G0xx) i czekam na krytykę. [syntax=c]/** * Brief This function configures RTC. * Param WakeUp period * Retval error code (0 = no errors) * PrereqSysTick serves as timebase for timeouts */ __INLINE uint8_t rtcInit(uint16_t timeToWake) {// set...
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...
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...
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...
Przesadzacie trochę z tym SPLem. To że ktoś nie potrafi skonfigurować SysTick to nie wina biblioteki. Jak masz ustawione zegary? w SPLu plik system_stm32f4xx.c (jest makro w excelu do generowania tego pliku dostępne na stronach ST) Jaki masz kwarc i jaką wartość ma stała preprocesora HSE_VALUE ?Obsługę przerwań masz w pliku stm32f4xx_it.c Te trzy linijki...
[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 /*...
http://obrazki.elektroda.pl/5221349300_1... Witam wszystkich Tym razem chciałbym zaprezentować kolejny programowy projekt czytnika kart SD uruchomiony na płytce STM32F4Discovery. Programowy, gdyż również wejdzie on w skład większego projektu sprzętowo-programowego. Poprawność funkcjonowania tego czytnika sprawdziłem na dwóch kartach...
No wiem, że to jest jakaś funkcja "standardowa" (za często używasz tego słowa), ale wklej może jej wnętrze jeśli możesz. Ty podajesz jej adres struktury ale nie widzę nigdzie , żebyś jakieś jej pola konfigurował wcześniej, a co za tym idzie to może i ta funkcja operuje na tej strukturze ale w jej środku będą same śmieci. Na przykład tu: [syntax=c] SysTick_Config(RCC_Clocks.HCLK_Frequency...
Delay wykonany na pętli for nie jest mojego autorstwa. Już od kilku dni głowię się, czemu te wyświetlanie tak wolno chodzi. Próbowałem wszystkiego, wstawiłem tego delay'a na pętli for i zadziałało. Ewidentnie jest coś nie tak z tym delay'em na Systicku. Poprawiłem kod: [syntax=c]void delay_ms(int ms) { int c = 0; SysTick -> LOAD |= SYSTICK_F/1000...
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...
Wydaje mi się że świecenie diody trwa dłużej niż 1s... raczej jestem przekonany. 1) Masz błędy w konfiguracji zegarów 2) Nie masz żadnej pewności że rdzeń chodzi na 168MHz... 3) Nie wiesz co jest wpisywane do systick'a 4) Wiesz, że takt RTOSa nie wynosi 1ms Na podstawie powyższych punktów ogarnij sprawę zegarów
Witam, od dłuższego czasu walczę z tym problemem i nie potrafię znaleźć rozwiązania. Mam projekt, który pochodzi z anglojęzycznego tutoriala: [url=http://www.mind-dump.net/configurin... Wrzucony do Keila i skompilowany działa jak powinien. Problem w tym, że próbuję przenieść go na wykorzystanie bibliotek HAL, z których...
Skąd wziąłeś pomysł na wstawki z FLASH->ACR? Czytam RM0401 Jest dedykowany do tego rozdział: 3.4.1 Relation between CPU clock frequency and Flash memory read time Latency zależy od częstotliwości taktowania oraz napięcia zasilania, tak w skrócie. Co do ustawień zegara dla STM32 to warto zapamiętać sobie schemat działania, który wynika bezpośrednio...
Bardzo fajnie, że wreszcie coś na STM32 się pojawiło Na tych prockach sporo się dziej tylko zwykle jest mało czasu na sam projekt co dopiero na jego ew upublicznienie ;) W zeszłym tygodniu bawiłem się połączeniem STM32F103(HY-mini)+SSD1963 sterujący panelem TFT AT070TN92. Niby procek szybki bo 72MHz a samo czyszczenie ekranu jednym kolorem również...
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 =...
[syntax=C]void SysTick_Handler(){ SysTick_Config(prescaler_systic);[/synta... W jakim celu w obsłudze przerwania od SysTick, ponownie konfigurujesz licznik? Logika podpowiada, że raz uruchomiony działa i nie trzeba nic więcej robić. Jeżeli po odliczeniu czasu, przyjmujesz przerwanie, przechodzisz do ustawiania i na nowo startujesz licznik, to częstotliwość...
Hmm, a może Ty byś pokazał kawałek kodu, który napisałeś? Nie wiem czy korzystasz z rejestrów czy SPL'a, ale wrzucam kawałek kodu dla SPL - sprawdzony w realu. [syntax=c] /** ****************************************... * (at)file Project/STM32F4xx_StdPeriph_Templates/ma... * (at)author MCD Application Team * (at)version...
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...
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...
No to otwórz ten plik i zobacz czy masz tam zdefiniowane w tablicy wektorów adresy funkcji obsługi. Dodano po 6 SysTick_Config(SystemCoreClock / 800); 800 razy na sekundę - ten układ peryferyjny wyrobi tyle odczytów?
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...
Witam, Napisałem prosty kod w Keilu: http://obrazki.elektroda.pl/2538882800_1... http://obrazki.elektroda.pl/8553934200_1... Oscyloskop: 2 V /DIV 0.05 us /DIV
Naskrobałem taki oto "program" [syntax=c]RCC->CFGR = RCC_CFGR_SW_HSI | RCC_CFGR_PPRE1_DIV2; //Przełaczamy sys clock na 16MHz z HSI i ustaiamy peskaler APB1/2 (reszta bitów i tak była 0 więc dałem =) RCC->CR |= RCC_CR_HSEON; //Właczamy 16MHz External //RCC->CFGR = RCC_CFGR_SW_HSE; //Przełaczamy sys clock na 16MHz z HSE (przy okazji kasujemy resztę bitów)...
Załączam pliki startowe. Może coś w nich jest źle? entry.s .syntax unified .thumb .global vectors .global defaultHandler .section .isr_vector, "a" // Lista wektorow przerywan vectors: .word _end_stack .word resetHandler .word NMI_Handler .word HardFault_Handler .word MemManage_Handler .word BusFault_Handler .word UsageFault_Handler .word...
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...
Teraz nie wiem czy mam błąd w RCC, czy w konfiguracji Systick'a ? To pierwsze. Przyjrzyj się w manualu jakie są dopuszczalne wartości PLLP, zwracając uwagę na fakt, że to pole ma tylko 2 bity.
Jak stworzyć zwykły stoper który zaczyna liczyć przy wciśnięciu przycisku i kończy przy jego zwolnieniu? Użyć do tego tych najprostrzych timerów czyli tim6 lub tim7? Rdzeń ARM posiada swój własny timer SystemCoreClock to częstotliwość zegara systemowego. Zliczanie: [syntax=c]void SysTick_Handler(void) { if(przycisk_naciśnięty)licznik_milisekun...
Tutaj jest kod przykładu, który przerabiam dla swojego uC: [syntax=c] int main(void) { RCC->APB2ENR = RCC_APB2ENR_IOPBEN | RCC_APB2ENR_IOPAEN | RCC_APB2ENR_TIM1EN; gpio_pin_cfg(GPIOB, PB0, gpio_mode_output_PP_2MHz); gpio_pin_cfg(GPIOA, PA8, gpio_mode_input_pull); BB(GPIOA->ODR, PA8) = 1; TIM1->CCER = TIM_CCER_CC1P; TIM1->SMCR = TIM_SMCR_SMS | TIM_SMCR_TS_0...
Przepraszam, że się nie odzywałem, ale coś mi wypadło i nie mogłem zajmować się tym układem. Niebawem podam więcej informacji. Dodano: Sprawa się wyjaśniła, gdy zamiast S wpisałem najpierw 19,a potem (uin32_t)19UL i program ruszył i wygląda na to,że działa normalnie. Po zajrzeniu do pliku, gdzie to nieszczęsne S było zdefiniowane, okazało się, że wpisałem...
Witam, Mam problem z uzyskaniem dokładnego czasu z timera. To mój kod: [syntax=c] #include "stm32f407xx.h" int main(void){ // flash //FLASH -> ACR |= FLASH_ACR_DCRST | FLASH_ACR_ICRST; FLASH -> ACR = FLASH_ACR_DCEN | FLASH_ACR_ICEN | FLASH_ACR_PRFTEN | FLASH_ACR_LATENCY_5WS; //while((FLASH -> ACR & FLASH_ACR_LATENCY) != FLASH_ACR_LATENCY_5WS);...
Witam Staram się podłączyć wyświetlacz oled Waveshare 0.96 cala (A) na sterowniku SSD1306 do mikrokontrolera STM32F401RE. Wyświetlacz posiada 8 wyprowadzeń i może komunikować się zarówno poprzez i2c jak i spi. Chcę połączyć się z nim poprzez i2c i móc wyświetlać na nim tekst czy też figury. Mój kod wygląda aktualnie tak: /* Includes ----------------------------------------...
Albo użyj timera w tybie enkodera z włączoną filtracją, albo testuj stan enkodera programowo z częstotliwością np. 100 Hz w przerwaniu timera (SysTick lub dowolnego innego, którego i tak używasz). Nie potrzebujesz żadnych RC, jeśli to samo można osiągnąć tylko przez odpowiednie programowanie.
Witam, chciałem wykorzystać kartę microSD do odczytu obrazków w projekcie zawierającym wyświetlacz LCD, natomiast pojawił się pewien problem z funkcją f_open() w FatFs. Podczas testowania program gładko przechodzi f_mount() zwracając FR_OK, natomiast wykrzacza się przy f_open() zwracając błąd FR_NOT_READY. Przeczytałem zarówno na forum jak i w czeluściach...
systick interrupts systick dioda systick handler
magnetofon niszczy automatyczny parować bluetooth czujnik pralka
lodówka strzela strzelająca lodówka
Location of Fuel Injector No. 1 on 2004 Vauxhall Vivaro 1.9 DTI Jak połączyć przewód do pompowania fotela z przejściówką?