A nie masz tam przypadkiem przed main() funkcji SystemInit() ze SPLa, która "coś" robi z zegarem? P.S. Ta deklaracja przerwania przed main() naprawdę jest zbędna... Czemu to niby miałoby służyć? P.S.2 - PSC też powinno być 499. 4\/3!!
Nie modyfikowałem jej, więc nie wiem. Gdzie można ją podejrzeć? edit: Ok, znalazłem. Kiedyś grzebałem w cudzym projekcie i widziałem fajny wizzard. Czy on przypadkiem nie odnosi się do funkcji SystemInit?
W kodzie przykładu zakomentowałeś wywołanie SystemInit. Zapewne używasz SystemInit wziętego z Twojego środowiska, która to proceduira programuje PLL i ustawia częstotliwość zegara (zgaduję że) na 24 MHz. Zakomentuj SystemInit, który masz, odkomentuj ten pusty i wszystko będzie OK.
Zwykle funkcja SystemInit jest wywoływana przez moduł startowy przed wywołaniem main().
W F0 bufor prefetch jest domyślnie wyłączony, więc wypada go włączyć, np. w SystemInit. Również w SystemInit włączam PLL, a przełączam zegar już w main - tak jest szybciej.
Witam Mam problem ze zmianą czasu w STM32F0Discovery. Konfiguracja i inicjalizacja modułu jest dobrze wykonana - w debugerze zlicza sekundy, ustawia flagi itd. Problemy zaczynają się gdy chcę załadować do rejestru czasu TR i daty DR aktualny czas. Podczas pracy krokowej wszystko idzie ładnie - flagi się ustawiają, rejestr ładuje i wartości się zmieniają....
Może wypada zacząć od tego, co to jest CMSIS. W zależności od fantazji może to być albo tylko minimalna obsługa procesora, albo również biblioteka obsługi peryferiów. Ta minimalna obsługa procesora zawiera pliki nagłówkowe, definiujące wszystkie zasoby mikrokontrolera oraz pliki definiujące zasoby rdzenia i podstawowe operacje na nich. Ponadto mamy...
Dzięki m.ki . Zmieniłem w pliku core_cm3.c "=r" na "=&r" w funkcjach, które są na podane na stronie: http://www.freddiechopin.info/pl/artykul... W repozytorium zazwyczaj zaznaczam tylko "CMSIS BOOT" Marek_Skalski zmieniasz coś w tych plikach? Pewnie funkcję SystemInit ?
OK błąd znaleziony,-d przy parametrach jest zbędne dla jasności: # C++ definitions CXX_DEFS = USE_STDPERIPH_DRIVER CXX_DEFS += HSE_VALUE=8000000 # C definitions C_DEFS = USE_STDPERIPH_DRIVER C_DEFS += HSE_VALUE=8000000 C_DEFS += SystemInit=low_level_init_1 Dziękuje bardzo za pomoc.
Witam, Na wstępie dodam, że bardzo długo walczę z konfiguracją projektu z stm32l w Eclipse. Udało mi się stworzyć projekt z automatycznie generowanym plikiem makefile (na podstawie ustawień C/C++ Build -> Settings ), ale były problemy z FreeRTOS, więc postanowiłem przerobić przykład Freddiego dla STM32F10x (stm32_blink_led), aby mieć większy wpływ na...
HSE_VALUE jest potrzebne funkcji SystemInit, poza tym w pliku "stm32xxx.h" masz coś takiego [syntax=c] #if !defined (HSE_VALUE) #define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */ #endif /* HSE_VALUE */ [/syntax] najlepiej dodaj do opcji kompilacji coś takiego "-DHSE_VALUE=(tu częstotliwość kwarcu w Hz"
Może Wam ten nieszczęsny ukryty SystemInit() psuje krwi w domyślnym startupie jeśli używacie takich środowisk jak Atollic czy inne dziwne IDE :P
Z tego co wymieniłeś wszystko jest OK (zakładam, że 3. to wskaźnik na funkcję, a nie jakieś dziwne rzutowanie). Ja bym się jednak początkowo skupił na zainicjalizowaniu w main() wszystkiego co inicjalizuje Keil w startupie, czyli po prostu wywołaniem SystemInit() - jeśli to zrobiłeś to następnym krokiem będzie zastanowienie się, czemu kod w Keilu generuje...
SPI zawsze coś "zwraca", niezależnie od tego, czy ktoś do niego nadaje. Ten temat jest tu wałkowany co 2 miesiące. Transmisja SPI jest ZAWSZE dwukierunkowa, nawet wtedy, gdy nie jest. ;) SystemInit jest wołany przez asemblerowy kod startowy zaraz po resecie uC, zanim zostanie zawołany main. Nie wierzysz - to sprawdź, co jest pod ResetHandler w pliku...
1. Pokaż jak wygląda wywołanie openocd. Jak masz płytkę discovery to spróbuj po prostu z linii komend wywołać: [syntax=bash] openocd -f board/stm32f0discovery.cfg [/syntax] 2. Prawdopodobnie rozbiegówka oraz SystemInit zajmują ten 1KB pamięci FLASH. Wywołaj polecenie: [syntax=bash] nm --size-sort plik.elf [/syntax] aby zobaczyć wszystkie symbole w Twoim...
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...
Spróbuj takiego kodu. Niestety nie sprawdzałem go bo nie mogę skompilować Twojego kodu. [syntax=c] #include "stm32f10x.h" #include "TouchPanel.h" #include "systick.h" #include "GLCD.h" #include "stdio.h" #define TP_INT_IN GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_6) void TPintInit(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GP...
Witam, Jestem niedoświadczonym użytkownikiem więc proszę o wyrozumiałość. Podobnie jak kolega chciałbym aby mój STM32 discovery Examples/GPIOToggle i chciałbym go tak zmodyfikować żeby zaczął rozmawiać po I2C, stworzyłem plik I2C.c oraz I2C.h. Dodam ze używam Keil'a Dostałem od kolegi przykładowy kod który powinien działać ale w praktyce jest oczywiście...
Cześć, Potrzebuję wykonać komunikację w 2 strony pomiędzy komputerem PC i mikrokontrolerem przez ethernet. Sprzętowo wybrałem stm32F103 oraz moduł z układem ECN28j60. Układ nie będzie włączony do żadnej sieci, będzie to połączenie punkt-punkt. Znalazłem biblioteki, dostosowałem pod swój mikrokontroler. https://github.com/xaionaro/stm32-enc28j... Generalnie...
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...
Jeśli chcesz mieć periodyczne przerwanie, to ustaw stosowny okres timera i użyj przerwania końca okresu. Czy zablokowałeś wywołanie SystemInit lub wyedytowałeś ustawenia? Jeśli nie, to zapewne masz zegar 72 MHz, co by wiele wyjaśniało.
Bey startup to Ci raczej nic nie ruszy. Jeśli bardzo nie podoba Ci się SystemInit - zmień nazwę tej funkcji w stmxxx_systemxxx.c i napisz własną - może być pusta. Ostatnio w Keil/ST zmieniły się poglądy nt. SystemInit, co można poznać po tym, że nowe wersje pakietów Keil (które wyszły dla połowy serii STM32) na ogół nie inicjują taktowania procesora....
Twój artykuł o ARM toolchain czytałem. Chętnie bym nawet użył tego(zamiast ograniczonego truestudio), ale niestety OpenOCD nie obsługuje ST-Linka... Chyba że jest jakaś alternatywa dla tego rozwiązania? [EDIT] Utworzyłem projekt w Keilu, dodałem startup code, pustą funkcję SystemInit. Teraz wszystko działa "normalnie", tj predkosc zgodna z wyliczona...
Witam Rozpoczynam zabawe z STM32 i napotkalem problem. Chodzi o uruchomienie USART2 i wyslanie znaku na terminal do PC. Rx i Tx mam podpiete do portu A PA2->Tx i PA3->Rx. Siedze z dokumentacja procesora ale jakos nie moge znalesc bledu w swoim kodzie. Moze co podpowiecie. Kompilator AtolicTruestudio Petla główna: [syntax=c] int main(void) { int...
Witam Hmm, walczę od jakiegoś czasu z uruchomieniem toolchaina Eclipse + CodeSourcery itd dla STM32 (dokładnie STM32F107VCT) i mam pewien problem. Przejrzałem kilka różnych projektów, w których podpatrywałem pliki skryptowe linkera (*.ld) jak i pliki makefile. Na razie kompiluje mi się gdy przykładowo zrobię plik main.c z takim kodem: STM32F10x_StdPeriph_Lib_V3.5.0...
Używam sobie takiej chińskiej płytki: http://obrazki.elektroda.pl/8610848000_1... aby ten mikrokontroler zadziałał z zewnętrzną pamięcią RAM jako pamięcią danych programu?
Witam, Mam problem - mam za zadanie zrobić coś w stylu skanera 3D na STM32. Na razie nie mogę opanować samej obsługi kamery w konfiguracji STM32F103VE+ wyśw. SSD1963 7" (zestaw EB-STM32_08_LCD7) i kamera OV7725 . Do zestawu dostałem przykładowe projekty w keilu. Bazując na projekcie do sprawdzania kamery z wyświetlaczem 4.3' wkleiłem działające biblioteki...
SystemInit jest w dołączonym do projektu pliku ...system...c, a to, co w niej jest, zależy od tego, ile miesięcy temu wyszedł pakiet do danej serii. Nowsze wersje SystemInit nie robią prawie nic, starsze dość sporo. Zawsze możesz zmienić nazwę oryginalnej prcedur i napisać własną SystemInit(); Obsługa LCD w przerwaniu timera ma m.in. tę zaletę, że jest...
(at)gaskoin Racja. Jak coś nie działa to się wszędzie szuka błędów. Nie korzystam z żadnych dodatkowych peryferiów. Jest main() ustawienie usarta2 ustawienie DMA i tyle. A właśnie - za ustawienie zegara procesora odpowiada funkcja skopiowana z StdPeriph która się zwie SystemInit() w sumie zapomniałem o niej. Napiszę swoją od nowa i się odezwę - może...
To po co w SystemInit() od ST jest możliwość zmiany SCB->VTOR? Funkcja ta jest odpalana w startupie. https://my.st.com/public/STe2ecommunitie...
W ogóle ciekawi mnie, po co chcesz znać ten układ aż tak dobrze ? Może kiedyś będę chciał zaprojektować jakiś swój układ więc warto wiedzieć dokładnie jak one działają ;) Trochę jak z religią uwierz, że Bóg jest i już - bo tak jest napisane i wszyscy to wiedzą. W kwestii "jednym poleceniem Init": Fragment ze strony: w linii C_DEFS dodatkowo dopisujemy...
Pobierz sobie STM32CUBEMx. Tam możesz sobie stworzyć szablon, wygeneruj projekt do SW4STM32 (znajdziesz w ustawieniach projektu). Pobierz System Workbench for STM32, zaimportuj projekt i wszystko będzie śmigało... Będziesz miał kod, który działa na najnowszych bibliotekach HAL, wszystko jasno i przejrzyście opisane, łatwy dostęp do konfiguracji peryferiów...
Piszę w System Workbench for STM32 . Faktycznie w pliku system_stm32f10x.c usunięcie ciała funkcji SystemInit pomogło. Musze zainteresować się kolegi startupem. Oto jej ciało: [syntax=c] /* Reset the RCC clock configuration to the default reset state(for debug purpose) */ /* Set HSION bit */ RCC->CR |= (uint32_t)0x00000001; /* Reset SW,SWS, HPRE, PPRE1,...
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ę...
Cześć, Korzystam z płytki STM32VLDiscovery (z programatorem ST-LINK), Keil uVision. Po raz kolejny wziąłem się za ARMy. I wszystko pięknie szło do czasu, aż zamarzyłem o fatfs. Bibliotekę dołączyłem, przepisałem kod tak, żeby nie korzystał z biblioteki stm32 standard peripherials. Uruchomiłem debugowanie - 17KB ma kod i... właśnie - w debugerze jak...
Witam problem jest następujący, inicjalizacja SPI przechodzi (wydaje mi się że poprawnie). Niżej podam wartości rejestrów SPI3. Problem polega na tym że nie mogę nic wpisać do DR w interfejsie SPI, nie mam jeszcze nic podpiętego do SPI ale mam zamiar przetestować całość na modułach MMcc1100 i płytce ewaluacyjnej z STM32 na pokładzie (stm32-p107 z OLIMEXu)....
Uff, wreszcie ruszyło uparte zwierze. Wersja tego oprogramowania to Keil uVision MDK-Lite Version 4.21. Obecnie jest to najnowszy soft pobrany ze strony: https://www.keil.com/download/product/ Nie chcę się chwalić a nawet nie wiem czy na tym forum mogę takie coś zrobić ale dla mojego bezpieczeństwa nie zrobię tego tak po prostu ale dla tych co będą...
Bo jest napisana na magicznych hexach (po części) :) Kawałek tejże inicjalizacji: [syntax=c]void SystemInit (void) { /* Reset the RCC clock configuration to the default reset state(for debug purpose) */ /* Set HSION bit */ RCC->CR |= (uint32_t)0x00000001; /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ #ifndef STM32F10X_CL RCC->CFGR &=...
Witam, Od niedawna planuję przejść na mikrokontroler stm32f407vgt6 z stm32f103vct6, ze względu na szybszą pracę. Niestety napotkałem na bardzo poważny problem. Aby przedstawić jak najlepiej dany problem, zamieszczę printscreen z analizatora stanów. http://obrazki.elektroda.pl/6745447700_1... Na wykresie widzimy przerwanie pracy timera,...
Zamówiłem dwa Cortex'y STM32F103ZET6, czekam na przesyłkę... W między czasie, patrzę na przykłady z STM32 i nie mogę się nadziwić.... no cóż czasem człowiek potrafi skomplikować proste sprawy... Używam startup.S i vectors.c od kolegi Freddie Chopin. Niby wszystko ok, ale jak ktoś przerabia jakieś rzeczy z USB, niech zwróci uwagę na dwie rzeczy. w ST...
Witam wiem ze temat wałkowany, czytając poprzednie posty jak zwykle mam mętlik. STM32F103ZET Używając: monitor reset halt (lub reset_halt ) load dla ram i flash program staje zawsze w startup.s: Reset_Handler: /* +---------------------------------------... | Initialize the process stack pointer +---------------------------------------...
Wygląda to tak, nie posiadam takiej wiedzy żeby tu coś samemu zmieniać może powiesz mi co jest nie tak :) [syntax=c] .syntax unified .cpu cortex-m7 .fpu softvfp .thumb .global g_pfnVectors .global Default_Handler /* start address for the initialization values of the .data section. defined in linker script */ .word _sidata /* start address for the .data...
Dzień dobry, Sprawa wygląda tak, że chciałem zrobić zadanie 8.4 z poradnika na temat stm32. Wymodziłem sobie takie coś: Open On-Chip Debugger 0.9.0-dev-00186-g30203b3 (2014-11-09-22:49) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxyg... Info : The selected transport took over low-level target control....
Nie korzystam z systemInit ani zadnej innej biblioteki, cały kod który mam jest napisany w 100% przeze mnie. Czyli dobrze założyłem, to 16Mhz, pytanie ktore dalej pozostaje bez odpowiedzi to co jest nie tak ? :( Chyba jednak nie cały. Nie napisałeś nic o środowisku - obejrzyj SystemInit(). Najbardziej nie tak jest to, że nie pokazałeś poprawionego...
W drugim projekcie - właściwej aplikacji przed włączeniem przerwań zmieniasz offset czyli tak jak masz w funkcji SystemInit, a Twój VECT_TAB_OFFSET jest rozmiarem bootloadera zaokrąglonym w górę do 0x200. Zdecydowanie lepiej zrobić to w bootloaderze, bo niby czemu zadanie to ma być powierzone aplikacji? 4\/3!!
Witam, na początek to niech kolega zerknie na płytkę i nie jest tam zainstalowany 25MHz tylko 8MHz rezonator kwarcowy. Druga sprawa, po nazwie pliku domyślam się, że to CoCoox. Jeśli tak to musisz zmodyfikować dwa pliki startup aby przed main wywołać plik konfiguracji zegarów (SystemInit czy coś takiego). Dodatkowo musisz zmodyfikować obliczenia pll...
Wygenerowałem sobie prosty projekt na układ STM32F070CBTx w CubeMX i odpaliłem w Keilu. Jedyne co włączyłem w CubeMX-ie to w RCC zegar - zewnętrzny kwarc 12 MHz i USB_FS skonfigurowane jako VCP (CDC). Po załadowaniu do Keila i skompilowaniu programu wgrywam go (J-Linkiem po SWD) do mojego układu na płytce. I nic się nie dzieje, a komputer (do którego...
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 ****************************************...
(at)sulfur Dopiero teraz znalazłem czas żeby dalej zająć się CANem. Ustawiłem tak jak mówiłeś i dalej nic. Nie mam pomysłu co sprawdzić . Tak jak wcześniej wspomniałem mam przejściówkę USB/CAN za pomocą której próbuję przetestować CANa. Program do obsługi tej przejściówki w ustawieniach transmisji wygląda następująco : http://obrazki.elektroda.pl/8802608800_1...
Jest pull-down. Jest podawany stan '1' na pin WAKEUP. Dodałem kod jaki proponował "dziechu". Program osiąga linię: PWR_EnterSTANDBYMode(); , dalej nie wykonuje się (tak jak powinno być). Podanie stanu '1' na WAKEUP nie powoduje zresetowania procesora. Dodam, że pracuję na kwarcu 8[MHz] z włączonym PLLx3 czyli 24[MHz]. Zmieniony kod: [syntax=c]#define...
Witam Dopiero zaczynam swoją przygodę z mikroprocesorami z rodziny ARM. Posiadam moduł prototypowy: STM32 LCD3.2" ARM Cortex, z procesorem: STM32F103VCT6 . Korzystam ze środowiska Kyle uVison4. Problem pojawił się przy próbie uruchomienia magistrali I2C. Obecnie mam 3 ATMEGI połączone ze sobą po I2C i między nimi komunikacja przebiega prawidłowo. W...
Keil startując CPU odpala funkcję SystemInit() która to jest zdefiniowana w pliku system_stm32f4xx.c . Plik ten możesz napisać sobie sam, lub możesz skorzystać z gotowca. Gotowce masz w przykładach od STM lub możesz wygenerować go za pomocą Excela jak wspominał kolega imarszi . Tutaj masz opis jak się tym narzędziem poslugiwać i skąd je wziąć : Clock...
(at)BlueDraco:"Pudło. Przy uruchomieniu aplikacji z Flash, pamięć Flash jest mapowana na adres 0, a domyślnie VTOR zawiera 0 (a przynajmniej powinien)" Hmm, w takim razie to ja czegoś nie wiem. Owszem, może tuż po resecie tak jest, ale potem, nie wiem czy można to nazwać "w aplikacji" wykonuje się kupa kodu inicjująca pracę procesora, który to kod jest...
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...
Rozważmy na początek taki kod: [syntax=c] #include "stm32f10x.h" void Delay(unsigned int delay); void SetClock(); int main() { FLASH->ACR = 0x10; FLASH->ACR = 0x00; FLASH->ACR = 0x10; SystemInit(); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GP... ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode...
Chciałbym zrealizować komunikację pomiędzy aplikacją napisaną w C# a stm32 Discovery . Mam w aplikacji 4 przyciski . Każdy wysyła coś innego do stm32 . Oto kod z Coocoxa [syntax=cpp] #include <stdio.h> #include "stm32f4_discovery.h" #include "usbd_cdc_vcp.h" /* Private macro */ /* Private variables */ uint32_t button_sts; __ALIGN_BEGIN USB_OTG_CORE_HANDLE...
Reasumując: 1. Włączasz zasilanie = nie działa 2. Wykonujesz reset STM'a = działa ? Mógłbyś jeszcze "main'a" pokazać, albo najlepiej odchudź kod do obsługi tylko SPI i wrzuć cały projekt. dokładnie... Wydaje mi sie że SPI po uruchomieniu mikrokontrolera nic nie wysyła, dopiero po resecie. Nie mam oscyloskopu aby to potwierdzić. int main(void)...
No mówiłem, że po kilku modyfikacjach, bo kompilator krzyczał, że niema paru rzeczy. ;) Co do problemu. Stos się raczej nie przepełnia. Podczas debugowania szczytowa wartość rejestru sp to 0x1fbc czyli jakieś 44 bajty. Sam program również odchudziłem do granic możliwości i zauważyłem pewną rzecz. Tutaj cały obecny program. [syntax=c] #include "stm32f0xx.h"...
(at)Freddie no fakt, trzeba by często w to trafiać. Sprawdzę to jeszcze u siebie jak wrócę z roboty, teraz nie mam STMa pod ręką. A mimo wszystko nalegam, aby Autor pokazał kod asemblerowy programu. Dodano po 2 Data race o którym piszesz faktycznie tam jest - wczytałem się wreszcie porządnie if((zapalona) && (TIM9->CNT > 5000) ) pomaga...
Pobawiłem się z tym trochę, niestety coś mi dalej nie wychodzi. W pliku stm32f10x.h przedefiniowałem częstotliwość HSE (domyślnie do Connectivity Line była 25000000, zmieniłem na 14745600). Zmieniło to tyle, że na terminalu wyskakiwały inne krzaczki, niż wcześniej. Pogrzebałem dalej. Częstotliwość mnożona przez 5 faktycznie wychodzi za duża. Puściłem...
Witam Sprawa następująca. Kod pisany pod ZET6 z uwzględnieniem ograniczeń na słabszy procesor C8T6. Wszystko poza USB śmiga. Przy podłączeniu USB żadnej reakcji od strony komputera. Podłączyłem D+ D- do oscyloskopa i żadnej reakcji. Jakby był martwy. Sprawdziłem miernikiem od samego procka do samego gniazda ostatniego i przewodzą z przewodnością 22...
Witam. Postanowiłem zgłębić tajniki mikrokontrolerów STM32. Wybór padł na procesor STM32F3 Discovery. Mam problem z poniższym kodem. Jest to przykład działania przetwornika ADC. Problem polega na tym, że nie wiem dlaczego to nie działa. Uruchamiam debugger, biorę krokową pracę, a program w zasadzie zatrzymuje się na linii ADC1ConvertedVoltage jest równa...
Volatile i nigdzie nie używana, system_init() wszystko pozmieniane jak trzeba. Uarty pracują poprawnie, RTC teoretycznie też.
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...
a pytanie brzmi? bo różnica jest oczywista i wystarczy sie zastanowić co te funkcje przynajmniej powinny robić. 1 konfiguruje cały układ zegarowy 2 wyłącznie startuje PLL
Standardowo jest taktowany 168MHz na wewnętrznym źródle sygnału: Dodano po 13 Dodano po 28 [syntax=c] /** ****************************************... * (at)file system_stm32f4xx.c * (at)author MCD Application Team * (at)version V1.0.0 * (at)date 30-September-2011 * (at)brief CMSIS Cortex-M4 Device Peripheral Access...
Może za krótko czekasz po włączeniu zasilania i próbujesz komunikować się/inicjalizować zewnętrzne urządzenie zanim zdąży zakończyć sekwencję POR. Mogę tylko gdybać bo nie wiem co masz do tego uC podłączone, ale widać że jakieś magistrale szeregowe masz wyprowadzone. No ale koniec sekwencji POR oznacza wykonanie kodu z Reset Handler ? [syntax=c]int...
Cześć, Platforma: STM32F769I-DISCO, środowisko: System Workbench for STM32 Wydawało mi się, że poprawnie skonfigurowałem FreeRTOS, ale ten znowu mnie zaskoczył :) Jak tworzę wątki przed vTaskScheduler(), to wszystko działa super, ale jak próbuję stworzyć wątek po uruchomieniu planisty, to wątki nie uruchamiają się. Może czegoś nie rozumiem, ale wydaje...
Wygląda to na nieprawidłowo zdefiniowaną prędkość transmisji. Z jaką częstotliwością pracuje STM? W jakim środowisku to programujesz? Jeżeli używasz na starcie funkcji SystemInit(), to sprawdź czy HSE oraz SystemCoreClock mają prawidłowe wartości; odpowiednio 8000000 oraz 168000000. To jest konieczne jeżeli używasz nieszczęsnego SPL'a.
Cześć, Ponieważ pojawiła się prośba o możliwość udostępnienia uproszczonej wersji na inny uC to przedstawię krótką instrukcję jak dostosować projekt do potrzeb. Generalnie w obecnej wersji obsługiwane są dwie rodziny procesorów czyli STM32F4xx i STM32H7xx - prawdopodobnie nie powinno być większych problemów z innymi podobnymi układami STM natomiast...
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,...
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 =...
Witam. Jestem początkujący w świecie st32 i na początek stworzyłem sobie projekt w którym mam tylko pliki : main.c , startup - który dołączył keil (usunięte 3 linie odpowiedzialne za automatyczne uruchomienie funkcji SystemInit), Oraz 3 pliki z CMSIS: stm32f10x_it.c , stm32f10x_it.h , system_stm32f10x.c . Program wygląda następująco: [syntax=c]#include...
No dobra, dodałem w pliku startup taki fragment kodu: [syntax=armasm]movs r1, #0 b LoopCopyDataInit1 CopyDataInit1: ldr r3, =_siccmram ldr r3, [r3, r1] str r3, [r0, r1] adds r1, r1, #4 LoopCopyDataInit1: ldr r0, =_sccmram ldr r3, =_eccmram adds r2, r0, r1 cmp r2, r3 bcc CopyDataInit1[/syntax] Przy deklaracji każdej funkcji w pliku nagłówkowym main oraz...
Jeśli nie wiadomo, o co chodzi, to chodzi o Windows 8 U mnie wszystko chodzi bez problemu pod win8.1 64bit. Spróbuj zrobić nowy projekt, najprostszy - wybierz tylko typ procesora, a w pliku main.c wstaw tylko SystemInit(); - zajmuje to kilkaset bajtów, skompiluj i zaprogramuj - zobaczymy czy pójdzie. P.S. W Repository musisz zanaczyć CMSIS core i MISC....
o liniach PA13 i PA14 czytałem oczywiście ale u mnie te porty są na liniach 19 i 20, ja w programie używam tylko linii PA9 i PA8 więc odpada chyba, że kompilator coś dodał. Czy komenda GPIO_StructInit (&GPIO_InitStructure); to jest inaczej SystemInit(), który często na początku programu się wrzuca? Tutaj faktycznie tego zapomniałem dodać. Dodano po...
Witam wszystkich. Od jakiegoś czasu ćwiczę STMy. Przyszedł czas na bootloader, ale stanąłem w zasadzie na początku drogi. Mój zestaw to: - ARM GCC (Linaro) w wersji 4.7 2012q4 - CooCox - STM32F4 Discovery - przykład AN3965 "STM32F40x/STM32F41x in-application programming using the USART" Po kolei: - istniejący i działający program zlinkowałem z użyciem...
Cześć, nadszedł czas zmierzyć się z linkerem i innymi cudami ;) Wybaczcie, jeśli będę pisał głupoty, dopiero próbuję to ogarnąć :D Czy możecie podpowiedzieć jak uwzględnić w Eclipse dwa warianty kompilacji i linkowania: 1. program w trybie DEBUG, który startuje klasycznie z 0x08000000 2. program w trybie RELEASE, który ma startować z 0x08002000 Odnośnie...
Cześć, mam problem ze startem zewnętrznego kwarcu 16 MHz w STM32F030K6T6. Nota katalogowa mówi, że akceptuje on oscylatory z przedziału 8 - 32 MHz. Przy kwarcu są oczywiście dwa kondensatory 15 pF. W domyśle chciałbym uruchomić PLL x3, żeby mikrokontroler pracował z prędkością 48 MHz. Zmienna HSEStatus zostaje ustawiona na 0 po wygaśnięciu timeoutu...
Witam. Mam problem z wgrywaniem programu do STM32F0 przez ST-LINK. Środowisko, z którego korzystam to Keil (próbuje na nie przejść). Układ programuje się bez wyrzucania jakichkolwiek błędów, ale zaczyna działać dopiero w przypadku kilkukrotnego zresetowania (w tym przypadku proste świecenie diodą). Wrzucam zrzuty konfiguracji Keil'a. Proszę o odpowiedź....
Witam, Mam problem z komunikacją STM32 z komputerem. Moja płytka to STM32L-Discovery [url=http://www.st.com/internet/evalboar... Chciałem napisać sobie najprostszy program do komunikacji z komputerem. Jak na razie nic nie działa. Pisałem program z pomocą książki "Mikroprocesory STM32 w praktyce" Krzysztofa Paprockiego. Musiałem...
Witam, Pozwolę sobie trochę odgrzać temat, jako że mam bardzo podobny problem. Korzystam z zestawu STM32F401VC Discovery, w którym mam już wbudowany żyroskop L3G4200D, podłączony za pomocą SPI1. Próbuję odczytać wartość rejestru WHO_AM_I, ale jak do tej pory program grzęźnie w pierwszej pętli while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S...
Super, jakoś udało mi się Eclipsa uruchomić fakt że w innej wersji Version: Mars Release (4.5.0) ale bez problemu spiąłem to. Przerzuciłem kod i co się okazało. Ruszył. Ale do szczęścia trochę brakuje, okazuje się, że nie rozpoznaje USB. Tzn ten sam dokładnie kod śmiga na Keilu, a na eclipse już nie. definicje: DEBUG USE_FULL_ASSERT TRACE OS_USE_TRACE_SEMIHOSTING_DEBUG...
Witam, napisałem mini-programik na odczytywanie wartości prądu z dwóch kanałów ADC i zapisywanie ich przez DMA. Po wciśnięciu przycisku rozpoczyna się pojedynczy pomiar z dwóch kanałów ADC1. Po pierwszym wciśnięciu przycisku wartości zapisywane w tablicy są poprawne, jednak po następnych wciśnięciach przycisku wartości te nie zmieniają się. W manualu...
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...
Witam. Zaczynam dopiero swoja przygodę z STM32. I na samym początku mam problem. Posiadam płytkę z stm32f429ZIT6U i chciał skonfigurować sobie RCC i GPIO, zgodnie z książką Galewskiego. Po przewertowaniu Internetu napisałem kod, który miałby konfigurować te dwie funkcje. W celu sprawdzenia chciałem aby program zapalił tez odpowiednie diody. Niestety...
mrh Nawiązując do tematu. Mam problem z tym akcelerometrem. Raz zaskoczył i działał gdy odpaliłem projekt z lis302dl, ale niestety już nie działa. Po czasie ogarnąłem ze to lis3dsh. Chciałbym w końcu uruchomić ten sprzęt. Używam CooCox IDE #include <stm32f4xx.h> #include <stm32_ub_led.h> //#include <stm32_ub_spi1.h> //#include <stm32_ub_lis302dl.h>...
Jeśli w pliku .lss nigdzie nie znalazłeś wywołania tej funkcji, to nie ma znaczenia co w niej jest. Pokaż lepiej jak ją wywołujesz, cały łańcuch wywołań od main() albo od SystemInit(). 4\/3!!
Dzięki, dobrze wiedzieć, jak coś to zgłoszę się do Ciebie po najnowsze OpenOCD. Na razie spróbuje na tym starociu co mam - 0.6.1. Przeglądnąłem sekcję RCC. Znalazłem tam jakieś różnice w rejestrach do włączania zegarów dla poszczególnych peryferiów i ich resetowania. Co do samego ustawiania SYS_CLK nie znalazłem różnic, czyli wszystkie funkcje w projekcie...
BOOT powinien być podciągany za pomocą 10K, a nie 100K Prawda , zalecane są 10K , choć zdaje mi się że gdzieś ST mówiło że max R dla BOOT to 100K , ale nie mogę teraz tego znaleźć. Zmieniłem na 10K. właściwie te piny nie są ściągnięte do masy Piny BOOT są połączone do masy przez zworkę. pin VBAT nie może sobie wisieć w powietrzu If no external battery...
Albo inaczej - dlaczego przy włączonych tych opcjach kompilacji program uC ląduje w DH bez SystemInit, a działa poprawnie _z_ SystemInit ? Wrzuć projekt (lub choć ten listing assemblera), albo udaj się do wróżki (;
Witam, Mam problem z nawiązaniem komunikacji między dwoma zestawami STM32F103ZET6+nRF24L01. Bazowałem na informacjach z tej strony: "[url=http://maniacbug.github.io/RF24Net... Ściągnąłem odpowiednie pliki z klasami RF24 i RF24Network, oraz klasą SPI(wykorzystywana przez poprzednie klasy), przerobiłem je pod STM32, po czym spróbowałem...
Domyślnie SystemInit ustawia nominalną częstotliwość maksymalną dla procesora, czyli 168 MHz. Można to skonfigurować w pliku zawierającym funkcję SystemInit().
Zobacz też czy nie wywołujesz dwukrotnie funkcję SystemInit: w startupie oraz mainie. SystemInit tylko w mainie. No to zrób step into do tej funkcji debugerem i zobacz co jest nie tak. Prawdopodobnie ta funkcja odblokowuje przerwania gdzie nie powinny one zostać odblokowane przed vTaskStartScheduler. W tym miejscu wyrzuca: The init function pointer...
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...
No właśnie samo ustawienie w pocjach USE_FPU nie bardzo pomagało. Dopiero jak sam je zadeklarowałem to wtedy. W funkcji SystemInit jest kod odpowiedzialny za FPU : SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); więc wszystko powinno grać. Ok dzięki za odpowiedź będe jeszcze testował z optymalizacją, mam nadzieje że pomoże.
Jak już skompilujesz to pamiętaj, aby fpu włączyć. Rozwiązaniem jest wykorzystanie CMSIS'a lub dodanie kodu do SystemInit() w pliku system_stm32fxx.c kodu: [syntax=c] SCB->CPACR |= ((3UL << 10*2) | /* set CP10 Full Access */ (3UL << 11*2) ); /* set CP11 Full Access */ [/syntax]
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...
Jeśli napiszesz pusty SystemInit, to zegar zostanie taki, jak po Reset, czyli wolny z wewnętrznego oscylatora. Z drugiej strony jeśli już się używa F4, to nie po to, żeby chodził na 8 MHz. Tak to ja robię często w mikrokontrolerach z Cortex-M0, kiedy nie zależy mi na wydajności.
Witam, Zaprojektowałem płytkę PCB z procesorem STM32F405RGT6, w fazie projektowej postanowiłem, że do wgrania programu na procesor użyję bootloadera. Po zlutowaniu podłączyłem procesor pod komputer, uruchomiłem program "Flash Loader Demonstrator", wgrałem mu następujący program: #include <stm32f4xx_gpio.h> #include <stm32f4xx_rcc.h> GPIO_InitTypeDef...
stm32 f103rb ssd1963 stm32 stm32 adres
myjka parowy prawa komutacji naprawa kierunkowskaz
schemat kabli radia napęd silnik wycieraczek
Renault Scenic 1.6 16V - kontrolka przed nagrzewaniem Zamienność tranzystorów KTC3205-Y-AT i 2SC3205