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.
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.
Funkcja NVIC_SystemReset() z CMSIS.
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
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!!
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.
Ostatnio przechodziłem "tą ciernistą drogę" kompilacja i poprawne wgranie pierwszego programu zajęło mi chyba 3 dni. Ale dałem radę sam (choć już miałem pytać na forum). Generalnie to dzięki szczywronek za poradnik! jesteś miszcz! A co do środowiska. Zaczynałem z pluginem i tam całe środowisko chodziło z tym że zaciągane są biblioteki a nie o to mi...
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!!
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.
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...
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,...
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...
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 ma potrzeby aby vectors był osobno wydzielony. Tak akurat zrobił kol. Freddie, że oddzielił wektory do oddzielnego pliku. W zależności od tego skąd bierzesz te pliki to napotkasz się na różne podejścia w organizacji tych plików. Np Atmel ma rozbiegówkę i wektory przerwań w jednym pliku *.c. Nie ma jakieś potrzeby aby rozbiegówka dla Cortexów była...
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ł,
Właściwości projektu i usuwasz biblioteki np:hall lub nucleo i zostawiasz tylko cmsis. Pozdrawiam;)
"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...
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...
project clean i zbuduj ponownie wstaw konsole.
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.
Funkcja SystemInit zawiera ustawienia, które powinny być wykonane przed zainicjowaniem (często czasochłonnym) środowiska dla programu. Zwykle umieszcza się w niej programowanie źródła zegara, parametrów pamięci i watchdoga. Wzorcową funkcję SystemInit znajdziesz np. w CMSIS core dla Twojego mikrokontrolera. W środowisku Keil istnieje sprytny mechanizm...
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...
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...
Abstrahując od bibliotek i tego się starajmy trzymać Biblioteki od ST są lewe. Biblioteka CMSIS od ARM jest dobra. [; 4\/3!!
A gdzie jest definicja? Nigdzie, nie mam tej funkcji i jej nie używam. To są wymysły CMSISa, który mnie średnio interesuje. 4\/3!!
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...
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.
Jak masz dobrze ustawiony CMSIS, wywołaj funkcję SystemCoreClockUpdate() i sprawdź co masz w zmiennej SystemCoreClock.
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...
No ale nieco zaskoczenie z tym brakiem... (w 031 już jest ID) Zaskoczeniem, przynajmniej dla mnie, jest że jednak ten UID właśnie w 030F4 jest. Bo faktycznie, już od dawna chodziły opinie że w tych kostkach go nie ma. Są jego definicje w CMIS (stm32f030x6.h): [syntax=c]#define UID_BASE ((uint32_t)0x1FFFF7ACU) /*!< Unique device ID register base...
1.Czy w CMSIS jest jakieś makro wywołania, czy trzeba to pisać ręcznie? Ręcznie. O tak - https://github.com/DISTORTEC/distortos/b... 2.Czy to przerwanie się inicjalizuje? Co przez to rozumiesz? 3.Czy trzeba mu ustawiać priorytet (domyślny ma chyba najniższy i o to mi chodzi)...
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...
Ś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...
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...
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...
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...
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...
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...
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!!
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...
Ok. Mój błąd - źle użyłem BSRR'a. Poprawione. Co do techniki pisania kodu bit po bicie - to taka moja brzydsza strona, ale chyba rzeczywiście pora zacząć korzystać z definicji CMSISa. Co do procedury używania SPI w full-duplex. Przeczytałem, zrobiłem i... dalej nic. Nie wystawia flag BUSY i OVERRUN, ale cały czas to samo. Tak jakbym był już krok od...
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.
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ą...
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++...
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...
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...
Witam. Testuję właśnie środowisko System Workbench for STM32 i mam problem z debuggerem dla procka STM32F030F4P6. Wgrywanie do pamięci FLASH działa. Programator ST link z płytki stm32VL, połączenie przez SWD. Konsola odpowiada: Open On-Chip Debugger 0.9.0-dev-00415-g2d4ae3f-dirty (2015-06-12-17:54) Licensed under GNU GPL v2 For bug reports,...
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...
Sporo się namęczyłem, zanim ruszył mi slave transmitter w STM32F103. W 107 będzie tak samo. Po pierwsze zobacz do errat - tam między innymi napisali, że przerwanie i2c musi mieć najwyższy priorytet, bo inaczej się wiesza. Poza tym przykłady nie zadziałały mi od razu, a problemy mają też inni, o czym możesz poczytać na main.c // main.c main()...
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...
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
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" :-)
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/...
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....
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...
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...
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...
FCh - tak zrobie. Dzięki za pomoc. simw - o której bibliotece mówisz? tę kompilowaną -lm czy z CMSIS - arm_math.h? Mam nadzieję, że czegoś nie przekręcam :) ale wpisy: "libarm_cortexM4lf_math.a" oraz "-larm_cortexM4l_math" dołączają statyczną bibliotekę matematyczną dla STM32 i wtedy w projekcie nie musisz kompilować całych źródeł (gałęzi) tejże biblioteki....
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....
stm32 cmsis cmsis stm32 error stm32 cmsis usart
końcówka kabla internetu mixer słuchawkowy formuły warunkowe excel
technik elektryk technik elektryk
Przewidywanie wyniku meczu Polska-Szwajcaria 2025 w piłce ręcznej Tanie używane zasilacze 400-450W 24-pin 4-pin