Stos dla przerwań ustawiłeś? 4\/3!!
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...
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]
int TDelay wyciągnij jako zmienną globalną. Za każdym razem, gdy SysTick wejdzie do przerwania ją tworzy, a to bez sensu, co? :) w końcu nigdy nie doliczysz do 500, skoro będziesz cxo chwile tworzył tą zmienną.
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...
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)...
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...
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
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...
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
Są makra tylko struktura nazywa się SysTick a nie STK
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...
impulsy są generowane przez przerwanie SysTick
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)....
kaczor90 od razu rzuca się w oczy, że 18 000 000 > ( 16 777 215 = 0xFFFFFF), a SysTick jest 24 bitowy. Jak chcesz mieć 0,5s to wyzeruj bit SysTick_CTRL_CLKSOURCE i przelicz sobie wartości dla częstotliwości podzielonej przez 8. Brakuje jeszcze linii void SysTick_Handler(void) __attribute__ ((interrupt)); bez niej procesor wpada w nieskończoną pętlę.
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...
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......
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...
Najlepiej skorzystaj z jakiegoś przykładu na Twojego procka. Tak ogólnie to: - dodajesz katalogi include oraz portable/GCC/ARM_CM3 do include path - kompilujesz plik port.c z katalogu portable/GCC/ARM_CM3 - kompilujesz jeden plik z katalogu portable/MemMang (np heap_2.c) - kompilujesz wszystkie pliki zawarte w głównym katalogu FreeRTOSa W projekcie...
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!!
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)
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 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!!
Wyrzuć tymczasowo LCD z obsługi przerwania - nie ma tam (w LCD_WriteText) jakiś opóźnień opartych o inne przerwania (np. systick)? Masz debugger?
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...
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
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...
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,...
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...
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...
To jest jeden z kodów z działu o NVIC z którym mam problem. Poza tym rejestr SysTick jest rejestrem kontrolera NVIC.
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?
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...
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 */
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!!
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...
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...
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.
Przestawiłem ową interesującą mnie linijkę z (1ul << 2) na: [syntax=c] 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) - 1; /* set reload register */ NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS)...
Albo użyj SysTick
Witam, z góry przepraszam za mój nikły poziom obeznania w świecie STM32. Myślę, że problem będzie błahy dla wielkich myślicieli elektrody :) Otóż skonfigurowałem sobie TIM7 do pracy tak: [syntax=c]TIM_TimeBaseInitTypeDef TIM_InitStructure; TIM_InitStructure.TIM_Period = 4; TIM_InitStructure.TIM_Prescaler = 999; TIM_TimeBaseInit(TIM7, &TIM_InitStructure);...
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,...
o dzięki, szukałem dzisiaj tego bitu w PM, ale nie mogłem znaleźć. Rzeczy związane z samym rdzeniem są opisane na stronie ARM - w dokumentacji od ST można czasem coś znaleźć, ale zwykle nie ma to sensu. http://infocenter.arm.com/help/index.jsp... Mam takie pytanie co do atomowego przepisania zmiennej nr. 1 do...
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 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...
Witam, Jakiś czas temu używałem dosyć często przerwania co 1ms od SysTick i wysztko było w porządku. Aktualnie już pare godzin szukam problemu dlaczego nie otrzymuję przerwania od tego timera. Skonfigurowany przez CUBE czyli HAL_SYSTICK_Config(f zegara/1000) = w moim przypadku 24000. Funkcja inicjalizyje i startuje timer, niestety nie wykonuje się funkcja:...
już nie ważne, jakoś dałem rady
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...
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...
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...
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...
Może zbyt namieszałem. Zasadniczo chodzi po prostu o to jak stworzyć projekt w SW4STM, który nie zawierałby tych wszystkich śmieci z SPL i HAL i dało się pisać na rejestrach. Taki czysty podstawowy projekt pod rejestry z tylko niezbędnymi rzeczami jak w przypadku pisania na AVRy. Ja robię to tak: I. Potrzebne narzędzia: 1. System Workbench for STM32...
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...
Gdy utworzysz pusty project dla F0Discovery w TrueStudio najnowszym to on automatycznie wygeneruje pierwszy program do mrugania LEDami. O taki: [syntax=c]#include <stddef.h> #include "stm32f0xx_rcc.h" #include "stm32f0xx_gpio.h" /* Private typedef */ /* Private define */ /* STM32F0_DISCOVERY board definitions */ #define LED_PORT GPIOC #define...
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...
Chyba tak jest, tutaj plik startup_stm32f10x_md.c [syntax=c]/** ****************************************... * (at)file startup_stm32f10x_md.c * (at)author Coocox * (at)version V1.0 * (at)date 12/23/2009 * (at)brief STM32F10x Medium Density Devices Startup code. * This module performs: * - Set the initial SP * - Set...
Zerknij sobie to pliku .lss i sprawdź następujące rzeczy: 1. czy w ogóle jest tam funkcja SysTick_Handler 2. czy adres funkcji SysTick_Handler zgadza się z adresem widocznym w tablicy wektorów (pod adresem 0x800003c) - adres w tablicy wektorów będzie miał nieparzystą wartość (jeśli np. funkcja SysTick ma adres 0x8001000, to w tablicy wektorów będzie...
Projekt jest dośc spory, sklada się z wiely plikow. Udało mi sie juz uruchomic wyswietlacz graficzny, klawiaturę, ADC, przerwania itd. itp. tylko z tym log10 ciagle problem. Dlatego nie dołączam całego projektu. Stosu nie konfiguruje 'recznie', chyba robi to CoIDE i chyba potrafi wyliczyć ile potrzebuje miejsca na stos. Robiłem ten program na AVR z...
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 plikach ".cpp" extern "C" [syntax=c]extern "C" void SysTick_Handler(void) { GPIOA->MODER = 0; }[/syntax]
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ę...
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
0. Na początek postaraj się zapomnieć o SPL. To już nie jest rozwijane i nigdy nie powinno było się pojawić. 1. Środowisko definiuje startup, a ten może konfigurować PLL. Poszukaj pliku startup.c, albo startup.s oraz wywołań funkcji System_Init czy jakoś tak. Poszukaj też definicji zewnętrznego kwarcu, pewnie będzie 25MHz, a wtedy zegar jest ustawiony...
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:...
Cześć, Od jakiegoś czasu borykam się z takim problemem: chciałbym odbierać po CANie ramki, wpisywać je w gotowy szablon i dalej wysyłać po USARCie na kompa w kodzie ASCII. Czegoś mi brakuje w tym kodzie i za każdą wskazówkę będę wdzięczny. Z góry dzięki:) To mój main: [syntax=c] unsigned char tx_uart[]=" ID: DL: F: T: DATA: ";//54 char ramka[55]; unsigned...
Ja rozumiem ze mozna szarpać się z darmowymi toolchainami, ale zeby z keilem?... Postawienie darmowego toolchaina trwa minute :)
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ę...
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.
Temat jakoś umiera śmiercią naturalną. Pozwolę sobie nieco odświeżyć. Hardware: - HY-mini (Cortex M3) - LCD ze sterownikiem ssd1289 (FSMC) - karta sdhc (SDIO) Software: - fatfs R0.10 („testowałem” też wcześniejsze wersje) - „HAL” dla fatfs – silnie wzorowany na przykładach dołączonych do HY-mini i przykładach sugerowanych...
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.
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...
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...
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...
[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ść...
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ć....
No racja, dzięki. jeszcze tak dla pewności: to w ten sposób mam przerwanie co 0,2s: SysTick_Config(CLK_FREQ/14400000); Nie. Taka konfiguracja spowoduje to, że przerwania będą bardzo szybko występować (co kilka cykli zegara). Jak chcesz mieć przerwanie co 200ms to skonfiguruj timer tak: I automatycznie za każdym przerwaniem powinna wykonywać się powyższa...
Popełniłem coś takiego, pomijając jedno niezbędne słowo kluczowe. A tu niespodzianka - działa zgodnie z planem pomimo ewidentnego błędu. Oczywiście daje się to rozsądnie wyjaśnić i uzasadnić - nieźle się przy tym ubawiłem. [syntax=c]#include "stm32f10x.h" #define SYSCLK_FREQ72000000 #define SYSTICK_FREQ100 #define LED_BIT13// PC13, active low int main(void)...
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...
Może mi podpowiecie Ten sam uC STM32f103 ale odpaliłem Keila ARM. Czy w tym środowisku pisząc jakąś obsługę przerwania muszę na początku funkcji dodać prefiks __irq? Coś takiego kiedyś było, tylko nie mogę sobie przypomnieć? np coś takiego [syntax=c]__irq void SysTick_Handler(void) { } czy takiego ma być void SysTick_Handler(void) { }[/syntax] z tym...
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...
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?
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...
Święte słowa. Ja właśnie metodą kopypejstu wyprodukowałem pierwszy swój program na STM32 migający ledami z systickiem jako delay. Weflaszowałem go przez bootloader i odpalił za 1szym razem. Ho ho - powiedziałem sobie. Wszystko ładnie zatrybiło. Zegary się poustawiały, przerwania, wektory. Wszystko. Właśnie dzięki temu że budowałem już z kawałków sprawdzonego...
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...
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...
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...
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...
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...
Uruchomiłem poniższy kod na CubeIDE na płytce z mikrokontrolerem F407VET i przerwanie od DMA ładnie tu działa. Z F030 muszę niestety jeszcze powalczyć. Zauważyłem, że jak nie dodałem warunku while((SPI1->SR & SPI_SR_BSY) == 0) obraz był przekoszony, czyli były błędy w transmisji. https://obrazki.elektroda.pl/1742074200_...
Nie wiem jak wygląda Twój projekt. Ja mam w pliku port.c gdzieś tam dopisane tylko 3 linijki: [syntax=c] void PendSV_Handler(void) __attribute__ ((interrupt, naked, alias("xPortPendSVHandler"))); void SysTick_Handler(void) __attribute__ ((interrupt, alias("xPortSysTickHandler"))); void SVC_Handler(void) __attribute__ ((interrupt, naked, alias("vPortSVCHandler")));...
[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...
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]...
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, 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, 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...
Proszę o naprowadzenie na właściwą drogę. Gdzie w kodzie konfigurujesz przerwania SysTick ? Funkcja SysTick_Handler() nigdy się nie wykona! A jak włączyć diody aby wyświetliła się np. litera 'K' ? To nie Arduino. Tego nie załatwi jedna linijka kodu. Musisz w przerwaniu, sekwencyjnie, wysterować poszczególnie wiersze lub kolumny. Obsługiwałeś juz wyświetlacze...
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 |=...
systick stm32 stm32 delay systick stm32 systick delay
skoda octavia odpalać zimne silnik dipol reflektor antena ustawienia fabryczne laptop
uziemienie basenu łącznik krzywkowy podłączyć
Pioneer A-449 a kolumny Altus 380 S: czy to wystarczająca moc? Mrugający wyświetlacz w lodówce LG - przyczyny i rozwiązania