Koledzy, czy Wy naprawdę nie widzicie bezsensu tej sytuacji? Dokładnie! Zamiast się tak męczyć, autor tematu mógł sobie po prostu kupić gotowe urządzenie w najbliższej klimatyzowanej galerii handlowej, zamiast się tak męczyć próbując zrobić coś samemu... Bez obrazy, ale Twoje nachalne wciskanie w co drugim temacie Keila jest już męczące. Jak widać...
[syntax=c]void _delay_init() { SysTick->LOAD = 0x00FFFFFF; SysTick->CTRL = SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_CLKSOURCE_Msk; // | SysTick_CTRL_TICKINT_Msk; } void _delay_ms(uint32_t time) { uint32_t ina, inb; while(time--) { ina = SysTick->VAL; do { inb = SysTick->VAL; inb = (ina - inb) & 0x00FFFFFF; } while (inb<72000); } }[/syntax]
OK, dzieki użyłem gotowca Nie używaj gotowców w takiej banalnej sytuacji. Doczytaj co to jest ten Systick. W dużym skrócie to licznik 24 bitowy - to ważna informacja, może zliczyć maksymalnie do ok. 16 mln (2 do 24). Po doliczeniu do zaprogramowanej wartości zgłasza przerwanie. Do ustawiania wartości można użyć funkcji Systick_Config(), ale najlepiej...
Tak to jest jak się z tej ogłupiającej biblioteki korzysta. Zajrzałem do core_cm3.h , tam funkcja SysTick_Config(ticks) przyjmuje postać: static __INLINE uint32_t SysTick_Config(uint32_t ticks) { if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk)...
Stos dla przerwań ustawiłeś? 4\/3!!
Porównaj: SysTickHandler SysTick_Handler 4\/3!!
SysTimer jest wykorzystywany w FreeRTOS jako zegar systemowy. Ale jeżeli potrzebujesz timera(dla zliczania czasu będącego wielokrotnością zegara systemowego) dla jakiejs innej biblioteki możesz wykorzystać vApplicationTickHook(), gdy tylko masz symbol configUSE_TICK_HOOK zdefiniowany na 1 (plik FreeRTOSConfig.h). Funkcja ta jest wywoływana w przerwaniu...
Poczytaj w dokumentacji, sprawa jest tam poruszona. SysTick i PendSV mają być na najniższym, a inne przerwania - które używają funkcji RTOSa - nie mogą mieć wyższego priorytetu (niższego numerka) niż configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIO... lub configMAX_SYSCALL_INTERRUPT_PRIORITY. Obstawiam, że jedna z tych wartości nie jest używana i w ogóle jest...
impulsy są generowane przez przerwanie SysTick
może popatrz na to: https://stm32.eu/2012/04/11/timer-systic... Nie mam doświadczenia z STM32. Moja odpowiedź raczej dotyczyła licznika 4-bitowego.
Witam, staram sie wykorzystac karte SD do przechowywania danych uzywanych przez wyswietlacz (bitmapy etc). Korzystam z biblioteki FATfs i komunikacja SPI. Aby moc tego dokonac modul FATfs korzysta z sygnalu zegarowego, ktory co 10ms bedzie wywolywal funkcje [syntax=c]disk_timerproc()[/syntax] Do cyklicznego wywolania tej powyzszej funkcji staram sie...
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, Chciałbym zapytać jaka jest zależność RTC i Systicka. O ile tak owa jest? - Kwarc 12Mhz (HSE_VALUE=12000000 , #define SYSCLK_FREQ_HSE HSE_VALUE) - Kody źródłowe poniżej - Keil - RTC zasilam z HSE (LSE nie trybi z przyczyn fizycznych) - STM32F103RBT6 - STMF4_Discovery jako debugger po SWD Problem: 1) A więc problem jest taki iż po wgraniu programu...
1. Dla SysTicka nie włączasz NVIC, bo to przerwanie jest w NVIC zawsze włączone (w ogóle nie da się go wyłączyć inaczej niż wyłączając globalne zezwolenie na jakiekolwiek przerwania). 2. Generowanie przerwania włączasz w SysTicku [; Reasumując: - SysTick->LOAD - wartość "przeładowania" - SysTick->CTRL - dla takiego działania jak chcesz ustawiasz tam...
W ciągu ostatnich dwóch lat w EP pojawił się cykl artykułów poświęconych programowaniu STM32 bez SPL z wieloma przykładami. A i ważna uwaga co do tekstu: w aktualnych, nowych wersjach plików nagłówkowych dla F4 już nie ma BSRRL i BSRRH, a jest BSRR (co powoduje, że programy napisane pół roku temu już się nie kompilują z nowymi plikami nagłówkowymi)....
Są makra tylko struktura nazywa się SysTick a nie STK
Dzięki. Próbuję się dowiedzieć co kryje się pod tą instrukcją: SysTick->CTRL = 7; Wpisanie 7 do SysTick->Ctrl Znalazłem tylko to To drogi Sherlocku skoro już nie masz PM0056 to dodaj sobie 1 + 2 + 4 i co Ci wyjdzie? :)
Czy działa Systick to łatwo sprawdzić w debuggerze. Zresztą wiele spraw można sprawdzić. Ja bym zaczął od tego czy właściwe rejestry podlegają zmianom. To nie jest nic trudnego, w krokowym trybie Też jaka wartość jest SystemCoreClock, to zmienna globalna. Może ląduje gdzieś w HardFault, zaraz po uruchomieniu. EDIT. Często problemem przy kopiowaniu plików,...
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...
Najprościej będzie po prostu usunąć plik stm32l4xx_it.c z kompilacji skoro i tak nie korzysta z "dobrodziejstw" HALa. Tak radziłem w pierwszym poście ale Kolega ma jakis kłopot z tym. Tak że dałem rozwiazania bez ruszania projektu
Wiem, że SysTick to 24 bitowy licznik :) (SysTick_FREQ/1) masz zdefiniowane w define jest to 9000000 (9*10^6). Jeśli źródłem zegarowym dla SysTick'a jest 9MHz (SysTick_CLKSourceConfig(SysTick_CLKSour... i mamy zliczać w dół od 9000000 do 0 to zgaduje, że powinno to trwać sekundę. No właśnie... a u mnie tak nie jest. // Dodane No nie wierze......
W poradniku Szczywronka opis konfiguracji zegara był dokładnie opisany dla STM32F103. Przepisanie kodu stamtąd powinno dać Ci poprawny wynik konfiguracji. Teraz piszę z pomocą CMSIS". Pracę z STM zaczynam zawsze od przygotowania funkcji SystemClockConfig() jak to opisano w poradniku, posiłkuję się zarazem schematem z zegarów z CubeMX . Całość odbywa...
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...
Wyrzuć tymczasowo LCD z obsługi przerwania - nie ma tam (w LCD_WriteText) jakiś opóźnień opartych o inne przerwania (np. systick)? Masz debugger?
Zapoznaje się z STM32 i jestem na etapie I2C. 1. Jak to jest z tym o czym pisałem w poprzednim poście ? 2. Czy SysTick może zakłócać I2C ? (SysTick ma ważniejszy priorytet)
SysTick_Config() to przykład całkowicie bzdurnej funkcji, która "za Twoimi plecami" ustawia na sztywno że SysTick będzie taktowany z zegara rdzenia podzielonego przez 8. Tak wiec dla Twojego mikrokontrolera taktowanego zegarem 48MHz, SysTick był taktowany zegarem 6MHz. A powiedz mi dlaczego zewn a nie zegar procesora? [syntax=c]__STATIC_INLINE uint32_t...
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(;;)....
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!!
Ta linijka chyba ustawia: [syntax=c]SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk[/syntax] [syntax=c]#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */[/syntax] Za pomyłkę przepraszam.
W plikach ".cpp" extern "C" [syntax=c]extern "C" void SysTick_Handler(void) { GPIOA->MODER = 0; }[/syntax]
To jest jeden z kodów z działu o NVIC z którym mam problem. Poza tym rejestr SysTick jest rejestrem kontrolera NVIC.
Witam Jestem początkującym w temacie FreeRTOS i mam parę problemów ze zrozumieniem działania tego systemu. Jeśli mam jakąś obsługę przerwania i w czasie jego wystąpienia ustawiam semafor na który czeka jakieś zadanie o niskim priorytecie (albo nie najwyższym) to po wyjściu z tego przerwania to zadanie będzie niezwłocznie wykonywane czy system poczeka...
Tak, wygląda to jakby po prostu po pewnym czasie wywalało hard fault. Po prostu jak nie włączę breakpointa to program wykonuje się ok 2s. W trybie debudowania pierwsze przejście zajmuje ze 2s. EDIT: Po wyłączeniu konfiguracji buttona systick działa normalnie.
[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ść...
Jeżeli nie potrzebujesz dokładnych opóźnień a takich Π•oko, to IMHO delay na pętlach w zupełności wystarczy. Timerów w stm32 niby wiele...ale prawie zawsze, w większych aplikacjach znajdzie się szczytniejsze dla nich zastosowanie. Z drugiej strony stosowanie pętli opóźniających na ARM-ach trąci profanacją :) Jeżeli nie interesuje Cie korzystanie...
Ok. Przeszukaj pliki w swoim projekcie po nazwie "SysTick_Handler". Znajdziesz tą nazwę w pliku asemblerowym (lub w pliku *.c) w tablicy wektorów przerwań. Ta tablica zawiera między innymi adres funkcji o nazwie SysTick_Handler. Linker umieszcza tablicę pod odpowiednim adresie w pamięci (zgodnie z datasheet procesora).
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...
Witam. Kupiłem płytkę uruchomieniową STM32vldiscovery z kontrolerem STM32F100RB. W przykładowym programie użyto licznika SysTick do wywoływania przerwania co 1ms. W programie użyto funkcji włączającej podział zegara systemowego (ustawionego na 24MHz) przez 8. "SysTick_CLKSourceConfig(SysTick_CLKSour... Jednak aby przerwanie było wywoływane...
Ja rozumiem ze mozna szarpać się z darmowymi toolchainami, ale zeby z keilem?... Postawienie darmowego toolchaina trwa minute :)
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...
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...
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...
Cały obecny kod: http://obrazki.elektroda.pl/5926424400_1...
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,...
Tak 8MHz i taki kwarc mam na płytce zestawu. Ta definicja jest w pliku: stm32f0xx.h #if !defined (HSI_VALUE) #define HSI_VALUE ((uint32_t)8000000) /*!< Value of the Internal High Speed oscillator in Hz. The real value may vary depending on the variations in voltage and temperature. */ #endif /* HSI_VALUE */
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...
Z tego co widzę z ST-Link Utility, program counter stoi w miejscu, konkretnie 0x20000458, czyli cos juz wykonał ale utknął możliwe .że w miejscu gdzie czeka aż przerwanie SysTick wykona sie okreslona liczbe razy. Czy trzeba jeszcze w jakiś sposób ustawić tablicę wektorów przerwań? edit: Jednak nie wykonuje się , dodałem linijkę zapalającą diodę przed...
Problem dotyczy wyłącznie STM32F1. Racja. Wszystkie od F2 mają sprzętowo ustawiony na 1. F1 nie. Fakt że F1 już od dawna nie używam.
SysTick to przerwanie systemowe (rdzenia). RTC to przerwanie mikrokontrolera. Te pierwsze są zawsze włączone. Te drugie trzeba włączyć w kontrolerze NVIC. Jest do tego funkcja NVIC_EnableIRQ() czy jakoś tak, a do niej definicje z numerami przerwań. 4\/3!!
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]...
Hej, dzięki za odpowiedź - nie działało, bo wywaliłem pliki z USARTem, a w jednym miejscu użyte było printf, co co ciekawe nie wywalało się w czasie kompilacji, ale po wywaleniu tego fragmentu jestem w stanie uruchomić debug. (Faktycznie nie popisałem się z tym .elf, noob ze mnie) Teraz jednak mam problem - SPI1->SR po kilku (około 20 - 40) odczytach...
Nie przejmuj się przedpiśćcą. On tak lubi. Przyczepił się do trzech rzeczy, które nie mają nic do rzeczy. Parametrem funkcji SysTick_Config() jest ilość taktów pomiędzy przerwaniami. Co według Ciebie się stanie, jeśli kod przerwania wykonuje się dłużej niż okres jego wywołań? Albert
OpenOCD zaktualizowanie tak jak kompilator wcześniej. Przerabiam przykład od początku teraz na bazie tego o którym mówiłeś LPC Będe wklejał tutaj co dokładnie przerabiam. Jeśli coś robię źle to mam nadzieje że mnie poprawicie. Jeśli dobrze to mam nadzieje że komuś się przyda. 1.Import projektu lpc1114_blink_led i rename na stm32f0_blink_led 2. Zmiany...
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...
Problem rozwiązany - udało mi się uruchomić OpenOCD 0.9.0 + Eclipse + STLink. Działa debug i przerwania. Komunikacja w trybie SWD. Dziękuję wszystkim za pomoc. A jak Wy się łączycie z STM32? Przez JTAG, SWD, czy też kombinację obu interfejsów?
ja pytam o sposób dostępu do tego rejestru, gdzie znajdę to napisane? Czy mam sam przez podobieństwo próbować czy coś takiego zadziała: DMA->ISR=0x......; ? Czy taka jest zasada? Taka jest zasada. Gdzie te nazwy są zdefiniowane? Większość jest w pliku stm32f10x.h . Jeśli używasz Eclipse, to po prostu trzymając CTRL kliknij w daną nazwę, a otworzone...
Witam, prosiłbym bym o pomoc, żeby ktoś wytłumaczył, albo podał przykład jak skonfigurować przerwania zewnętrzne w tym mikrokontrolerze bo walczę z tym i nic mi nie wychodzi i zaczynam podejrzewać, że to procek jest zepsuty, albo tej sztuki jeszcze nie opanowałem :D na początku pisałem własne kody, ale po nieudanych próbach w końcu wkleiłem gotowca,...
Ech, mam dzisiaj dzień dobroci... [syntax=c]#include "stm32f10x.h" #define SYSCLK_FREQ72000000 // jesli srodowisko magicznie nie skonfigurowalo zegara -> zmienic na 8000000 #define SYSTICK_FREQ100 #define LED_BIT13// PC13, active low //======================================... int main(void) { // enable peripherals...
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...
Zacznijmy od tego, że w poprawnie napisanym programie do sprawdzania stanu przycisku nie używa się ani przerwania od przycisku (bo to nie ma prawa działać), ani pętli zdarzeń (bo jest to optymalne i nie ma sensu). Cała funkcjonalność programu, o ktrórym mowa, powinna być zrealizowana w przerwaniu timera, np. SysTick.
W sumie może wrzucę cały program taktowanie to 16MHz ustawione w rcc_config i taka jest też wartość FREQUENCY main: [syntax=c] #include <stdint.h> #include "inc/stm32l053xx.h" #include "config.h" #include "gpio.h" #include "hdr/hdr_syscon.h" static void system_init(void); void rcc_config (void); void systick_delay(uint32_t us); void delay_ms(uint32_t...
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 dobra myśl. Sprawdziłem za pomocą SysTick [syntax=c] void SysTickConfig(void) { SysTick->CTRL &= ~SysTick_CTRL_CLKSOURCE;// AHB / 8 = 9Mhz SysTick->LOAD = 8999999; //1 sek SysTick->CTRL |= SysTick_CTRL_ENABLE; } [/syntax] W main() mam fragment [syntax=c] GPIOC->BSRR |= GPIO_BSRR_BS6; while(!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG)); GPIOC->BRR...
Witam, To w zasadzie mój początek drogi z STM32, więc po pomyślnym ustawieniu portów GPIO zabrałem się za SysTick. Oczywiście znalazłem, że w bibliotekach stm'a istnieje taka funkcja jak [syntax=c]SysTick_Config (SystemCoreClock/1000); // Configure the SYSTICK[/syntax] i jak najbardziej to działa. Chciałbym jednak się wgłębić w rejestry tego mikrokontrolera,...
To chyba nie wina stosów. Jest różnica nazewnictwa funkcji obsługi przerwań pomiędzy FreeRTOS a biblioteką CMSIS. U mnie w identycznej sytuacji pomogło dodanie do pliku port.h (z katalogu SOURCE/portable/gcc/ARM_CM3) tych linijek: // To be complaint to CMSIS and ST standard peripherals library name convention. #define vPortSVCHandler SVC_Handler #define...
W tablicy wektorów zupełnie nic nie zmieniasz (jak zwykle) - system masz połączony ze sprzętem poprzez te 3 definicje: #define vPortSVCHandler SVC_Handler #define xPortPendSVHandler PendSV_Handler #define xPortSysTickHandler SysTick_Handler Mam nadzieje że masz je w jakimś pliku dołączonym do port.c, np FreeRTOSConfig.h 4\/3!!
Niezbędne jest aby SysTick był aktywny, a więc: int main(void) { SysTick_CLKSourceConfig(SysTick_CLKS... SysTick_Config(SystemCoreClock / 1000); // = 1ms ... } SystemCoreClock to częstotliwość pracy rdzenia mierzona w hercach [Hz]. Pzdr
Pin C13 ... Co mogłem przeoczyć ? Małe cyferki odsyłaczy przy opisie pinu PC13 w datasheecie. Przy okazji istotne jest rozszerzenie pliku w którym masz to przerwanie - czy jest to plik C czy C++.
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ę...
Przyznam się, iż faktycznie chodziło mi po głowie aktualizowanie programu sekcjami:) Wydawało mi się, że miało by to sens w sytuacji gdy urządzenie pracuje w mocno obciążonej sieci i rzadko kiedy znajdzie się czas na podesłanie mu jakiejś paczki z kawałkiem nowego programu. Wówczas łatwiej byłoby przesłać aktualizację tylko jakiejś sekcji (np. jednej...
[syntax=c]/** ****************************************... * File Name : main.c * Date : 29/04/2014 14:07:00 * Description : Main program body ****************************************... * * COPYRIGHT(c) 2014 STMicroelectronics * * Redistribution and use in source and binary forms,...
Dzień dobry, Napisałem sobie program (korzystam z: STM32CubeMX oraz Atolli TrueStudio, mam BluePill STM32F103C8, port szeregowy podłączony za pomocą UART2 oraz konwertera FT232RL (ustawionego na 3,3V - bo w dokumentacji wyczytałem że te wejścia nie tolerują 5V) do portu USB, gdzie łączę się za pomocą BrayTerminal). Na BluePill mam wbudowaną jedną diodę,...
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...
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 =...
Bierzesz przykładowy projekt z mojej strony, wrzucasz do tego FreeRTOSa - czyli dodajesz katalogi FreeRTOSa do odpowiednich pól w Makefile: [syntax=bash]# additional directories with source files (absolute or relative paths to # folders with source files, current folder is always included) SRCS_DIRS = FreeRTOS FreeRTOS/portable/GCC/ARM_CM3 FreeRTOS/portable/MemMang...
Stos, pamięć, kto to wie? Raczej HAL-a nikt nie będzie debugował. Takie podmianki część plików stąd część nie wiadomo skąd - raczej nigdy nie działają. Zrób sobie projekt z Cube i zaimportuj. Nie sądze abyś miał problemy. Albo napisz sobie to samo na rejestrach i zobacz. Praca na 10 minut.
Witam, Bawię się STM32 już od jakiegoś czasu ale właściwie nigdy nie potrzebowałem jakiś super prędkości. Teraz chciałem napisać prostą funkcję do sterowania WS2812b i natknąłem się na dziwny, moim zdaniem, problem. Pomimo, że Timery działają szybko to zwykłe przełączanie pinu (funkcja HAL_GPIO_WritePin) działa niemiłosiernie długo. Najprostszy program:...
Chciałem stworzyć bootloader w oparciu o projekt EP. Przeniosłem wszystkie pliki do CooCox'a i podczas budowania otrzumuję poniższe błędy: [syntax=c] [cc] ..\obj\crt0_STM32F10x.o: In function `main_force': [cc] E:\Studia\Boot\src/crt0_STM32F10x.S:142: undefined reference to `_bss' [cc] ..\obj\crt0_STM32F10x.o:(.isr_vector+0x8... undefined reference to...
Książek nie warto kupować. Bo wszystko można za darmo wyczytać w manualach. I jest to tam lepiej wyjaśnione. Praktyka pokazuje, że jak ktoś się w książce nauczył ustawiać np timer, żeby liczył 30 ms a potem wywoływał przerwanie, to w inne opcje go już ustawić nie potrafi. Ad 2/3/4. Jest sens zaglądać do tego, jeżeli póki co nie mam zamiaru klepać w...
[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 /*...
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...
Witam !!! Uruchamiam projekt https://hackaday.io/project/158256-hover... https://github.com/isabellesimova/Hoverb... Projekt jest napisany na STM 32 W swojej desce mam GD32. Po uruchomieniu błąd systemu zgłasza watchdog /* IWDG init function */ static void MX_IWDG_Init(void) { __HAL_RCC_WWDG_CLK_ENABLE(); hiwdg.Instance = IWDG; hiwdg.Init.Prescaler...
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...
Błędnego kodu obsługi przerwania nie pokazałeś, za to bawisz się w przepowiednie godne wróżki: "O ile się nie mylę to funkcja SysTick_Config ustawia priorytet SysTicka na 7" W fusach to wyczytałeś czy wahadełko pokazało? A jeśli jest to prawdą, to kolejne pytanie brzmi: Ile bitów priorytetu jest zaimplementowanych w Twoim uC - ile jest możliwych poziomów?
Panowie, A czy to nie jest jakieś dziwne, że problem wystepuje tylko przy debugowaniu? może coś sam projekt hw jest walnięty (sprawdzałem na dwóch egzemplarzach tego kitu i to samo). [url=http://www.elektroda.pl/rtvforum/do... Jeśli chodzi o konfigurację rcc i flasha to wygląda ona tak [syntax=c] void RCC_Conf(void) { ErrorStatus...
W najbliższych dniach, na stronie http://mikrokontrolery.blogspot.nl/p/spi... powinien się pojawić szablon projektu dla STM32F4xx pod CooCox, w którym nie trzeba już zmieniać tysiąca ustawień, który nie korzysta z SPL, jest oparty na przerwaniach od SysTick, a pętla główna tylko usypia rdzeń. Potwierdzam - będzie jutro.
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...
Kolego Piotrus_999 po imporcie projektu do eclipse wygenerowanego z cube widzę że kod jest napisany w hal. Nie widzę opcji w cube aby nie generował w hal jak i opcji USE_HAL_DRIVERw eclipse . Oto fragment kodu ustawiającego zegary: [syntax=c]void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; /**Initializes...
Witam, Uruchomiłem komunikacje po porcie szeregowym za pomocą USART1. Wszystko niby działa, ale przy deklaracji BaudRate w programie np 57600, na terminalu (program REALTERM) komunikacja działa przy ustawieniu Baud: 115200. Ta sama sytuacja ma miejsce przy ustawieniach innych prędkości. Prędkość na terminalu musi być 2x większa niż ustawiona w programie...
Witam, Mam płytkę ewaluacyjną STM32L1Discovery i mam mały problem ze zrozumieniem działania licznika SysTick. Przy włączonym HSE (32MHz), dzieleniu częstotliwości przez 8 i później przez 1000 w ustawieniach SysTick`a przerwanie teoretycznie powinno się generować co 1ms. W praktyce jest tak że dioda świeci około 2s(delay(1000)) gasnie 2s. Czyli mamy...
[syntax=c] #include "stm32f10x_conf.h" #include "stm32f10x_gpio.h" #include "stm32f10x.h" #include "stm32f10x_rcc.h" #include "stm32f10x_flash.h" #include "misc.h" #include "stm32f10x_exti.h" #include "stm32f10x_flash.h" #include "integer.h" //#include "rtc.h" #include "diskio.h" #include "ff.h" #include "ffconf.h" #include "stdio.h" //------- Pin Defs...
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 ^=...
Witam Mam problem z poprawnym działaniem SPI1 , zamieszczam kod i zrzuty z analizatora , niżej napiszę co nie gra . http://obrazki.elektroda.pl/6540904700_1... Zdjęcie sekwencji http://obrazki.elektroda.pl/6996450100_1... Przez spi chce uruchomić 74hc595 po małej przeróbce kodu działa ale , jak widać zawiesza się , był...
A masz coś takiego dodane w FreeRTOSConfig.h #define vPortSVCHandler SVC_Handler #define xPortPendSVHandler PendSV_Handler #define vPortSVCHandler SVC_Handler #define xPortSysTickHandler SysTick_Handler
Witam, modyfikuję bibliotekę pod klawiaturę matrycową 4x4. W funkcji "Keypad4x4_ChangeColomn" dla określonego warunku należy zmieniać ustawienia pinów z PushPull na Oped Drain. Wszystko funkcjonuje dobrze : dla pierwszego warunku "if(colNum_0_to_3==0)" bity w rejestrze zostają ustawione poprawnie, jednak dla kolejnych warunków pozostają one bez zmian,...
Funkcja _delay_ms() [syntax=c] volatile uint32_t usTick; volatile void _delay_us(uint32_t us){ usTick = us; while(usTick); } volatile void _delay_ms(uint16_t ms){ _delay_us(ms*1000); } void SysTick_Handler(void){ if(usTick != 0)usTick--; } [/syntax] I w funkcji main() jeszcze to: SysTick_Config(72000000/1000000);
Cześć, Mam taki fragment kodu: [syntax=c] static const volatile uint32_t systick = 0; uint32_t GetTimeUs(void) { return systick; } void HAL_SYSTICK_Callback() { systick++; }[/syntax] który się nie kompiluje, dostaję taki błąd kompilacji. [syntax=c]../Application/Time.c:31:19: error: increment of read-only variable 'systick'[/syntax] Z tego co wiem powinno...
Witam, Bawię się zestawem ZL27ARM i robię ćwiczenia z książki "STM32. Aplikacje i ćwiczenia w języku C" Jestem przy ćwiczeniu 18 i mam problem z DMA (pierwszy raz mam styczność z DMA). Zgodnie z przykładem wypełnienie PWM powinno zmieniać się od 0 do 100%. U mnie jest cały czas 50%. Dane z tablicy bufor_PWM nie są przekazywane do TIM1->CCR1 http://obrazki.elektroda.pl/9548353800_1...
Witam Ten kod jest zakręcony jak świński ogon, i jeszcze te biblioteki. Za komentuj USB_Istr();[syntax=c]void USB_LP_CAN1_RX0_IRQHandler(void) { GPIO_ResetBits(GPIOB, GPIO_Pin_8); GPIO_SetBits(GPIOB, GPIO_Pin_10); //USB_Istr(); }[/syntax] i zobaczy czy to na pewno od tej funkcji jest te błąd. Jak myślisz że to problem z przerwaniami to wyłącz na chwilkę...
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...
stm32 systick stm32 delay systick stm32 systick delay
z18xe wymiana silnika haslo linux połączone szeregowo diody krzemowe
Lokalizacja rezystora dmuchawy w Ford Transit Przerywanie odtwarzania płyt CD - przyczyny i rozwiązania