GPIOA->BSRR |= GPIO_BSRR_BS5; To nie źródło problemu ale tak się tego rejestru nie używa. To jest write only rejestr czyli tylko samo przypisanie Zgadza się, dzięki :) Co do głównego problemu, punkt 1. Użyj debugera okazał się bardzo pomocny :) Założyłem, że skopałem coś w Makefile (np. brakuje jakiejś flagi) i podczas debugowania nic ciekawego...
Jak uruchomić STM32 z FLASH by działał później w pamięci RAM. Dedykowane dla Keil: - plik startup_stm32f10x_xx.s Ułatwię niektórym czasu i szukania w necie rozwiązań flashowania z poziomu własnego bootloadera pamięci programu. Ja przyznam szczerze nie znalazłem żadnego opisu w necie, wobec czego napisałem własne rozwiązanie. Jako że asembler ARMów to...
Witam. Od pewnego czasu bawię się STM32. Starając się przejść na nieco wyższy poziom niż klepanie w C na AVRach a przy okazji zrozumieć 'bebechy' SMTów - nie używam bibliotek - trochę korzystam z poradnika szczywronka, trochę z przykładów Freddiego, trochę z innych rzeczy znalezionych w sieci, wydrukowanego RM i tak dalej. Mam takie pewnie trywialne...
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:...
Wygenerowany jest bezpośrednio z CooCoxa Linkera tutaj nie ma chyba jest zaszyty w środowisku. Wersja CoIDE to: Version: 1.7.8 [syntax=c] /** ****************************************... * (at)file startup_coide.c * (at)author Coocox * (at)version V1.0 * (at)date 20/07/2010 * (at)brief M0 M3 Devices Startup code. *...
Ok, wydaje mi się że przewalczyłem ten problem. Tzn teraz mam plik *.ld (sam zedytowałem jakiś znaleziony w bibliotekach STM32) i dodałem tablicę wektorów znajdującą się w w pliku stm32f10x_it.c. (chodzi mi o to by wykorzystać biblioteki bez przeróbek). Wszystko się teraz ładuje do Flasha z tym że jak debuguję to procesor skacze po programie. Tzn wchodzi...
Witam temat podobny do http://www.elektroda.pl/rtvforum/topic23... Lecz sprawa wygląda troszkę inaczej. Z racji tego, że atollic udostępnił wersję litte postanowiłem przesiąść się z keila. Dotychczas korzystałem z example usb hid na keila. W Atollicu skonfigurowałem sobie nowy procesor, wrzuciłem kod z uvision i po małych przeróbkach (dostosowanie...
Cześć, Projekt zaraz będę konfigurował od początku. Fakt, podałem za mało danych, wybaczcie, skrajna nerwica mnie na to wzięła. Od początku: Używam SW4STM32, ale chciałbym od tego odejść mocno, bo za dużo automatów i za mało szczegółów, może dlatego, że nie potrafię tego wszystkiego ogarnąć. Kompilatora używałem poprzez naciśnięcie "build". W ustawieniach...
Witajcie, Pracuję na STM32 CL i do końca nie rozumiem zachowania się openocd. Plik mam poprawnie skompilowany (z przkładów freddiego ). W eclipsie sekcje GDB_Hardware Debugging mam ustawiona następująco: main->C/C++ Application: {wkazanie pliku: stm32_blink_led.elf} Debugger -> GDB command -> arm-none-eabi-gdb.exe Debugger...
Witam Wysyłam przykładowe ramki z terminala do STM32 przez driver MAX3485 i cały czas sypie mi błędami w odpowiedziach. Nie mam też pewności czy to co wysyłam z terminala do STM32 dociera bez błędów. Poniżej fragment kodu oraz zrzut ekranu. Powinienem otrzymać to co wysyłam. Czarny kolor to odebrane ramki. Proszę o pomoc http://obrazki.elektroda.pl/7456669500_1...
No wiec tak, te dwie rzeczy są takie same w obu twoich przykładach i ich nie zmieniałem: __main_stack_size = 0; __process_stack_size = 1024; Przedstawiam poniżej to co teraz mam w moim projekcie: STM32F103RC_rom.ld [syntax=c]/*****************************... * author: Freddie Chopin, http://www.freddiechopin.info/...
Poczytałem manuala do JTAga i spróbowałem wgrać kod przez OCD. Wywołuje go z parametrami: -f scripts/interface/ftdi/jtag-lock-pick_ti... -f target/stm32f1x.cfg -c "adapter_khz 1000; reset_config trst_and_srst; init; reset init; flash write_image erase C:/ARM/project_eclipse/stm32_timer/out/s... reset run; shutdown;" Otrzymuje błędy:...
Hej Freddie, tym razem to już mam poważny problem i proszę Cię o pomoc. Problem mam cały czas z przerwaniami. Nigdy mi w sumie tak naprawde nie zadziałaly na tym projekcie od stm. Przerobiłem Twoją tablice wektorów przerwań: /** \file vectors.c * \brief STM32 (STM32F101 - STM32F103) vector table and __Default_Handler() * \details STM32...
Debugger coś mieszał. Podłączyłem ulinka i zaczelo śmigać... Ale mniejsza - teraz trafilem na znacznie gorszy error ;/ Mianowicie napisałem sobie ISRa który daje semafor funkcją xSemaphoreGiveFromISR(). Konfiguracja priorytetów 4:4. configMAX_SYSCALL_INTERRUPT_PRIORITY = 9 ISR ma priorytet 10 Grzebanie w NVICu jest w sekcji critical. Niestety funkcja...
Witam Posiadam oryginalnego JLinka firmy Segger + sterowniki libusb-win32 1.2.2. Mam problem z połączeniem z targetem w OpenOCD. Używam mikrokontrolera STM32. Takie błędy mi wyskakują: C:\>openocd -f interface/jlink.cfg -f target/stm32.cfg Open On-Chip Debugger 0.4.0 (2010-02-22-19:05) Licensed under GNU GPL v2 For bug reports, read...
michalko12: Zmieniłem xHandleTaskLED1, xHandleTaskLED2 na static, ale nic to nie pomogło. xLastFlashTime nie można: error "initializer element is not constant". W keilu żadnej tej zmiennej nie miałem jako static a program działał więc podejrzewam, że nie tu jest problem. Dodano po 4 Smashing: Jak wrzucam Twój program do Eclipsa to się nawet nie kompiluje...
Jakieś dziwne zjawisko. Wszystko działało tz. w pętli pytałem urządzenie po modbusie a teraz jakieś dziwnie zachowanie . Tak jakby zawieszony procesor nic się nie wykonuje w pętli . Co może być przyczyną ? Całość poniżej : [syntax=c] /************************* * stm32 uart main.c *************************/ #include "stm32f10x.h" #include "stm32f10x_flash.h"...
[syntax=c]RCC->CFGR &= (uint32_t)0x88FFC00C; RCC->CR &= (uint32_t)0xEEFEFFFE; RCC->CR &= (uint32_t)0xFFFBFFFF; RCC->CFGR &= (uint32_t)0xFF02FFFF;[/syntax] Brawo i kto będzie to czytał? Ale mało ambitnie podszedłeś do tematu bo kopiuj wklej z HAL-a. Napisz sam, bo na razie to taki Twój "własny" szablon, jak cesarza Japonii. Gdzie jest reset handler?
No ale jak zrobisz takie przyporządkowanie o jakim piszesz (bez podziału) to funkcja Reset_Handler ma adres w RAM, więc w tablicy wektorów będzie adres w RAM. Oczywiście zanim ten Reset_Handler się uruchomi, to w RAM nic nie ma - tak więc to nie ma prawa działać... 4\/3!!
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...
(at)_lazor_ Reset Handler Raczej ciężko nazwać to przerwaniem.
Nie ma jakiegoś sposobu na sprawdzenie co go kieruje na default handler? Pewnie że jest i to nie jeden (; Dorzuć do swojego projektu gdzieś coś takiego: w okolicy miejsca które spowodowało problem. Patrzysz wtedy do pliku .lss i patrzysz co znajduje się w zakresie +/- 3 instrukcje od tego miejsca. 4\/3!!
Istnieje szansa że tak - program po prostu postarał się przypisać adresom odpowiadające im rozkazy no i wyszedł taki oto mix [; Widać tutaj, że tablica wektorów raczej jest dobra, teraz podejrzyj Reset_Handler, a konkretnie adresy które ładuje on do "czyszczenia" .bss i inicjalizacji .data - wg pliku map Reset_Handler był pod adresem 0x08015128 4\/3!!
Witam. Po ogarnięciu portów i/o chciałem przejść do konwersji ADC. Początkowo zakładam, że nie korzystam z przerwań, nie korzystam z DMA. Screeny z Cube: http://obrazki.elektroda.pl/6506556500_1... http://obrazki.elektroda.pl/5974943000_1... http://obrazki.elektroda.pl/2033015600_1... Plik main: /** ****************************************...
Ekhem, mój błąd ;] Przysięgam, że widziałem HardFault_Handler zamiast Reset_Handler... Co nie zmienia faktu, że spacerek do reset handlera nie powinien występować na dowolny zonk z serii hardfault, a jeszcze tym bardziej, przy wyłączonym watchdogu. Najwidoczniej, występujący tutaj fault jest jeszcze bardziej 'hard' niż standardowy hardfault. Chyba że...
Tak rzeczywiście zauważyłem właśnie, że main_stack_size był wyzerowany, więc przerwania nie miały prawa działać poprawnie. Jednak spróbowałem wpisywać jedną z kilku różnych wartości i w to miejsce i nie pomogło. Jak patrzę na tą tablicę wektorów w pliku vectors.c, to pierwszym elementem jest adres końca stosu, a potem jest reset handler itd. A jak patrzę...
Generalnie jak wyskakuje Ci double fault, to raczej możesz w debuggerze klikać co chcesz, sesja debuggowania jest "zepsuta" - to tak jakbyś wcisnął podczas debuggowania reset. 4\/3!!
Pokaż cały kod - inicjowanie, main, Reset_Handler i tablicę adresów wyjątków. Im dłużej patrzę w te kawałki, które podsyłasz, tym więcej mam podejrzeń.
Program się tam nie zaczyna. Tam programator ładuje Twoją binarke i tam zaczyna się tablica wektorów. Ale zdecydowanie nie program :) Taki trochę skrót myślowy ;) Jeżeli chcesz tablica wektorów była zgodna z wpisami w elf-ie to musisz (przykład ze startupu STM-a gdzie tablica jest w pliku asemblerowym) Skrypt linkera: /* ENTRY(Reset_Handler)...
Gdzie tablca jest zdefiniowana zależy od toolchaina. Możesz mieć np coś takiego w pliku vectors..... [syntax=c]__attribute__ ((section(".isr_vector"),used)) pHandler __isr_vectors[] = { // Cortex-M Core Handlers (pHandler) &_estack, // The initial stack pointer Reset_Handler, // The reset handler NMI_Handler, // The NMI handler HardFault_Handler, //...
Wywal w jasną cholerę tą bibliotekę! Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT __use_two_region_memory ;wlaczamy wszystkie zegary :] ldr r0,= 0x00000557 ;r0: data ldr r1,= 0x40021000 ;r1: base addr: rcc reg ldr r2,= 0x14 ;r2: offset: rcc_ahbenr str r0,[r1,r2] ldr r0,= 0x000059fd ;data ldr r2,=...
Koniecznie i niezależnie od aplikacji, i jest to zarówno ogólna zasada (żeby zmniejstzyć szansę na zgubienie kolejnego przerwania) jak i specyfika STM32 (z powodu opóźnienia w samym kasowaniu i możliwości błędnego powtórnego wejścia w obsługę).
Zmieniłem program i dodałem opóźnienia. Tak teraz wygląda funkcja wysyłająca dane (i grupujące je w bloki po 250 bajtów) w STM32: [syntax=c]#define MAX_TRANSFER = 250[/syntax] [syntax=c]void wyslijDane ( uint8_t *wskaznik_poczatku_danych, uint8_t *wskaznik_konca_danych) { uint32_t dlugosc_danych; //okresla liczbe danych do przeslania int calkowite_transfery...
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...
Jak to ta sama seria to nie musisz zmieniać wektora przerwań, ale w skrypcie linkera wypadało by pozmieniać rozmiary pamięci i powinno być ok. Rozmiary zmiemione na 512k i 64k. Zadnej roznicy w dzialaniu nie ma. Pomyslalem, ze warto jeszcze wstawic co pokazuje GDB (to jest przypadek, w ktorym uruchamiam load i mikrokontroler nie może się doczekać na...
Po pierwsze dziękuję wszystkim za pomoc. Działa, poniżej opisze jak do tego doszło:) Na początku dodałem: OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm"); OUTPUT_ARCH(arm); ENTRY(Reset_Handler); Plik hex sie tworzył i stm32 st-link utility się tym razem nie pluł że coś mu nie gra, ale w gruncie rzeczy ten plik nic nie zawierał. Potem...
Temat mocno nieaktualny, ale sprobuje odpowiedziec. Moze przyda sie, jesli ktos bedzie mial podobne symptomy. Wg mnie przerwanie przychodzi, ale brakuje procedury obslugi, czyli ISR. Wtedy wykonuje sie domyslny handler, jesli takim masz wypelniona tablice wektorow przerwan lub wystepuje HardFault jesli nie. Zalezy w czym projekt jest napisany. Przykładowy...
Problem wynika z tego, że w Cortexach jeden ze stosów jest inicjalizowany SPRZĘTOWO, po resecie, tak samo pobierany jest adres funkcji Reset_Handler(). Problem o którym piszesz jest znany i polega na tym, że procka resetujesz, on w tym momencie wczytuje sobie SP oraz adres funkcji Reset_Handler(), a następnie programujesz do niego coś nowego, zupełnie...
Z całym szacunkiem ale jestem przeciwnego zdania. Zdarza mi się bowiem używać skoku na 'reset handler' np. przy błędach assercji. Wystarczy nie robić tak ryzykownych rzeczy, tylko po prostu zresetować układ za pomocą odpowiedniego rejestru w NVIC. Zajmie to dokładnie tyle samo pamięci, tyle że w odróżnieniu od takiego skoku na pewno będzie działać...
próbuje uruchomić openocd i rlinka na targecie stm32 primer (circle). Komunikacja z Ride7 działa, ale chciałem skonfigurować eklipsa tak jak radzi Freedie. Skompilowałem openocd 0.4.0 odpalam: G:\arm\openocd\tcl>openocd openocd -d 3 -l openocd.log -f interface/rlink.cfg -f board/stm3210e_eval.cfg lub G:\arm\openocd\tcl>openocd openocd -d 3 -l openocd.log...
Dodano po 31 Kiedy debuguje program, krokowo, zaraz po a = 124; z linii b = log10(a); wskakuje do nieskończonej pętli - void HardFault_Handler(void). Tak jakby sam adres procedury wywoływał błąd sprzętowy.
target halted due to breakpoint, current mode: Handler HardFault Skup się na tych dwóch rzeczach. Sprawdź czy napięcie zasilania nie narasta zbyt wolno. Albert
Oczywiscie tak. Dodam ze uzywam programu System Workbench [syntax=c] /** ****************************************... * (at)file startup_stm32.s dedicated to STM32F103C8Tx device * (at)author Ac6 * (at)version V1.0.0 * (at)date 2018-04-06 ****************************************...
Macie racje az trudno uwierzyc :) Tablica jest w asemblerze i jest prawie pusta :) Srodowisko mam zainstalowane ale nie używam. To jest dopiero pułapka dla poczatkujacych (zresztą nie tylko) [syntax=armasm] .section.isr_vector,"a",%progbits .typeg_pfnVectors, %object .sizeg_pfnVectors, .-g_pfnVectors g_pfnVectors: .word_estack .wordReset_Handler .wordNMI_Handler...
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,...
Cześć. Tak jak napisałem w nazwie tematu posiadam ARM'a STM32F072RB. Podłączyłem kolejno kolumny, później wiersze klawiatury matrycowej 4x3 do portów GPIOC1-GPIOC7. Chcę odczytywać wciskane klawisze na klawiaturze i napisałem jak na razie taki kod: [syntax=c] #include "stm32f0xx.h" #include <stdio.h> volatile uint32_t timer_ms = 0x0; void delay(int...
A jednak nie działa poprawnie i problem nie był w moim roztargnieniu. Sytuacja jest taka, że pierwsza transmisja kończy się przedwcześnie, kolejne są w porządku. W pierwszej ucina się trochę ponad jeden bajt na końcu, tzn. przesyła się fragment przedostatniego i potem już nie. Wysyłanie: void startUSARTDMATransferTx(uint8_t * buffer) { DMA1_Channel4->CCR...
No więc przeczytałem to co w tych linkach było do przeczytania i nie znalazłem odpowiedzi. Wpisałem coś takiego w wierszu poleceń: openocd -f interface/parport.cfg -f target/stm32.cfg -c init -c reset i dostałem coś takiego: Open On-Chip Debugger 0.4.0 (2010-02-22-19:05) Licenced under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxyge...
Witam Jak wyliczyć coś takiego za pomocą preprocesora ? Criterion for valid user code: The reserved Cortex-M0 exception vector location 7 (offset 0x 0000 001C in the vector table) should contain the 2’s complement of the check-sum of table entries 0 through 6. This causes the checksum of the first 8 table entries to be 0. The bootloader code checksums...
Trzeba było dodać ';' przed wklejeniem. Otrzymany plik rozmiary.txt. 00000428 d impure_data 000000e0 t SetSysClock 000000d4 T __register_exitproc 0000008c T SystemInit 00000048 T __libc_init_array 00000034 W Reset_Handler 00000034 T __libc_fini_array 00000018 t register_fini 00000010 T atexit 00000006 T main 00000004 R _global_impure_ptr 00000002 W...
reset handler reset stm32 stm32 reset
odblokować pralka bosch pomarańczowy kontrolka silnik telewizor resetuje samsung
resetowanie baterii resetowanie baterii
Instrukcja obsługi pralki Zerowatt Tropic 842 Wycieraczki w Ford Transit Connect 1.8 DI 2003 włączają się po odpaleniu