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.
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...
SysTick ma się nijak do producenta procka. Tak samo NVIC. To są elementy rdzenia, więc wypada szukać dokumentacji na stronie producenta rdzenia, a nie procka ;]
Witam serdecznie, próbuję skonfigurować SysTick do generowania przerwania co 1us. O ile 10us działa prawidlowo (sprawdzam to poprzez świecenie diodkami) to już dla 1us nie działa. Poniżej kod: [syntax=c]#ifdef __USE_CMSIS #include "LPC11xx.h" #endif #include <cr_section_macros.h> #include "driver_config.h" #include "target_config.h" #include "gpio.h"...
A kto definiuje funkcje wewnatrz main? Tzw "nested functions" to jest rozszerzenie gcc, tak zadeklarowana funkcja jest lokalnie widoczna w scope funkcji, w której jest zadeklarowana. Tak ze wywołujesz te "weak" przenieś ja poza funkcje main. W main.c czarów nie ma Czyli jednak są. Wywal te miliony komentarzy i pustych linii z funkcji. Przez to zaciemniasz...
Bez obrazy, ale nachalne wciskanie początkującym rozwiązania DIY, którego sama konfiguracja wymaga przeczytania podręcznika w sytuacji, gdy są dostępne darmowe rozwiązania gotowe, zbudowane zresztą z tych samych klocków co DIY, zakrawa na jakąś dziwną autopromocję... Jestem tego świadomy, dlatego - z tego co sobie przypominam - NIGDY nikomu niczego...
adamusx Ma znaczenie i to duże. I nie w kwestiach mechaników to należy rozpatrywać tylko funkcji zdefiniowanych w plikach "startup_stm32f4xx.c", "system_stm32f4xx.c" i "system_stm32f4xx.h". Dla CM4 wygląda to tak: Startup wywołuje funkcję SystemInit(); Ta funkcja przy domyślnych ustawieniach konfiguruje system taktowania uC na 168MHz, ale dla kwarcu...
Jeśli tam jest while(1) to się zawiesi dlaczego ma się zawieszać? Program się zatrzyma tylko w przypadku wystąpienia błędu. Można wówczas przed while(1); dodać np. komunikat na wyświetlacz informujący o błędzie lub podjąć inne działania. Jeśli nie chcesz aby tak się działo to wówczas zamiast: [syntax=c]void SysTick_init(void) { SysTick_CLKSourceConfig(SysTick_CLKSourc...
Nie zauwazylem zadnej struktury dla SysTicka poza tymi definicjami. Zajrzyj do core_cm3.h , tam jest gotowa funkcja z CMSIS SysTick_Config(uint32_t ticks) i tam też znajduje się odpowiednia struktura w tym headerze. SysTick jest dostarczany z rdzeniem przez ARM. Dlatego konfigurację NVIC, ITM czy SysTick nie szukasz na stronach producenta mikrokontrolera...
Zajrzyj do funkcji SysTick_Config. Prawdopodobnie nie jest możliwa konfiguracja systicka dla okresu SystemCoreClock. Twój plik źródłowy to *.cpp. W CPP jest coś takiego jak name mangling i musisz kod Twojego przerwania umieścić w sekcji extern "C" {} : [syntax=c] extern "C" { void SysTick_Handler() { GPIOD->ODR |= GPIO_ODR_ODR_13; } } [/syntax]
Jeżeli chodzi o zegar dla SYSCFG to włączam w funkcji: [syntax=c] void system_init(void) { RCC->IOPENR |= RCC_IOPENR_GPIOAEN | RCC_IOPENR_GPIOBEN | RCC_IOPENR_GPIOCEN; RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN; // do przerwań zewnętrznych chyba konieczne //SysTick konfiguracja SysTick->VAL = 0; SysTick->LOAD = FREQUENCY...
Dodałem konfiguracje SysTick do obu projektów. Zero efektu. Już mi się kończą pomysły. Przejrzałem konfiguracje linkera, kompilatora i nic. Nie wiem czego się złapać. Wszystkie inne projekty działają a nie umiem uruchomić żadnego RTOS'a. Dodano po pewnym czasie Odpaliłem FreeRTOS Wiedza dla potomnych. Wystarczyło w pliku port.c włączyć aliasy przerwań...
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.
Jak jest aplikacja to oprocz ustawienia predkosci kwarcu i skokiem do programu glownego nic nie robi,. Dosyć odważna teza... Całkowicie błędna niestety. Bootloader przed skokiem do aplikacji powinien wyłączyć WSZYSTKO co włączył/skonfigurował, Ty natomiast nie wyłączasz niczego: - RCC i PLL, - przycisk, - SysTick. Funkcja konfigurująca SysTick włącza...
To, że ty chcesz mieć 12 mHz nie znaczy że twoje środowisko tak to zrobi. na rozkręcenie pętli trzeba dość sporo kodu i przynajmniej w domyślnym projekcie jest to jakoś tam ustawione. Startup.S system_init() tam może się odbywać ustawienie zegarów na poszczególne peryferia. I skoro chcesz mieć taktowanie rdzenia na 12MHZ przy kwarcu 12MHz to na pewno...
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łaśnie po debagu dowiedziałem się że rejestr ARR nie rusza się, mimo że bit w ODR w SysTicku jest normalnie Togglowany.
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...
Racja, wychodzi na to, że systick jest konfigurowany z najniższym priorytetem (logicznym). Pytanie, czy taka konfiguracja jest poprawna? Każde przerwanie o wyższym priorytecie wywłaszczy Systick, czy nie zaburzy to działania całego systemu operacyjnego?
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,...
Poza tym rejestr SysTick jest rejestrem kontrolera NVIC. Ciekawa teoria... 4\/3!! Dla niedowiarków : http://echiny.pl/piotr/arm/konfiguracja-...
Witam, Skonfigurowałem sobie zegar bazując na przykładzie znalezionym w sieci (kod poniżej). [syntax=c]void RCC_Config(void){ ErrorStatus HSEStartUpStatus; RCC_DeInit(); // Reset ustawień RCC RCC_HSEConfig(RCC_HSE_ON);// Włącz HSE HSEStartUpStatus = RCC_WaitForHSEStartUp(); // Czekaj aż zegar HSE będzie gotowy if(HSEStartUpStatus == SUCCESS){ FLASH_PrefetchBufferCmd(ENABLE);...
Czy jest coś w czym program nie powinien grzebać gdy korzysta z distortos? Zasadniczo tylko konfiguracja SysTicka, oraz przerwania SysTick, SVCall i PendSV - nie należy ich włączać/wyłączać lub próbować zmieniać im priorytetu). Nie należy też włączać grupowania przerwań w NVIC. Zasadniczo nie wskazane są też modyfikacje zegarów rdzenia, ale głównie...
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 Zmagam się z akcelerometrem ADXL345 + STM32F103. Połączenie po SPI. Otrzymuję na wyjściu wartość przyśpieszenia w kodzie U2. Zapisana jest na 13 bitach, w dwóch rejestrach 8 bitowych. Po odebraniu najbardziej znaczące przesuwam << 8 i łączę z mniej znaczącymi. Problem polega na tym, że wciąż otrzymuję wartość dodatnią, mimo że na najbardziej...
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ć....
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,...
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!!
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!!
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,...
Ja rozumiem ze mozna szarpać się z darmowymi toolchainami, ale zeby z keilem?... Postawienie darmowego toolchaina trwa minute :)
No wiem że to układ który zlicza impulsy z zegara z którego jest taktowany mikroprocesor. http://echiny.pl/piotr/arm/konfiguracja-... Tutaj gośc pisze że jak częstotliwość taktowania podzieli przez 1000 to wywołanie będzie miał co 1ms .... (at)Piotrus_999 Ty napisałeś odwrotnie : 72e3/ 72e6 = 1e-3s
Witam Was mam taki problem i nie wiem jak sobie z nim poradzić. Słowem wstępu Mk: stm32303vct6 zestaw discovery podłączony kwarc tak jak poniżej http://obrazki.elektroda.pl/9922777300_1... zwarte SB17 SB18, rezystor już był, dolutowałem C23, C22 - 22pF (nie miałem 20pF) SB12 do MCO nie ruszałem, jeszcze nie wiem do czego mogę MCO użyć...
Spróbuj tak: [syntax=c] /* * Topic: * * Author: Juffre * */ /* BASIC HEADERS---------------------------------... */ #include "MKL46Z4.h" /* DEFINITIONS ----------------------------------------... #define SYSTICK 1 // 1 - enabled 0 - disabled #define FREQUENCY 3 // [Hz]...
W Keilu nie ma intellisense, albo ja nie wiem, jak włączyć (swojego czasu szukałem). BlueDraco Odnośnie do konfiguracji układu zegarowego (Funkcja SystemInit), widziałeś może jakiś opis po polsku?
delay.h [syntax=c]void Delay_ms(__IO uint32_t nTime); void SysTick_Konfiguracja();[/syntax] delay.c [syntax=c]static __IO uint32_t TimingDelay; void SysTick_Konfiguracja() { RCC_ClocksTypeDef RCC_Clocks; RCC_GetClocksFreq(&RCC_Clocks); SysTick_Config(RCC_Clocks.HCLK_Frequency... } void SysTick_Handler(void) { if(TimingDelay)TimingDelay--; } void...
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 |=...
SPL - standard perihperal library oznacza skrót nazwy bibliotek, które użyte zostały w Twojej książce. Są one dostarczone przez producenta STM32 i nie do końca są martwe. Wiele projektów i tutoriali nadal jest o nie oparte. CMSIS - Cortex™ Microcontroller Software Interface Standard jest zbiorem uniwersalnych funkcji dla wszystkich CORTEXów takich...
Przepraszam , że nie dokończyłem wczoraj ale przysnołem. Nie poszło tak prosto bo nie otrzymuje zapisu na kartę , cały program kompiluje się mi w porządku tzn otrzymuje hex -a, zadaniem poniżej przedstawionego programu jest tylko odczyt jednej wartości z wejścia adc1 oraz zapisanie jej na karcie do pliku o nazwie plik, poniżej przedstawiam listing z...
Witam, mam następujący problem: napisałem dwa proste programy, pierwszy testuje przerwanie od timera a drugi testuje przerwanie SysTick. Problem polega na tym że oba nie działają. W pierwszym przypadku program zamiast skoczyć do funkcji obsługi przerwania, wpada w nieskończoną pętlę.(w pliku startup_LPC11xx.s w linijce 196), a w drugim programie przerwanie...
Czy plik wygenerowany przez nowy projekt ale z dołączonymi bibliotekami HAL będzie dobry? W nim znajdują się już te przerwania. Dodaj tylko to co Ci napisałem. Znajdz w dokumentacji procesora gdzie w tablicy przyrwan jest ten EXTI15_10 - i tam zamiast zera wstaw nazwe seojego handlera. I to wszystko. Tu masz zresztą tę tablicę - policz sobie gdzie...
Problem wywołania funkcji wyjaśnił ci już nobbit , nazwa tablicy jest sama w sobie wskaźnikiem. Inicjalizację GPIO robię w innym pliku init.c . Oszczędza to flash, a przy okazji mam wszystko w jednym miejscu i dzięki temu nie muszę szukać po kilku plikach problemów mogących być związanymi z inicjalizacją GPIO i IOCON. [syntax=c] void Init(void) { unsigned...
Na TIM1 mam zrobiony timer do odliczania opóźnień... Od tego jest SysTick, albo TIM6 lub TIM7. Co JTAGa, to RM0008 rev.14, str. 172: Tabela 37. Debug port mapping
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
Mam funkcję sin(x) zapisaną w tablicy y_sin_obl[100] czyli 100 próbek (przeliczone na wartości 0-4094 żeby do DAC można było od razu wpisać). Konfiguruję PLL: void pll_init(void) [syntax=c]{ // HSI enable RCC->CR|=RCC_CR_HSION; // HSI enable while(!(RCC->CR&RCC_CR_HSIRDY)); // wait for HSI ready RCC->CFGR |= RCC_CFGR_SW_HSI; //Select HSI...
Ok kod już wklejam - wczoraj na szybko przed spaniem posta piałem. Konfiguracja pinu od przerwania oraz samego przerwania: GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_... ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode...
Witam, chciałbym mieć przerwanie zewnętrzne na PE0 a cały czas cokolwike bym nie zrobił, przełączył, zmienił itd jest na PA0, moglby ktos rzucic okiem na kod i powiedziec co jest zle... wydaje mi sie ze w tym syscfg jest cos zrabane, albo nie chce sie ustawic etc... swoje wnioski opieram na tym ze PA0..2 normalnie smiga tylko nie mogeprzejsc jakby na...
Bardzo dziękuje za zainteresowanie. Jeśli chodzi o wartość ARR to się pomyliłam użyte wartości to : ARR - 99 PSC - 99 CKD - 0. Konfiguracja zegara: Funkcja inicjalizacji timera : Funkcja do sterowania: [syntax=c]void pwm_tim3_set(uint16_t duty) { if (duty < 1) { pwm_duty = 0; TIM3->CCR4 = 0; } else if (duty > 99) { pwm_duty = 99; TIM3->CCR4...
Witam, Na początku chciałem zaznaczyć ze jestem początkujący jeśli chodzi o procesory typu ARM, a tym bardziej o obsługę FreeRTOS. Mam problem z obsługą magistrali CAN pod tym system. Wykorzystuje biblioteki pobrane ze strony www.freertos.org . Niby wszystko ładnie się kompiluje ale na magistrali nic się nie pojawia . Odpaliłem proste zadania typu miganie...
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)...
Witam, pytanie dotyczy systemowego timera oraz procesora STM32F107VCT6. Zewnetrznie mam podpiety kwarc 25MHz ale rozumiem jezeli nic wstepnie nie konfiguruje / nie uzywam pll bedzie on dzialal z wewn taktowaniem 8mhz prawda ? jezeli timer jest 24 bitowy czyli liczy od 16777215 do 0. przy ustawieniu przerwania co 16777215 tykniecia zegara bede mial przerwanie...
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();...
Witam Chciałem sobie sprawdzić czy skonfigurowałem poprawnie zegar zewnętrzny. W tym celu użyłem zegara systemowego. Problem polega na tym że gdy mierzę częstotliwość na wyjściu GPIOD 12 wynosi ona 47.5 kHz. Spodziewana częstotliwość 50kHz. Przebieg na oscyloskopie jest czysty, bez żadnych overshootingów, rise time na poziomie 30ns. HCLK=100Mhz=FCLK...
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...
Sprawdzenie czy rdzeń działa z taką częstotliwością jaką ustawiłem robi się timerem a nie w kodzie, skoro raczkujesz i gubisz się w peryferiach ARM to warto uruchomić cortexowy systick bo jest bardzo prosty w konfiguracji. Jak koledzy już milion razy napisali, żeby oszacować czy faktycznie działa tak jak napisałeś to musiałbyś znać czas wykonywania...
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...
Dzień dobry! Przycisk podpięty do płytki mam w/g schematu: http://arduino.cc/en/uploads/Tutorial/bu... Kod mojego maina: #include <stm32f10x_gpio.h> #include <stm32f10x_rcc.h> #include "stm32f10x_flash.h" #include "misc.h" /* Scheduler includes. */ #include <stdio.h> #include "FreeRTOS.h" #include...
Tak na szybko to powinieneś mieć plik prawdopodobnie o nazwie startup, w którym umieszcza się wektory obsłygi przerwań wyglądający jakoś tak: [syntax=c] //Interrupt vector table __attribute__ ((section(".isr_vector"))) void (* const exceptions_vectors[])(void) = { &_estack, // The initial stack pointer reset_handler, // The reset handler unused_vector,...
Tak sprawdziłem łącząc fizycznego Coma z przejściówką na tych samych ustawieniach. Kombinowałem na wszelki wypadek z innymi ustawieniami nic to nie dało. Będę próbował skonfigurować te zegary samemu ale widzę że doszły jakieś ustawienia PLL.... i nie bardzo to ogarniam. Z stm32f1 poszło od strzała. Dziwne to ogólnie bo jak na razie SPI i SysTick wydają...
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...
Drogi Gaskoin twoje gdybanie o mojej niewiedzy są trochę bezpodstawne. Po prostu po długiej walce w truestudio zacząłem mieć wątpliwości co może być przyczyną więc zacząłem atakować eclipse. Możecie do Eclipsa skorzystać z tutka Freddiego jak to postawić. Jak już napisałem środowisko działa, nawet debugowanie przez stlinka działa. No ale nie mogę zoptymalizować...
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...
Mikrokontroler to STM32F439 Płytka samoróbka, bo niestety w discovery nie można wykorzystać do ETH. Jeśli chodzi o konfigurację zegara to wykorzystuję do tego program STM32CUBEMX. Tam jeśli coś wykracza poza jakiś zakres do jest zaznaczane na czerwono i nie można wygenerować kodu, dlatego wydaję mi się że konfiguracja raczej "ale nie na pewno" jest...
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...
Dobra, zadziałało. Program generuje stabilne wykresy, nawet do 18kHz. To fakt, że teraz im mniejsze dX, tym większa częstotliwość, ale zastosowano odwrotność (R/dX) i będę musiał sobie poprzeliczać dX'y na częstotliwości odpowiadające nutom. Dla potomnych zamieszczam tu gotowy, działający kod. Brakowało będzie tylko konfiguracja peryferiów i wypełnienia...
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.
Witam. Zakupiłem zestaw firmy Atmel SAM4SXPLAINED z mikrokontrolerem ATSAM4S16C. Dla ćwiczeń chciałem wygenerować przebieg sinusoidalny. Przygotowałem sobie 256 próbek 10 bitowych i cyklicznie je przesyłam do rejestru CDR przetwornika. http://obrazki.elektroda.pl/9194720900_1... Częstotliwość z jaką pracuje CPU to 120MHz. Sygnał jaki...
O tym nie wiedziałem... Ale ja puszczałem program również komendą continue, więc chyba nie powinno wtedy zadziałać wyłączanie przerwań. Zresztą, taka praca byłaby bez sensu, bo nigdy program nie zatrzymałby się w przerwaniu. Poza tym i tak coś się kaszaniło, miałem jakieś dziwne komunikaty, nawet przez jakiś czas myślałem że padł mi procesor. Myślę,...
Wszystko okej, tylko nie bardzo wiem gdzie i jak skonfigurować ten port i jak skonfigurować ten data trace? Podłączyłem płytkę nucleo. Ja przerabiam ST-Link do J-link bo Segger ma lepsze oprogramowanie - u Ciebie zamiast J-Link wybierz ST-Link 1. Wybierz trace async SW w oknie cube (plik ioc) https://obrazki.elektroda.pl/2555985600_...
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, 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]...
Tak to powinno być, żeby tylko ciągle wysyłało? Dalej niestety nie działa. [syntax=c]/* Includes */ #include <stddef.h> #include <stdio.h> #include "stm32l1xx.h" //defined USE_STM32L_DISCOVERY #include "discover_board.h" #include "stm32l_discovery_lcd.h" /* Private typedef */ /* Private define */ /* Private macro */ /* Private variables...
Cześć! Korzystam z płytki Nucleo-STM32L476RG, do której podłączyłem sobie czujnik DS18B20. Chcąc go uruchomić potrzebuję opóźnienia rzędu 1us. Napisałem sobie funkcję "delay_us" niestety liczy ona dwukrotnie za szybko. MCU pracuję z częstotliwością 80MHz. Wykonałem test z użyciem SysTicka (zakomentowane linie kody w programie) i odliczanie 1 sekundy...
Witam, mam problem z STM32F101CB, nie wiem dlaczego się tak dzieje ale teoretycznie działają program, który wgrywam na płytkę, to w trybie debug'a ciągle się resetuje. Możliwe jest że się resetuje płytka jednak robi to tak szybko że ja na wyjściu cały czas dostaje poprawne dane. Ale do meritum, ustawiam breakpoint'a na samym początku main'a, zapuszczam...
automatyczna konfiguracja stosu, zegara, przerwań (startup). Kolego, nie opowiadaj bajek. Gdzie jest ta automatyczna konfiguracja??? Na przykład dla STM32F4xx, wielkość stosu definiujesz w pliku startup_stm32f4xx.c, konfiguracja zegara w pliku startup_stm32f4xx.c, bazuje na ustawieniach zawartych w stm32f4xx_conf.c, co często sprawia, że rdzeń jest...
JTAG_TCK_PIO0_10 wziąłem z LPC11xx.h dołączonego przy tworzeniu projektu w CooCox CoIDE. Faktycznie ustawienie LPC_SYSCON->SYSAHBCLKCTRL |= (1<<11); skutkowało pojawieniem się SCK na PIO_010. Jenak nadal na PIO0_9 brak było MOSI, walczyłem jakieś 2 godziny z różnymi ustawieniami w końcu wpadłem na pomysł aby zmieniać w obsłudze SysTick_Handler...
Poradnik dla początkujących, ale jedyne czego w nim brakuje to opisu jak z konfigurować środowisko do pisania na rejestrach. W sumie to masz już środowisko i tak naprawdę nic nie musisz konfigurować aby programować używając rejestrów. W CubeIDE masz przynajmniej pewność, że wszystkie pliki CMSIS są aktualne. Jak zrobić projekt bez HAL: 1. Wygenetuj...
Witam. Rozpocząłem przygodę z programowaniem układów STM32F4. Nabyłem płytkę XNUCLEO-F401RE (kompatybilną z NUCLEO-F401RE) oraz skorzystałem z kursu który znajduje się pod tym linkiem [url=http://forbot.pl/blog/artykuly/prog...
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...
Aktualnie najważniejsze pliki programu wyglądają następująco: main.c: [syntax=c]#include "main.h" //definicje stalych #define LINENUM 0x15 #define FONTSIZE Font12x12 #define LED1 GPIO_Pin_13 #define LED2 GPIO_Pin_14 #define PRZYCISK GPIO_Pin_0 //zmienne - definicje void Delay(__IO uint32_t time); extern __IO uint32_t TimmingDelay; unsigned short regVal;...
BlueDraco-> Dobra uwaga, dzięki. Często faktycznie jak jakiś problem mnie przerasta to go przeskakuje... Wierząc ,że w międzyczasie sam się rozwiąże. Na Keilu pracowałem na funkcjach HAL( Na uczelni również pracujemy na nich niestety...) , które są kombajnami. A mnie na razie wystarczy kosa... Ale jak widać i z nią mam problemy... Wcześniej ustawiłem...
main [syntax=c] #include "stm32f7xx_hal.h" #include "lwip.h" #include "main.h" #include <string.h> #include "tcp_echoserver.h" /* USER CODE BEGIN Includes */ /* USER CODE END Includes */ /* Private variables ----------------------------------------... /* USER CODE BEGIN PV */ /* Private variables ----------------------------------------...
Co wy bajacie? :D Przecież w plikach RTOSa jest wszystko napisane, wystarczy umieć czytać ze zrozumieniem. Można zajrzeć w też już istniejące projekty i wszystko ładnie śmiga. Debuger nie widzi systemów operacyjnych ani nie rozumie muteksów etc :D w folderze source masz wszystkie pliki c w folderze include masz wszystkie nagłówki dodatkowo trzeba zapewnić...
Witam, niestety coś mi nie działa. Siedzę nad tym drugi dzień i nic. Wysyłanie testowe wygląda tak http://obrazki.elektroda.pl/3434193600_1... Może to wina, że od razu MOSI skacze po wysyłce na 1 ale nie jestem pewien, nie dało mi się zera wymusić przez [syntax=c]GPIOA->PUPDR |= GPIO_PUPDR_PUPDR7_1; // czyli 10: Pull-down[/syntax]...
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:...
Jakie Bez tego mechanizmu ciężko ogarnąć takie tematy jak zagnieżdżanie przerwań czy zmiana kontekstu po przerwaniu. Idea jest taka, że w twoim przypadku SysTick musi mieć wysoki priorytet (najwyższy w "systemie", w znaczeniu w RTOSie), tak aby tick był regularny i się nie gubił. Przełączanie kontekstu na najwyższym priorytecie zaś jest średnio zabawne,...
Cześć. Nie wiem dlaczego nie działa wysyłanie przez SPI kilku bajtów https://obrazki.elektroda.pl/5712781400_...
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...
SystemInit wzorowałem na funkcji konfigurującej zegar, której autorem jest Freddy Chopin. Uzupełniłem ją o konfigurację zegarów dla USB oraz I2S. Dodałem pliki, np. Config.h, a pozostałe pliki zmodyfikowałem w taki sposób, aby po utworzeniu nowego projektu mieć cały zestaw plików, które zawierają też szablon programu z inicjalizacją i obsługą przerwania...
Witam! Fragmenty kodu: USART_InitStructure.USART_BaudRate = 57600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowCo... = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx...
Witam, jestem w trakcie wykonywania ćwiczeń z książki Mikrokontrolery STM32 w sieci Ethernet na zestawie uruchomieniowym ZL29ARM, z programatorem j-link edu, w środowisku eclipse (a konkretniej System Workbench for STM32 z pluginem do obsługi j-link). Aktualnie zawiesiłem się dłuższy czas na konfigurowaniu budzików biblioteki lwip (dla posiadających...
Zastosowałem się do twoich uwag, pusta funkcja main się kompiluje. Problem pojawił się, gdy chcę zaimportować definicje adresów rejestrów. Rozwiązałem go przez zakomentowanie miejsc, na które "krzywo patrzył" eclipse. Efektem jest działający kod wynikowy :) Dzięki ;) Teraz rozgryzam te przerwania. Chcę żeby SysTick zapalił mi diodę LED, a nie zapala...
Witam, Problem polega na tym, że po dodaniu do projektu bibliotek FreeRTOS'a i "poprawnym" jego skonfigurowaniu mam problem z SysTickiem i jego przerwaniem. Samo w sobie przerwanie działa poprawnie. Są zgłaszane przerwania co określony czas jednak taski nie są w stanie się przełączać. Planista ciągle siedzi w ostanio utworzonym tasku. Początkowo myślałem,...
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...
Wstawiam kod obsługi odbioru danych w przerwaniu, gdzie odebrane dane są zapisywane do bufora a po zapełnieniu bufora do zewnętrznej pamięci, w tym przypadku na karte SD, docelowo do pamięci Flash - może komuś się przyda. [syntax=c] #include "LPC17xx.h" #include "lpc17xx_systick.h" #include "lpc17xx_uart.h" #include "lpc17xx_pinsel.h" #include "diskio.h"...
Witam. To znowu ja z kolejnym urządzeniem. Jest to 1-kanałowy inteligentny przełącznik ściemniacza Avatto DMS16-W1 z CBU rozmawiający z MCU Puya PY32F002A (TSSOP-20). https://obrazki.elektroda.pl/5535706100_... https://obrazki.elektroda.pl/3162350000_... https://obrazki.elektroda.pl/6555860800_... https://obrazki.elektroda.pl/4466273200_...
Jak kazałem mu wygenerować kod mrugania LED dla AVR to zrobił to poprawnie, o rezystorze nie wspomniał, ale wspomniał, że jeśli to nie jest ATMega to kod może wymagać dostosowania. Nieźle. Dla ARM już tak pięknie nie było - owszem kod poprawny, ale opóźnienia są generowane przez pętle, nie systick, lub inną formę użycia timera. Po takiej sugestii, wygenerował...
Tam, gdzie masz przerwy wykonuje się przerwanie. Przerwanie od czego? Nie ustawiłem przerwania. Nawet jeśli wyrzucę kod od przerwania SysTick czyli: i jest ładny prostokąt. W pętli while(1) tylko: http://obrazki.elektroda.pl/2213215700_1... Oscyloskop: 2 V /DIV 0.05 us /DIV Zaznaczę iż GPIOA->BSRRH oznacza poziom niski napięcia 0...
Witam temat w sam raz dla mnie(początkującego)- miałem w sumie podobne pytania, dużo mi się rozjaśniło. Przy okazji podepnę się pod temat, bo to chyba trochę zbliżone zagadnienia(Używam Eclipse, STM32F103RBT6, konfiguracja wg. strony FreddieChoppin(oprócz ustawienia ścieżek do plików-za chiny nie mogę tego zrobić i wszystko trzymam w glównym katalogu,...
Z HAL'a nie korzystałem, ale taki kod z SPL działa w 100% - wystawia na DAC'a po kolei, cyklicznie próbki z tablicy z częstotliwością kontrolowaną preskalerem TIM1->ARR - fragment prostego generatora opartego na STM32F4: [syntax=c] GPIO_InitTypeDef GPIO_InitStructure; RCC_ClocksTypeDef RCC_Clocks; DAC_InitTypeDef DAC_InitStruct; DMA_InitTypeDef DMA_InitStruct;...
systick handler stm32 systick systick interrupt
radio hitachi prądnica pierścieniowa sterownik lm339
Brak łączności drukarki HP Envy 4500 z komputerem: przyczyny i rozwiązania Wzmacniacz WS 432: Regulacja progu zabezpieczenia