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...
Pozwólcie na dorzucenie jeszcze krótkiego rysu historycznego. Jeszcze nie tak dawno silna była grupa wyznawców pisania w ASM, którzy mówili bardzo brzydkie rzeczy o C - przecież nic tak nie cieszy rasowego programisty jak "ręczne" mnożenie dwóch liczb 16bit zapisanych w U2 - tylko TAK pisze się OPTYMALNIE ;). Z biegiem czasu ich argumenty bardzo straciły...
Jak widzisz na załaczonym obrazku nie masz ustawionych wektorów. Ale akurat mam coś takiego gotowego i Ci podeślę :) Zainstaluj Cube. Plik z wektorami weź stamtąd. Możesz też zaimportować projekt i wyrzucić HAL - będziesz miał przy okazji najświeższy CMSIS
1. Tych plików nigdy nie dołącza się bezpośrednio - zawsze przez nagłówek danego układu, czyli np. stm32f4xx.h 2. Masz źle ustawione "include path" w opcjach kompilacji. ja niewiem co jest z tym kompilatorem i dlaczego ciągle i ciągle z uporem maniaka wywala mi błąd w 1 lini To nie kompilator - to raczej przypadek tak zwanego PEBKAC, więc odrobina autorefleksji...
Rozumiem że odpoweidnie pliki .c masz w projekcie, jak nie to tu masz repozytorium https://github.com/ARM-software/CMSIS_5/...
Trzeba zdefiniować STM32F10X_CL - zwykle jest to zrobione w pliku stm32<cośtamcośtam>_conf.h, ewentualnie w stm32f10x.h, ewentualnie (najlepsze rozwiązanie) po prostu podajesz to do kompilatora poprzez "-D". 4\/3!!
Dodałem tylko twój makefile i poedytowałem na różne sposoby ścieżki, ale cały czas krzyczy, że brakuje plików nagłówkowych. No to może warto by było podać ścieżki do tych plików? ;) Properties -> C/C++ General -> Paths and Symbols Dalej już samodzielnie.
A biblioteka to CMSIS
Tylko że tam jest generowany koda w HALu a ja mam w CMSIS
W uzupełnieniu do poruszonej tu kwestii wydajnego obliczania FFT na PI Pico w środowisku Arduino, to ukazał się ciekawy materiał: https://mikrokontroler.pl/2024/02/28/obl... (na jego początku jest link do innego bloga gdzie jest więcej...
Nie piszę z biblioteką, ale spróbuj wrzucić konfigurację przerwań po timerze, a najlepiej zamiast ładować tam tę beznadziejną strukturę, użyj NVIC_EnableIRQ(TIM1_CCIRQn) czy jakoś tak, bezp. z CMSIS.
No w sumie nic dziwnego/pamięciożernego tam nie znalazłem, includuje sobie parę funkcji z arm_math i tabele do FFT .
Zapis który przedstawiłeś jest skrajnie nieczytelny i podatny na błędy. Fakt, łatwo można się pomylić. Do konfiguracji przerwania będę jednak używał funkcji z CMSIS.
Funkcja NVIC_SystemReset() z CMSIS.
Widziałem gdzieś tam (chyba w bibliotece peryferyjnej STM32 albo w CMSIS dla STM32), no ale co z nimi? Mój startup robi z grubsza to samo, dodatkowo korzysta z dwóch stosów i jest krótszy (tego typu pętle, nie wiedzieć czemu, zawsze kompilują się do wieeeeeeeelu rozkazów assemblera, choć wystarczy te kilka które jest u mnie). 4\/3!!
Nie wiem jaki jest skrypt linkera ale jezeli nie rozdzielasz to są tym samym stosem - jest tylko jeden. Kontroluje to odpowiedni bit w rejestrze. Dodano po 7 Jaki dokładnie bład Ci zwraca Pewnie brak definicji _estack Jezeli tak to dodaj do pliku linkera _estack = __stack; (lub cokolwiek jest w skrypcie Freddiego) To jest wymagane jezeli używasz CMSIS
Pliki .H to nie żadne biblioteki tylko pliki nagłowkowe. To nie arduino. Musisz zaincludowac pliki cmsis i hal oraz a pewnie też stdlib.h i stdint.h
Czołem, zajrzyj do plików core_cmFunc.h i core_cmInstr.h - sam zobaczysz, że "nic" ciekawego tam nie ma ;) Jedynie dołączają kolejny plik zależnie od używanego kompilatora. Poniżej wycinek z core_cmFunc.h : FreddiegoChopina . O wtyczce się nie wypowiadam, bo nie znam ;)
przejrzalem w datasheecie wszystkie AHBx APB w rejestrze i nic takeigo nie ma ... albo niewidze/nie moge znalezc etc...chyba ze chodzi o to odblokwanie w NVIC to jest funkcją CMSIS Enable_irq
Dodaj bibliotekę CMSIS: \CMSIS\Core\CM3\stm32f10x.h
Jeżeli jesteś początkujący tak jak ja to polecam System Workbench for STM32. Instalujesz i masz wszystko potrzebne, jeżeli będziesz pisał na rejestracjach to wywalasz hal i zostawiasz CMSIS. Można w ten sposób zaoszczędzić czas na środowisko a zacząć pisać programy.
Ewentualnie jak ładnie i zdrowo wyłączyć i włączyć wszystkie przerwania w Cortex-M3 STM32F103. Jeśli korzystasz z FreeRTOSa to po prostu wrzuć tam portENTER_CRITICAL() i po sprawie. Jeśli nie, to użyj funkcji z nagłówków CMSIS (__enable_irq() i __disable_irq()). 4\/3!!
(at)PiotrLenarczyk Nieco wątpliwa biorąc pod uwagę wielość dostępnych urządzeń, oraz to że CMSIS jest powszechnie akceptowanym standardem.
Tak - 0 to najwyższe przerwanie. Warto jednak stosować pewne ułatwiacze, np zamiast przesuwać o cztery, przesuwać o __NVIC_PRIO_BITS itd. No a najwygodniej akurat powalczyć z użyciem "funkcji" (bo to prawie makra) z CMSIS. 4\/3!!
AVE... Ja się "wychowałem" po trochu na EdW, EP i PE, a po trochu na Poradniku Radioamatora. Do tego miałem książkę o elektronice autorstwa radzieckiego, z której dowiedziałem się wszystkiego o lampach, elektronach, protonach i Leninie... Teraz spędziłem uroczą godzinę, by się zorientować, czy PlatformIO dodaje do frameworku Arduino STM32Duino automatycznie,...
BTW - jakbyś chciał faktycznie robić takie pliki, to nie ma sensu ich dziargać ręcznie. Jedyna sensowna opcja to skorzystanie z plików SVD które są dostępne od ARM. Na szybko znalazłem je na giithubie ( https://github.com/posborne/cmsis-svd ), ale oficjalna paczka jest do pobrania też ze strony ARM.
błąd już w trzeciej linii. Dodatkowo potrzebujesz plik asm z wektorami i plik linkera aby to wszystko zebrał do kupy. Bez tego żaden program się nie uruchomi :) Po co się katować? Zaznacz Stm32Cube project. Jak nie chcesz HAL to skasuj jego pliki. będziesz miał wszystkie **aktualne** pliki CMSIS, statup i pliki linkera.
Nie wiem czemu wg was te linki nie działają :) Daje bezpośredni adres: http://img36.imageshack.us/img36/6918/st... http://img27.imageshack.us/img27/196/bez... Dorzucam projekt. Mam nadzieje ze się odnajdziesz. Myślę, że za wszystko odpowiada skrypt linkera + startup. Na chwile obecna ustawione jest: lib/etc/ld/stm32f103vb.ld (zly) i lib/stm32/CMSIS/Core/CM3/startup/arm/sta...
masz tu projekt,. Uwagi: nie łąduj wszystkiego co znajdziesz w internecie. do tego projektu naprawdę nie potrzebujesz CMSIS-DAP, DSP cz NN. Możesz je wyłaczyć z budowania ale ja Ci to usunąłem po prostu. W katalogiu debug masz już gotowy kompilat
(at)jackfinch Nie ma błędów w oznaczeniach -bo one są do projektu z gitlab. Nie mas tu żadnego ST-Linka!! https://gitlab.com/stmx/cmsis-dap-stm32-... Tu jest projekt z tymi pinami. Możesz je sobie zresztą zmienić w pliku gpio.h na dowolne inne aka przeróbka to taka sztuka dla sztuki. I o to właśnie chodzi. Dodano po 2 (at)tronics CMSIS-DAP...
(at)skim Czy to jest chińska podróba ST-Linka? Jeżeli tak, to trzeba szukac starszych driverów, bo nowe chyba starają się to wykryć! Jeżeli problemy będziesz miał dalej - a oprogramowanie ST-Link nie jest otwarte ani publicznie dostępne ale możesz zawsze przerobić chińskiego st-linka na CMSIS-DAP programator. Jak to zrobić? 1. Otwórz chińskiego stlinka...
Nie używaj "magic numbers". Nikt tego nie będzie analizował w tej formie. Masz w CMSIS piękne definicje bitów i ich użyj. Generalnie tak napisanej inicjalizacji nawet nie będę oglądał,
To NIE są pliki CMSIS, tylko pliki nagłówkowe ST. CMSIS obejmuje interfejs funkcji niespecyficznych dla typu układu, których realizacja może być jednakowa dla wszystkich układów z danym rdzeniem albo różna w różnych układach, ale funkcjonalność jest zawsze ta sama, niezależnie od producenta układu. To, co widać powyżej - to funkcjonalność specyficzna...
Biblioteki czy plików nagłówkowych? Jak to drugie to: - www.st.com - Products → Microcontrollers → STM32 32-bit ARM Cortex MCUS → STM32F4 Series → STM32F407 - (po lewo) Software → STM32Cube -> (w nowo otwartym oknie) STM32CubeF4 - (na samym dole) Get Software → Download - w rozpakowanym archiwum: Drivers → CMSIS...
Właściwości projektu i usuwasz biblioteki np:hall lub nucleo i zostawiasz tylko cmsis. Pozdrawiam;)
Wygląda na to, że się całość się jakoś skompilowała pomimo warningów i zlinkowała (bo powstały mi pilki hex i elf). ...aczkolwiek rozmiar pliku wynikowego *.hex = 34 bajty każe przypuszczać, że jeszcze sporo przede mną... Brakuje Ci tablicy wektorów i startupa. Prościej będzie Ci zacząć od kompletnego przykładu, ewentualnie od przykładu + modyfikacje...
"Tak też powinno być dobrze?" RCC->APB2ENR &= ~RCC_APB2ENR_IOPDEN Tak, tak tez jest dobrze bo te oba makra daja taka sama wartosc. Masz racje Twoja wersja jest lepsza bo korzysta tylko z CMSIS.
(at)marycyś Funkcja SysTick_Config znajduje się w nagłówkach CMSIS. Poszukaj czy masz je dołączone do projektu.
Ok. Skoro nikt nie działał z klasą HID to może ktoś ruszał klasę MSC? Byłbym wdzięczny za nawet ogólne uwagi / spostrzeżenia związane z praktycznym uruchamianiem OTG w STM32. Zastanawiam się dlaczego w CMSIS nie zdefiniowano rejestrów OTG... Na razie czuję się jak R. Crusoe :) Pozdrawiam
Jak to zrobić: 1. włączasz przerwanie od timera w NVIC 2. Konfigurujesz timer, żeby generował jakieśtam przerwanie Odpowiedzi na pytania: 1. No bez timera raczej nie zrobisz przerwań co jakiś czas [; 2. Funkcja przerwania po prostu musi nazywać się DOKŁADNIE TAK SAMO jak jest wpisana w tablicy przerwań (zwykle CośtamCośtam_IRQHandler() ) 3. Hę? Przykłady...
Gdybyś "kombinował" w Keilu, nie miałbyś tych problemów... Po instaacji Keil ściągasz odpowiedni Pack dla Twojego uC oraz ARM::CMSIS i masz wszystko.
I kolejna sprawa o której już wspominałem to taka, że nie chce w projekcie mieć tysięcy plików, które nie będą mi do niczego potrzebne i których przybywałoby przy każdej aktualizacji distortosa. Warto tutaj dodać, że od dłuższego czasu całość jest zrobiona tak, że używając np. STM32F4 możesz po prostu wywalić wszystkie foldery innych rodzin mikrokontrolerów....
I jeszcze jedno uzupełnienie. 64-gdb-set confirm off (gdb) 64^done (gdb) 65-gdb-set width 0 65^done (gdb) 66-gdb-set height 0 66^done (gdb) 67-interpreter-exec console echo 67^done (gdb) 68-gdb-show prompt 68^done,value="(gdb) " (gdb) 69-gdb-set new-console on 69^error,msg="No symbol...
Abstrahując od bibliotek i tego się starajmy trzymać Biblioteki od ST są lewe. Biblioteka CMSIS od ARM jest dobra. [; 4\/3!!
Proponuję zainstalować eclipse a następnie SW4 czy tez zwane tez OpenStm http://www.openstm32.org/Downloading+the... Tam masz instrukcję co zrobić dla liuxa. Zaleta jest też taka że projekty wygenerowane przez CubeMx importują się bez specjalnego jednokliknięciowo. Masz wtedy najbardziej aktualne pliki CMSIS i HAL (jak...
Nie wiem, muszę sprawdzić. :) Ta płytka z LPC812 ma niestety małe piny wszędzie, także pewnie dopiero w weekend przy świetle dziennym się tym pobawię bo lutowanie tego po nocach mi się nie widzi. Ew. spróbuję na totalnie innych prockach, STMy mam okiełznane o wiele lepiej od LPCków. Pytanie tylko czy CMSIS-DAP to CMSIS-DAP, czy w wydaniu STM32 a LPC...
Jak masz dobrze ustawiony CMSIS, wywołaj funkcję SystemCoreClockUpdate() i sprawdź co masz w zmiennej SystemCoreClock.
Cześć, dotychczas podczas programowania wykorzystywałem jakieś IDE i automatycznie generowane projekty. Postanowiłem iść krok dalej i napisać własnego Makefile'a. Na razie wykorzystuję jeszcze skrypt linkera i plik startowy z IDE. Struktura projektu wygląda następująco: ├── Ac6LinkerScript.ld ├── Ac6Startup_stm32.s...
To chyba nie wina stosów. Jest różnica nazewnictwa funkcji obsługi przerwań pomiędzy FreeRTOS a biblioteką CMSIS. U mnie w identycznej sytuacji pomogło dodanie do pliku port.h (z katalogu SOURCE/portable/gcc/ARM_CM3) tych linijek: // To be complaint to CMSIS and ST standard peripherals library name convention. #define vPortSVCHandler SVC_Handler #define...
Ty wgrywając to po rs232 nie omijasz bootloader. Raczej go używa. A bootloader raczej liczy sumę kontrolną. Nie musisz kupować Jlinka za kilkaset złotych. Wystarczy że kupisz STM32 minimal development board za kilka kilkanaście złotych. Wgrywasz do niego plik hex https://github.com/x893/CMSIS-DAP/tree/m... używając firmowego bootloadera...
Sprawdzałeś do czego sprowadza się disable_irq? Rzeczywiście, zbyt szybko się ucieszyłem. A wyglądało tak pięknie... Swoją drogą to dziwne, że w CMSIS nie ma takiego rozwiązania.
Witam Pytanie może trochę banalne, ale mam z tym problem. Posiadam zestaw od Kamami STM32 Butterfly. Zainstalowałem IAR Embedded Workbench, ściągnąłem biblioteki stm32f10x_cmsis_v3.1.0 oraz STM32F10x_StdPeriph_Lib_V3.1.2, aby rozpocząć naukę programowania. Moje pytanie jest: jak to teraz połączyć, aby zacząć pracę?
zy obsługę przerwania mogę mieć w pliku main.c tak jak w avr czy musi to być plik-stm32f10x_it.c? Pliki stm32f10x_cośtam to jakby sterowniki urządzeń (GPIO, SPI, NVIC itd...). To są jakby "drajwery", a użycie ich, stworzenie ich konkretnej konfiguracji, inicjację struktur i inne rzeczy powinieneś umieścić w swoich plikach. W żadnym wypadku nie polecam...
Przejrzałeś choć mój makefile i opcje tego pluginu przed pytaniem? W moim makefile opcje odpowiedzialne za to są podane WPROST - ffunction-sections (kompilator), -fdata-sections (kompilator) i -gc-sections (linker) - teraz tylko je znajdź w parametrach plugina. Są tam na pewno, bo osobiście pisałem patch'a, który by je tam dodawał. Pozatym, ile razy...
to tylko pozostaje to SetPriority - ustawiać czy nie? A co jest do wygrania w tym konkursie? (; Jak chcesz zmieniać priorytet to ustawiasz. Jak nie chcesz - to nie (; Szczerze mówiąc, to ja w większości przypadków działam na jednym (domyślnym) priorytecie i jest OK - różne priorytety to różne problemy, a jak dorzucisz sobie do tego wywłaszczanie przerwań...
Tablicami NVIC się nie przejmuj. Korzystaj z funkcji dostarczonych przez CMSIS, w tym przypadku nie warto stosować rejestrów wprost. Konfiguracja Timera OK, choć kolejność nie należy do poprawnych. Przyjrzyj się jeszcze rejestrowi EGR. Przerwanie? Brak kasowania flagi skutkuje ciągłym jego wywoływaniem. Flagę kasuje się na początku przerwania. I taka...
Witajcie, od dłuższego czasu zastanawiam się nad użyciem mikrokontrolera STM32 jako procesora DSP. ST udostępnia bibliotekę DSP podobnie w CMSIS. Więc na pewno się da. Jednakże chciałbym dowiedzieć się coś na temat wydajności. Obawiam się że STM32 w przypadku np. realizacji 1024 punktowej FFT nie będzie umiał zrobić nic więcej. Czy ktoś ma jakieś doświadczenia...
Każdy nowy projekt (w nowym katalogu) generuje nowe pliki, razem z core_cm3.c, więc będzie trzeba za każdym razem zmieniać te wpisy lub podmieniać plik. Wystarczy zmienić plik źródłowy w folderze ..\CoIDE\repo\Components\54_M4 CMSIS Core\src\cmsis (to jest akurat dla STM32F4xx). W ten sposób zmodyfikowałem sobie wszystkie pliki, które potrzebuję na...
To jest błąd w CMSIS - pisałem o tym tutaj - http://www.freddiechopin.info/pl/artykul... Generalnie możesz więc sobie to poprawić ręcznie albo skombinować nową wersje CMSIS/SPL (w nowszych wydaniach z tego co wiem błąd jest poprawiony). Generalnie taki sam błąd wykryje też toolchain...
stm32fxx.h (btw. trzeba odkomentowac w nim linijkę, prawda ?) absolutnie nie (; wystarczy dołączać właśnie plik CMSIS-proxy.h, w którym odpowiednia definicja już jest. nie znajduje CMSIS-proxy.h. Nie pomaga dodanie do distortosConfiguration.mk (ręcznie) "distortos/source/chip/STM32/STM32F4/inc... w linijce z CONFIG_CHIP_INCLUDES. Może...
Jak wygląda sprawa z przerwaniami? Tam zamiast przerwań są używane callbacki. To nie tak jest. Callbacki są całkiem do czego innego. W programie HALowym, to użytkownik pisze obsługę przerwań sprzętowych (tak jak w klasycznym podejściu "rejestrowym") a specyfiką HAL jest tylko to że dostarcza pewnych gotowców na obsługę przerwań. Przykładowo weźmy uart....
No to ten projekt masz właśnie dla 767 Z CMSIS wyłączyłem z budowania DSP (trochę zajmuje kompilacja :)) - jak potrzebne to musisz dobie odptaszkować exclude from build.
Plik nagłówkowy mikrokontrolera można wyłuskać np. z paczki SPL pobranej ze strony ST. Dla Twojego STM32F103VBT6: [url=http://www.st.com/web/catalog/tools... (przycisk download na dole strony). Po rozpakowaniu archiwum: Libraries -> CMSIS -> CM3 -> DeviceSupport -> ST -> STM32F10x -> stm32f10x.h...
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...
Właśnie tak jest w przypadku AVR- siada się i pisze. A tutaj można powiedzieć klęska urodzaju. Niby czemu? Bierzesz sobie te pliki z CMSIS, siadasz i piszesz. Czego więcej Ci trzeba?
CMSIS jak najbardziej tak, ale tylko te które dotyczą rdzenia i peryferiów rdzenia (SysTic, Nvic, Mpu ). Te biblioteki traktuj jako praktyczny podręcznik.
Tzn masz na mysli system workbeanch for stm32? A gdy uwtorze tam projekt bez bibliotek to bede mial juz dodane biblioteki CMSIS oraz definicje?
Nie wiem jaki wpływ na to mógłby mieć CMSIS... W samym CMSISie jest generalnie tylko kilka definicji, np NVIC_EnableIRQ(). Musiałbyś wrzucić tu cały swój problematyczny projekt w wersji "złej". 4\/3!!
Ciekawe co treść takich magicznych funkcji ma dac? Oto moje rozwiązanie: [syntax=c]ReadData(Buff, Len); WriteData(buff,Len); [/syntax] Masz tu gotowca od ARM. google CMSIS-DAP Jezeli nie znajdziesz to: https://github.com/ARM-software/CMSIS_5/... i tam znajdź. częśc komunikacyjną zrób sobie jaką tam chcesz.
Ustawiłem FPU w Eclipsie w następujący sposób http://obrazki.elektroda.pl/8684137500_1... ale teraz wywala inne błędy... może czegoś nie ustawiłem ? 12:38:34 **** Incremental Build of configuration Debug for project Stm32f4 **** make all 'Building target: Stm32f4.elf' 'Invoking: Cross ARM C++ Linker' arm-none-eabi-g++...
Kod źródłowy w C programów z użyciem bibliotek jest znacznie (min. 1.5 raza, zwykle kilka razy) dłuższy niż operujący na rejestrach, o wynikowym nawet nie wspomnę. Co do jakości kodu CMSIS (zwłaszcza w przypadku STM32) niestety się z tobą zgodzę. Tego drugiego jest na sztuki więcej, więc fundujesz sobie powolną "jazdę po strukturach z dokumentacją...
Witam Zakupiłem książkę: "Mikrokontrolery STM32 w praktyce" w przykładach jest używana biblioteka CMSIS: STM32F10x STandard Peripherals Library V3.1.0 oraz STMicroelectronics Firmware Library W książce jest napisane, że można ją (je??) pobrać ze [url=www.st.com]strony niestety nie ma tam nawet działu download a wyszukiwarka prowadzi tylko do dokumentów...
Proszę bardzo: Program jest taki prosty testowy: #include "stm32f1xx_hal.h" int main(void) { HAL_Init(); while (1) { }; } A oto Build Log: Komunikaty występują przy kompilacji plików: - stm32f1xx_hal.c - stm32f1xx_hal_cortex.c - stm32f1xx_hal_flash.c - stm32f1xx_hal_gpio.c - stm32f1xx_hal_rcc.c ----------------Make...
(at)miszcz310 jednak widzę, że lubisz się katować. Jakoś przywykłem do pisania w atomie lub vimie i tylko zmapowanymi klawiszami myk. Zainstaluj sobie np. https://marketplace.eclipse.org/content/... i masz vim-a w eclipse. Ale jeżeli już naprawdę chcesz to debugować to wydrukuj sobie informacje dwarf (dwarfdump-em np), zobacz czy te symbole...
Cześć. Bawię się ostatnio STM32F103, zacząłem od poradnika ( https://obrazki.elektroda.pl/5819782800_... Jak rozumiem jest tutaj za pomocą rozkazu ldr ładowana do rejestru r3 wartość z pod adresu 0x80001d8, i tutaj jest mój problem. W poradniku pod tym adresem (oczywiście adres jest inny, chodzi mi o to że dotyczy tego samego rozkazu)...
Może ktoś ma pomysł z czym jest problem i jak go naprawić? Dodam jeszcze że problem ten występuje nawet w najprostszym programie (inkrementacja zmiennej). A czy jesteś pewien, że szablon z którego skorzystasz odpowiada dokładnie mikrokontrolerowi: STM32F103VD ? Ważna jest każda literka symbolu procka. Z tego co sprawdziłem, to zestaw Kamami ma mikrokontroler...
project clean i zbuduj ponownie wstaw konsole.
Z użyciem FwLib owinno być: Tej wersji się trzymajmy, W CMSIS są makra: PERYF_REG_BIT, czyli miast (1 << 1) piszesz DMA_IFCR_CTCIF1;
CMSIS jest dla każdego vendora kompatybilny. Na płytkach evaluacyjnych tak samo jak w przypadku st i ich stlinka jest J-Link. Wiele rzeczy narzuca ARM vendorom, np przestrzenie adresowe, vendor może tylko zdecydować ile tego tam upcha. Tak samo pisanie w C, jak klepie kod pod arm-none-eabi-gcc to vendor mnie mało interesuje, ba mogę na tym samym kompilatorze...
Witam, Mój komputer był już tak powolny, że byłem zmuszony przywrócić system, niestety... Teraz już komputer śmiga aż miło, ale niestety nie wszystko śmiga :not: Zainstalowałem, tak jak uprzednio (przed kilkoma laty) eclipse, bibliotekę HAL (czyli cały pakiet SW4STM32) i zintegrowany CubeMX. Niestety moje projekty nie kompilują się poprawnie. Wyskakuje...
SW to nadal jest prosta droga nawet dla początkującego, A co to jest to SW? podobno jest jakiś dobry tutorial na elektrodzie. System Workbench for STM32, środowisko oparte na Eclipse, chyba najstarsze środowisko dla STM32 oparte na gcc z obecnie rozwijanych. Czy jest jakiś przewodnik to nie wiem, wszystkiego nauczyłem się sam, a orłem nie jestem, więc...
Bo używasz maski, a nie bitu [syntax=c] #define GPIO_AFRL_AFSEL0 GPIO_AFRL_AFSEL0_Msk #define GPIO_AFRL_AFSEL0_0 (0x1UL << GPIO_AFRL_AFSEL0_Pos) /*!< 0x00000001 */ #define GPIO_AFRL_AFSEL0_1 (0x2UL << GPIO_AFRL_AFSEL0_Pos) /*!< 0x00000002 */ #define GPIO_AFRL_AFSEL0_2 (0x4UL << GPIO_AFRL_AFSEL0_Pos) /*!< 0x00000004 */ #define...
(at)bclax5 Proszę, kod bazowany na driverze stm32, zdecydowanie nie jest wyczyszczony ani kompletny ;). https://github.com/l0ud/openocd-puya U mnie działał wystarczająco, zanim zacząłem używać pyocd. Moje użycie: openocd.conf: source [find interface/cmsis-dap.cfg] source [find target/swj-dp.tcl] source [find mem_helper.tcl] adapter...
Sprawa rozwiązana: Okazało się że wrzucałem za dużo bibliotek. Wrzucam instrukcję jak za pomocą STM32CubeMX dołączyć biblioteki CMSIS: https://obrazki.elektroda.pl/8743416200_... Następnie: https://obrazki.elektroda.pl/7585447500_... Generujemy projekt, zakładam że ktoś kto tu dostał już to potrafi, ale daje linki gdzie...
Zarówno Arduino, jak i Raspberry Pi są platformami nie dla inżynierów, lecz dla hobbystów. Pozwolę się nie zgodzić. Z punktu widzenia zwykłego użytkownika zrobienie czegokolwiek z Linuxem (z niektórymi dystrybucjami bardziej, niż z innymi) jest drogą przez mękę. Dość popularna opinia wśród osób, które nie miały styczności ze współczesnym systemem Linux...
Dzięki :-). Ja z kolei wybrałem 434MHz ponieważ mogę w paśmie dla krótkofalowców przetestować nieco większe moce, poza tym liczyłem na trochę większe zasięgi niż przy 868. Nie używam niczego oprócz CMSIS i SPL-a, obsługę USB zrobiłem sam na podstawie książki Peczarskiego "USB dla niewtajemniczonych z przykładami dla STM32" :-)
Musisz ustawić bajt RDP pod adresem 0x1FFFF800 (option byte). Oczywiście wcześniej należy umożliwić sobie zapis pod ten adres. Wszystko jest opisane w PM0042. Być może w CMSIS udostępnione są jakieś gotowe funkje, ale to może wypowie się ktoś bardziej doświadczony. Jak sobie nie poradzisz z manualem to powalczymy razem :D
Ja w swoich zabawach z STM32 używam Eclipsa z pluginem GNU ARM (czy raczej obecnie GNU MCU), który ma coś takiego jak CMSIS Packs Manager: https://gnu-mcu-eclipse.github.io/plugin... i właśnie umożliwia podgląd rejestrów: https://gnu-mcu-eclipse.github.io/debug/...
Biblioteki ? Nie, na pewno nie :) Ale możesz użyć makr dostępnych w CMSIS. Wygląda to mniej więcej tak: [syntax=c] RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // enable clock for alternate function AFIO->EXTICR[0] = AFIO_EXTICR1_EXTI3_PA; AFIO->EXTICR[2] = AFIO_EXTICR3_EXTI8_PA; NVIC->ISER[0] = NVIC_ISER_SETENA_9 | NVIC_ISER_SETENA_23; EXTI->IMR = EXTI_IMR_MR3...
Witam, niedawno zacząłem swoją przygodę z stm32. Na początku korzystałem z HAL'a, ale po uruchomieniu zdecydowałem, że wolę CMSIS. No i tak pisałem program aż doszedłem do ADC. Na halu wyniki mam poprawne dla dwóch odczytów. Natomiast przy wykorzystaniu CMSIS (mam ściągnięty poradnik z elektrody), wyniki mam zawyżone o około 250 i dość niestabilne....
Tak wyglada kompilacja w consoli: [syntax=text] 16:18:26 **** Build of configuration Debug for project stm32F103RB_template **** cs-make all Building file: ../Setup/startup.S Invoking: ARM Sourcery Windows GCC Assembler arm-none-eabi-gcc -x assembler-with-cpp -Wall -Wa,-adhlns="Setup/startup.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Setup/startup.d"...
Pisałem gdzieś jak się je włącza, na co Freddie napisał, że są funkcje w CMSIS, które z resztą na forum też już wklejałem. [syntax=c]/** * (at)brief Enable Interrupt in NVIC Interrupt Controller * * (at)param IRQn The positive number of the external interrupt to enable * * Enable a device specific interupt in the NVIC interrupt controller. * The interrupt...
Napisałem Ci funkcję ustawiająca AF, celowo rozbitą na poszczególne kroki. [syntax=bash]FAILED: test/CMakeFiles/distortosTest.dir/main.c... /home/freddie/arm-none-eabi-gcc-8.3.0-19... -DLFS_NO_DEBUG -DLFS_NO_ERROR -DLFS_NO_MALLOC -DLFS_NO_WARN -I../test -Iinclude -I../include -I../source/board/ST_32F746GDISCOVERY/in... -I../source/chip/STM32/peripherals/GPIOv...
Przez czas jak pisałeś te dwa posty już ze 4x przejrzałbyś CAŁĄ listę przerwań, bo nie wiem skąd założenie, że koniecznie muszą być po kolei. P.S. Co złego jest w funkcji z CMSISa robiącej to samo co Ty tylko czytelniej? Przy okazji jak być jej użył, to nie robiłbyś zupełnie bezsensownego ORa... P.S.2. Funkcja z CMSIS jest typu inline - nie da się tego...
[syntax=c] RCC->APB1RSTR |= RCC_APB1RSTR_TIM2RST; //* [/syntax] ..... [syntax=c] NVIC->ICPR[0]=TIM2_IRQn; // * NVIC->ISER[0]=TIM2_IRQn; [/syntax] od tego jest CMSIS i jest całkowicie źle. [syntax=c]TIM2->SR &= ~TIM_SR_UIF; [/syntax] Nigdy na końcu przerwań. Unikałbym operacji read-modify przy zerowaniu flag. A to, że program niby nie...
tzn. są jakieś adresy z flasha, ale nie te które bym się spodziewał. Przede wszystkim musisz wiedzeć jakiego typu to HF bo adresy mogą być nieprecyzyjne. __disable_irq(); W HF-ie możesz sobie to już darować :) Czy ma może to związek z tym że w Hard Fault używany jest inny stos niż podczas wykonywania tasków? To sobie sprawdż jaki stos jest w użyciu....
Usuń znaczniki |= |= |= ) [syntax=c]NVIC->ISER[0] = (1 << 2);[/syntax] [syntax=c]NVIC->IP[2] = (9 << 4);[/syntax] Tutaj znowu niebezpieczne przypisanie, lepiej użyć operatora |=, ewentualnie ze wstępnym wyzerowaniem odpowiednich bitów. CMSIS nie gryzie, można go spokojnie używać dla przejrzystości kodu.
Na początku rozdziału o USART w reference manual jest taki podrozdział "USART implementation" (29.4). Masz tam rozpiskę jakie "ficzery" są dostępne w jakich dokładnie układach - widać tam, że 7-bitową długość danych mają tylko niektóre układy z tej rodziny. https://obrazki.elektroda.pl/2466354800_...
Twoja linijka od linkowania jest błędna. Biblioteki _MUSZĄ_ być na samym końcu, po wszystkich plikach obiektowych - tak działa linker. W ogóle to połowa flag które przekazujesz linkerowi nie ma dla niego znaczenia.
wiec mam 8MHz tak jak fabrycznie dostalem stm32f0discovery. Napewno? "Fabrycznie" jest kwarc 8MHz natomiast MCU ma mnożnik PLL który można ustawić. Jakiego środowiska używasz? W "moim" eclipse standardowy szablon dla STM32F0DISCOVERY wygląda tak: Na pewno mam 8MHz. SysTick'iem sie upewnilem. Pokaż kod.
stm32 cmsis cmsis stm32 error programować stm32 cmsis
protect radio kenwood błąd klimatronika renault scenic zawieszenie
Czy można zwiększyć pojemność baterii Ryobi? Crown XLS602 - Przegrzewający się termistor i niedziałająca końcówka