Skorzystaj z rejestru GPIO->BSRR
Ja mam tylko target remote localhost:3333 monitor reset halt lub target remote localhost:3333 monitor reset halt #load monitor flash write_image erase main.bin 0x08000000 bin load działa ale mam przypadek gdzie muszę użyć tego drugiego
W pliku stm32f10x.h jest to trochę inaczej niż w dokumentacji. Np. dla PSRAM1 - rejestr BCR1 odpowiada: [syntax=c]FSMC_Bank1->BTCR[0][/syntax] - rejestr BTR1 odpowiada: [syntax=c]FSMC_Bank1->BTCR[1][/syntax] - rejestr BWTR1 odpowiada: [syntax=c]FSMC_Bank1E->BWTR[0][/syntax] Według tego powyżej mam ustawiony LCD i zewnętrzny RAM i działa.
Opcje -g? Masz ustawioną? EmbSysRegisters wtyczka do eclipse polecam pełen podgląd rejestrów.
Żeby podejrzeć rejestry układ trzeba oczywiście najpierw zatrzymać. Generalnie też (kiedyś) wtyczka embsysregview nie odświeża automatycznie rejestrów (ikonka szara) - trzeba daną pozycję kliknąć 2x (ikonka zielona) i wtedy wartość jest aktualizowana itd. 4\/3!!
Np. STM32F100C8T6B. Ogólnie stm32 są "bardzo kompatybilne". Ważnie żeby trzymać się jednej grupy np stm32f1xx (nie zmieniać typu rdzenia (rodziny) np. z m3 na m4 lub m0 bo mają nieco inne rejestry konfiguracyjne).
Musisz jeszcze ustawić aby wyjście było aktywne w rejestrze CCER.
(at)toch88 Nie ma powodów, aby nie stosować takiego zapisu. Np. Atmel w swoich nagłówkach dla ARM daje możeliwość korzystania z pól bitowych, lub składania wartości z masek i przesunięć. Przy czym jeśli korzystasz z pól to wygodnie jest użyć compund literals: http://mikrokontrolery.blogspot.com/2011...
W przerwaniu przydałoby się kasowanie flagi od przerwania (rejestr EXTI_PR)
Nie ustawiłeś bitu MOE w rejestrze TIM1->BDTR.
gdzie znajdę plik który ma zdefiniowane adresy rejestrów, przerwań itp. Masz w środowisku: stm32f10x.h ale miało problem zrozumieć zapis: GPIOA->CLR ^= 1<<MODE2 Ja także mam problem :) W pliku stm32f10x.h masz definicje: Próbowałem Atollic TrueSTUDIO wybrałem sobie Embedded C Project naładował mi tyle syfu, że kompilacja trwała dość długo,...
Myślę że to wszystko jest wytłumaczone w datasheecie do tego akcelerometru. 4\/3!!
Odczyt rejestru DR przez debugger jest odczytem, a więc resetuje flagę RXNE w rejestrze SR. Wyłącz podgląd rejestru DR to powinno być lepiej.
Pierwsza opcja to oczywiście zdefiniowanie NAPRAWDĘ DUŻEGO stosu, ale to średnie rozwiązanie jak wiadomo [; Do rozbudowanej aplikacji na ARMa myślę że należy liczyć minimum 1kB, jeśli używa się jakichś potwornych funkcji standardowych (printf!) i to głęboko to lepiej zaopatrzyć się w 2kB (o apetycie tych funkcji na pamięć pisałem ostatnio http://www.elektroda.pl/rtvforum/topic13...
Takie samo? To czemu w pierwszej linijce przesuwasz o 0 pozycji, a w drugiej o 16? Dla jednego to żadna różnica, dla innego będzie to problem i dodatkowy kod. Każdemu według potrzeb. Poza tym naprawdę nie rozumiem problemu - nie chcesz to nie używaj, przecież nie płacisz za to żadnych dodatkowych pieniędzy. Ktoś będzie chciał użyć - użyje. Ktoś nie...
Chodzi o to co pisze NAD opisem bitów z rejestru RCC_BDCR. Można tam znaleźć takie oto info: The LSEON, LSEBYP, RTCSEL and RTCEN bits in the RCC backup domain control register (RCC_BDCR) are in the Backup domain. As a result, after Reset, these bits are write-protected and the DBP bit in the PWR power control register (PWR_CR1) has to be set before...
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...
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...
a reklamy wcale nie wyskakuja czesto, mi sie zdarza raz na 1h moze nawet rzadziej A jak klikniesz debug? podgladu rejestrow nie ma ale zawsze mozna to ominac w taki sposob ze sobie dane z rejestru do zmiennej przypisujesz i w zakladce veriables masz to do podgladu Nie próbowałem. Ale w Keilu w podglądzie rejestrów możesz sobie w trakcie debugowania...
Aż niemożliwe, że tak ciężko jest zacząć z stm32 na rejestrach... To dość złożona architektura i potrzeba sporo rzeczy aby stworzyć działąjący program. Dziś mam dziń dobroci i zrobiłem Ci projekt. Dalej to już tylko problem Twoich programów. Nie można zwalać na środowisko.
Głupie pytanie, ale restartowałeś komputer? Bo wygląda jakby port tcp był zajęty i to teraz jest ewidentie problem z st linkiem, nie twoim programem. Zobacz w procesach czy już jakiś nie jest odpalony w tle, może coś się do autostartu w windowsie dodało.
A może byś tak włączył pull-up? Domyślnie masz pull-down. Wskazówka - Tabela 20 w sekcji 9.1. ;)
Nawet dla takiego małego Miki jak ja już na pierwszy rzut oka jest jasne że te kody to potężne źródło problemów. Co widać bez wgłębienia się w szczegóły: * Funkcja main() jako rozbiegówka to słaby pomysł. Kolega stmx napisał coś na ten temat (nawet podaje link w promowanych tematach), warto to przeczytać. * Stos musi mieć odpowiednie wyrównanie, zwykle...
odczyt rejestru - modyfikacja - zapis do rejestru . Nie powinno cię dziwić, że jeśli między tymi operacjami wystąpi przerwanie, w którym modyfikowane są ODR bitbandingiem i nie tylko to cała operacja z przerwania zostanie anulowana.
Czemu po prostu nie przestawisz wartości ARR zamiast jednego z rejestrów od porównania?
Czy domyślnie jest w danym modemie włączone czy nie to już zależy od modemu chyba. I/lub S-rejestrów.
W module RCC masz rejestry odpowiedzialne za reset peryferiów (RCC_APBxRSTR)
Po drugie, chcesz nadawać bajty, a rejestr DR w STM32 ma 16 bitów, więc jednym zapisem do DR nadajesz 2 bajty. Tutaj się mylisz. Akurat w F103, możesz wysyłać pojedyncze bajty bez bajtowego dostępu. To co opisujesz jest w nowszych STM32, np. L4, F4, F7. W każdym przypadku lepiej użyć do tego DMA.
Tak zrobię, spróbuję na samych rejestrach.
Hala do usarta czy SPI nie lubię. Łatwiej i dużo szybciej na rejestrach
Nie no zaraz. Kanały są multipleksowane, więc rozwiązanie jeden na kanał odrzucam. Prawdopodobne jest rozwiązanie kilka w jednym przetworniku, no ale jakie (od czego) miałyby być te kondensatory i w związku z tym po co ich kalibracja. Najbardziej prawdopodobne wydaje się być rozwiązanie kalibracji jednego kondensatora na przetwornik, co tłumaczyłoby...
To nie rozwiązuje problemu. Jeśli masz do skonfigurowania kilkadziesiąt pinów to dalej stoisz w tym samym miejscu - tracisz dużo czasu na klepanie konfiguracji dla GPIO. To rób konfigurację CubeMX a dostęp do GPIUO na rejestrach. Często używam tej metody nie tylko dla GPIO ale i dla USART, SPI. Transmisję realizuję swoimi funkcjami a init robię przez...
Chyba trzeba przestawić funkcję wybranych wyjść GPIO na linie interfejsu USART. Dla mnie mało czytelne są te gotowe biblioteki STM32. Sam wszystko robię na rejestrach.
nie ma czegos takiego jak dummy read przy odczycie rejestru tylko przy odczycie z GRAM chyba.
A SPI_CR1_DFF za co odpowiada? Bo ja nie mam takiego bitu w rejestrze.
(at)dziechu poczytaj co robi operator sizeof zamiast grzebać w rejestrach
Zamienił stryjek siekierkę na kijek. Nie rozumiem w czym jakieś dziwolągi programistyczne mają mieć przewagę nad prostym ustawieniem kilku bitów w kilku rejestrach.
Możesz użyć funkcji, które operują bezpośrednio na rejestrach: [syntax=c]void SwitchRCC_HSI(void) { // ustaw bit HSION -> włącz wewnętrzny oscylator RCC->CR |= RCC_CR_HSION; // sprawdź czy sygnał na wyjściu oscylatora jest stabilny while(!(RCC->CR & RCC_CR_HSIRDY)); // przełącz źródło taktowania RCC->CFGR &= ~(RCC_CFGR_SW); // zaczekaj na przełączenie...
Tak też zrobię - podłubię w bibliotece. Sadze ze (at)Freddie Chopin chodziło o to abyś sobie napisał na rejestrach :).
Cała korporacja AVT silnie promuje używanie SPL. W zasadzie nie widziałem jakiegoś artykułu w odniesieniu do rejestrów.
reset to reset i już, może pokaż jakiś schemat ?
Pomyśle :) w ogromnej ilości rejestrów stm32, myślałem, że jakoś łatwiej się odnajdę dzięki bibliotece, a tu chyba jest dokładnie odwrotnie :) pozdrawiam Krzysiek
Tak, Freddie Chopin ma rację, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIO... oraz configMAX_SYSCALL_INTERRUPT_PRIORITY powinny być spójne, ponieważ odnoszą się do tego samego lecz różnią się przesunięciem bitowym w celu stosowania tych flag w funkcjach bibliotecznych lub bezpośrednio w rejestrach.
Skoro te biblioteki Ci się nie podobają, to ich nie używaj - w czym problem? Jeśli podoba Ci się inna to jej użyj. Jeśli żadna, to napisz swój kod w oparciu o rejestry.
Może wbiję kij w mrowisko: Po co właściwie Ci ten bitbanding? Programuję Cortexy na codzień i nie zauważam praktycznej potrzeby użycia BB. Nie to, żeby w ogóle jej nie było, ale jest ona tak marginalna, że nie opłaca się w to bawić. Tam, gdzie są potrzebne operacje bitowe, są one zaimplementowane w sprzęcie lepiej i bez potrzeby użycia BB i szybciej...
To API jest bez sensu więc nie ma co szukać o tym informacji. Dlaczego uważasz, że jest bez sensu? To według Ciebie lepiej pisać odwołując się bezpośrednio do rejestrów?
Dzięki za ten opis, muszę wpisać jeszcze do pamięci wyświetlacza jakieś wartości aby zobaczyć cokolwiek. Niestety u mnie problem tkwi w mojej ocenie w samym I2C. Bez rozwiązania tego problemu nie będę w stanie ustawić żadnego rejestru.
Makro LED_bb_B odnosi się do rejestru ODR który pozwala na zmianę stanu pinu. Ty natomiast musisz skorzystać z rejestru IDR który odwzorowuje rzeczywisty stan wyprowadzenia.
A odblokowałeś FLASH? Chodzi mi o magiczne: [syntax=c]FLASH->KEYR= 0x45670123; FLASH->KEYR= 0xCDEF89AB;[/syntax] I oczywiście zabezpieczenie zadziała dopiero po resecie procesora. Wcześniej wszystko działa tak jakby zabezpieczeń nie było pomimo odpowiednich wartości w rejestrach.
jest jakaś prosta metoda na timeout ? Nie wiem jaki masz STM, ale niektóre mają sprzętowy timeout. Wystarczy w rejestrze RTOR podać po ilu nieodebranych znakach ma zostać wygenerowane przerwanie. Ewentualnie musisz się posiłkować jakimś timerem - np. w trybie OPM. Szczerze mówiąc chyba lepiej Ci będzie napisać tę cześć kodu bezpośrednio na rejestrach...
Może głupie pytanie ale gdzie JEST GPIO_PIN_RESET? Zaraz po wejściu zapalasz PING14 potem dopóki niezakończony się konwersja ustawiany jest PING13 ale nawet jak się konwersja zakończy to nic tego rejestru nie resetuje
Witam, Timery w tych prockach mają tyle opcji, że się w tym wszystkim pogubiłem. Jak można wygenerować na jakimś wyjściu przebieg prostokątny o programowo określonej częstotliwości? Pewnie będzie to tryb Compare z zerowaniem rejestru licznika i zmiany wyjścia na stan przeciwny. Nie mam jednak pojęcia co i gdzie poustawiać w rejestrach.
Sam widzisz, że wcześniej wyzerowałem wszystkie rejestry co dało mi pewność że nie zawierają żadnych śmieci, potem wykorzystałem funkcje, i nic to nie dało. Jak dałem sumowanie bitowe w drugim przypadku to jest ok. Chodzi Ci o to, że powinienem najpierw czyścić pola rejestru które zamierzam zapisać tak? Funkcja to robi, i mimo to coś jest nie tak. Debugger...
Sprawdź opis rejestru w Reference manual. Tam jest to jasno i klarownie wyjaśnione.
Sposób mam bardzo prosty - po kolei ładuję rejestry sterujące każdego peryferiala i dzięki temu kod inicjujący wszystkie peryferia w dużych projekstach nie przekracza kilkudziesięciu linii. żadna pseudowuniwersalna biblioteka nie obejmie wszytskich potrzeb projektu, a inicjowanie peryferiów potworkami typu SPL wychodzi wielokrotnie (np. 8x) dłuższe...
BlueDraco, przejście na programowanie za pomocą rejestrów dawno mnie pociągało, ale w zasadzie trzeba by było zaczynać naukę od zera (szczególnie dla każdego nowego procesora). Czy gdyby dalej pisać w HAL, ale ważniejsze czasowo fragmenty tylko na rejestrach, to szybkość ich byłaby porównywalna? Czy jednak pozostałe fragmenty kodu w HAL akurat niezwiązane...
Nie powiem Ci jak z HAL, ale TIM1 owszem ma taka możliwość, jeśli bit MOE w BDRT jest == 0, a OSSI == 1, to stany wyjść kiedy timer jest wylączony ustalają bity OISx(N) w rejestrze CR2.
HSI jest kalibrowane w procesie produkcyjnym. Wartość tej kalibracji można nawet odczytać z jakiegoś tam rejestru. 4\/3!!
Funkcje będą takie same ale sprawdź adresy do rejestrów poszczególnych.
zmiana na GPIO_Mode_AF_OD nic nie zmienia. Kontroler wiesza sie na czekaniu na flagę. Wkurzają mie te biblioteki powoli. Jęśli napiszę while(1) I2C_SendData(I2C1, 0); to na SDA I SCL mam 3,3V. Są oporniki podciągające 4k7 Ma ktoś może przykład jak to zrobić normalnie na rejestrach?
Ale pokrętnie wytłumaczenie. :roll: Zarówno preskaler jak i top (rejestr ARR) pomniejsza się o jeden albowiem liczniki liczą od zera. Na przykład dla ARR==3 licznik liczy: 0, 1, 2, 3, 0, 1, 2, 3 ...itd. czyli timer przekręca się co cztery tiki. Ta sama zasada obejmuje PSC.
Tak, te funkcje sa do odczytu z zapisu rejestrow, jednak jak mnie przekonales ( nie w 100% do poki nie zobacze jakiejs dokumentacji :P ), na rejestrach usb stm32 a nie phy.
Nie może być UART. Tylko SPI albo I2C. Musi być wykorzystany HAL na stm32 a na RPI bcm2835 ewentualnie wiringPI. Nie powinienem korzystać z rejestrów na stm32. Dlaczego? To są zagadnienia z kursów pewnych. Jak to powinno wyglądać?
1. Polska literatura bazuje na tych bibliotekach 2. Bo się pisze szybciej i łatwiej, 3. Mniej cię obchodzi bo większość rzeczy dzieje się pod spodem 4. Dużo przykładów w sieci = co za tym idzie 1. mniej optymalnie 2. w razie problemów i tak trzeba grzebać po rejestrach żeby dowiedzieć się co się dzieje
W Twoim działającym przykładzie do rejestru wpisujesz adres tablicy ("&" może być albo może go też nie być - również zadziała wg mnie), natomiast w przykładzie niedziałającym najpierw do funkcji podajesz adres tej tablicy, a potem jeszcze raz wyciągasz adres tego adresu - żeby zaspokoić Twoje potrzeby kompilator zmienną tab umieszcza gdzieś na stosie...
Jeśli chodzi o przeciwfazę to, tak jak mówilem, sprawa jest generalnie bardzo prosta: jeden kanał timera w trybie compare albo pwm oraz odpowiednie zaktywowanie wyjść. Timer w takiej konfiguracji jak zrobiłeś wygląda OK (oprócz podczepionych przerwań bo są niepotrzebne), zaktywować wyjście niezanegowane może da radę przez pinMode(PA8, PWM), ale nie...
Ok. Ma ktoś może inicjalizację tego wyświetlacza do pracy poziomej? Zmieniam wartości rejestru 0x11 i po zmianie bitu AM wpisuje poziomo, ale zaczyna na dole i dalej rysuje poza ekranem. Pewnie trzeba ustawić też inne rejestry. W ogóle to dziwne jest to że w inicjalizacji rejestr 11h ma wpisywane 0x6070. Bit AM to bit nr 3, więc jest ustawiany jako...
Same błedy pierwsza linijka: RCC->APB2ENR = RCC_AHBENR_GPIOCEN; rozumiem że wszyskie peryferia poza losowym RCC_AHBENR_GPIOCEN (losowym bo z innego rejestru) wyłaczasz. Zastanawiam się czy to naprawde trudno zauważyć że APB2 != ABH oraz przyjąć ze w takim rejestrze jest więcej niż jeden bit i raczej nalezy inne zostawić w spokoju. Trzeba też działać...
przerwanie przeciez jest wlaczone, bo sie wykonuje handler. chyba ze nie wiem co to znaczy wlacz EXTI... problem jest w tym zapisie do rejestru EXTICR
Odkopuje stary temat bo nie ma sensu żebym zakładał nowy, a pytanie mam bardzo podobne. Gdzie w datasheet STM32F407VGT6 znajduje się opis rejestru SysTicka? Wczoraj przekopałem cały i nie mogę nic znaleźć nic prócz "SysTick calibration value register" który i tak i tak nie jest opisany. Doszedłem do tego samego momentu autor tematu, czyli chciałbym...
Napisał, że ma to być cyfrowy - ale np. czy opóźnienie ma dotyczyć jednego zbocza, czy obu, już nie widzę. Można by rozważyć użycie rejestrów przesuwnych i dobierać liczbę bitów - ale to może wyjść drogo. Procesor? Przynajmniej STM32, i to jakiś szybszy. Tylko w każdej z tych wersji to działa synchronicznie z zegarem...
Używasz do tego struktur, np. w Twoim przypadku: GPIOA->CRL=0x44444444;
Debugowanie kodu do I2C do bezpiecznych nie należy do udowodniłem. Wystarczy nie pozwolić na odpowiednią szybką reakcję na zdarzenie, co spowoduje zawieszenie magistrali. W szczególności trzeba uważać na rejestry SR
Może nie akceptuje tak wysokiego napięcia zasilania. Sprawdź jaki ma dopuszczalny zakres napięcia zasilania w rejestrze OCR (CMD58).
Jeżeli zadajesz pytanie, to zamykanie tematu uniemożliwia uzyskanie odpowiedzi. Odblokowałem. Źródło taktowania po zwolnieniu sygnału reset jest określone sprzętowo. W przypadku STM32F302 jest to opisane w sekcji 9.2.6 w [url=https://www.st.com/content/st_com/e...
efekt w 100% prawidłowy - napisałeś kod, w którym s jest w pamięci RAM, a następnie tworzysz na niego wskaźnik, który zresztą też jest w pamięci RAM. Naprawdę weź jakiś przykładowy projekt dla STM32... 4\/3!!
po co w niektórych implementacjach takich 'rozbiegówek' mamy kod assemblerowy który kopiuje adres stosu do rejestru SP procesora? STM32 może używać dwóch stosów - jednego dla przerwań (nazwanego wyjątkowo myląco "main stack") i drugiego dla wątków (nazwanego "process stack") - a więc i dla "main()". To co jest w tablicy wektorów ląduje w MSP ("main...
Rzeczy, które zaznaczyłeś - to stałe zdefiniowane na podstawie lektury manuala - wartości bitów włączających odpowiednie tryby pracy peryferiali. MODER. A to nie powinno być zdefiniowane w pliku "stm32f0xx.h" aby wykorzystać w kodzie programu? Opis, który wkleiłeś plus opis bitów w rejestrach daje komplet informacji potrzebnych do zaprogramowania timera....
to zapisuje do rejestru 8 bitów. A podobno chcesz 16
A konkretnie, to czego z kodu inicjowania timera nie rozumiesz po przeczytaniu rozdziału o timerach z Reference Manual? Masz tam obrazki, opisy działnia i szczegółowo rozrysowane i opisane rejestry sterujące.
Czyli jeżeli dobrze rozumiem to w przypadku resetowania powinienem ustawić bit RST. Następnie włączyć zegar RCC (ponieważ w konfiguracji po restarcie jest on wyłączony) Resetujesz konkretne peryferium a nie RCC. Tak że w RCC nic się nie zmieni. Mogłbyś mi jeszcze podać źródła gdzie znalazłeś takie informacje o resecie Takich jak Ty podałeś to nie znalazłem...
Procesor musi mie odpowiedni rejestr, który umoliwia taką zabawę. W STM32 nazywa się BSRR. W AVR-ach nie ma chyba niczego takiego.
Dzięki wielkie! wałkowałem to ładne parę dni a takiej głupiej pomyłki nie zauważyłem ;) za to poznałem dość dobrze kod fatfs ;) ... oprócz zapisu TRZEBA także odczytać rejestr SPI...
Nie, no niewątpliwie masz rację, że jeśli chodzi o wydajność to szybciej jest bezpośrednio pisać po rejestrach ;) pozdrawiam Krzysiek
Przejrzyj erratę od Twojego układu - w I2C jest kilka problemów.
To jest jeden z kodów z działu o NVIC z którym mam problem. Poza tym rejestr SysTick jest rejestrem kontrolera NVIC.
Dla licznika TIM1 trzeba dodatkowo dodać polecenie: [syntax=c]TIM_CtrlPWMOutputs(TIM1, ENABLE);[/syntax] Ustawia ono bit MOE w rejestrze BDTR, polecenie dotyczy liczników 1, 8, 15, 16 i 17 .
Może nie pojmuję idei budowy tego rejestru ale jeżeli podamy offset np 0x100, to ustawiony zostanie bit 8 tego rejestru a nie (jak wydaje mi się, że powinno być) 15. Bo przecież offset wpisywany jest w pole TBLOFF a nie w.... rejestr. Wariuje :|
konfiguruje A0 na wejście z podciąganiem. Nie są potrzebne dalsze udziwnienia, aby po prostu chodziło... Wytłumacz mi w takim razie dlaczego konfiguracja od STM'a działa poprawnie bez odwoływania się do rejestru ODR ?
A da się to zrobić w jakiś szybki sposób? Czy trzeba resetować wszystkie rejestry po kolei?
Witam. Próbuje stworzyć wyświetlacz RGB. Sercem układu jest mikrokontroler z rodziny STM32 (logika działania 3V3), natomiast za sterowanie LEDami odpowiadałyby rejestry przesuwne zasilane napięciem 5V. Wysoki stan na wejściu rejestru przesuwnego wynosiłby w takim razie 3V3. Moje pytania są następujące: 1. Jakie napięcie uzyskam w rejestrze na wyjściu?...
Witam A może rejestr przesuwny, będziesz potrzebował tylko trzy linie. Pozdrawiam Romek
2. Sprawa to stos. Jest on sprzętowy. Nie jest.
Użycie zmiennej const volatile nie ma sensu, const volatile może nieść tylko informację dla programisty, że w danym kawałku kodu, nie powiennien jej modyfikować, ale kompilato tego nie zoptymalizuje i zawsze będzie to czytać z pamięci. Ma sens, jak najbardziej. const powoduje, że takiej zmiennej nie można przypisać wartości. volatile powoduje, że zmiennej...
Freddie, zawężasz dyskusję do jednego aspektu. Wy trochę też, bo może w przypadku flag przerwań timera faktycznie BB niczego nie wnosi, za to w innych przypadkach już tak. a wtedy konstruktorzy od ST robią coś, co jest zupełnie nieprzydatne W STM32 równie dobrze może być tak, że rejestry timera są takie a nie inne gdyż ST akurat miało taki układ peryferyjny...
wydaj 50 zł i kup sobie jakiś najtańszy chiński analizator logiczny. Podłącz i zobacz co siętam dzieje na tym SPI. https://obrazki.elektroda.pl/5220450300_... Chyba tak się właśnie to skończy... Liczyłem, że popełniam jakiś błąd, którego łatwo pominąć i go niedoświadczony ja pomijam :( Taka drobna uwaga: Jak już używasz Arduino to...
1. funkcja bez atrybutu interrupt nie odkłada na stos wartości rejestrów które modyfikuje potem w "ciele funkcji" - czy to znaczy, że wartości tych rejestrów są tracone czy też procesor sam z siebie (sprzętowo) je zapamiętuje na stosie przy wejściu w obsługę przerwania? Informacje jak zwykle w dokumentacji rdzenia. Po co są zerowane trzy ostatnie bity...
A biblioteka to CMSIS
Zacznij od zrozumienia przesunięć bitowych, potem poczytaj o portach GPIO w STM32 (rejestr MODER działa ciut inaczej niż DDR w AVR). No i jeszcze timery - też całkiem różne od tych w AVR.
Po wyczyszczeniu wszystkiego zbędnego, wgraniu nowych czystych plików wszystko ruszyło. Najgorsze rozwiązanie - nie wiadomo co było. Od dzisiaj zanim zacznę jakiekolwiek prace: git init; gid add*; git commit -a :) Jedyna zaleta, to że przy okazji szukania bardzo dużo nauczyłem się o wnętrznościach debugger'a, linkera, i rejestrach CM3 :-) Nie ma tego...
stm32 rejestr programować stm32 rejestr stm32 usart rejestr
yamaha pilot klucz aktywacja samsung uszkodzone ladowania
dobry akumulator diesel dobry akumulator diesel
BoosterJet 1.0 - Czy to dobry silnik? Opinie i analiza Schemat ideowy Manta Helios SPK1003, SPK-1003 ESCO/Yorkville – dokumentacja, układy, naprawa