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...
Każdy z nas widział lub korzystał kiedyś z Arduino. Wszyscy hobbyści bardzo je lubią i nie ma co się dziwić - moduły te bardzo łatwo jest opanować i nawet ktoś, kto nigdy nie miał do czynienia z systemami wbudowanymi, może w chwilę nauczyć się je programować i zbudować w oparciu o Arduino coś na prawdę ciekawego. Ekosystem Arduino pozwala w prosty i...
https://obrazki.elektroda.pl/9151185000_... Druga część artykułu o najtańszych nowych mikrokontrolerach z roku 2017. Ekosystem developerski Środowisko developerskie mikrokontrolera ma ogromny wpływ na jakość pracy z nim i w konsekwencji - na produktywność. Na to składają się różne czynniki – jakość IDE, dostępne biblioteki, płytki...
ale czy przypadkiem nie powinieneś jeszcze włączyć zegara w RCC dla timera oraz gpio? Jeśli autor tematu skorzystał z narzędza CubeMX do wygenerowania szablonu, to zegary do peryferiów powinnny być włączone. Tutaj masz link do kursu z przykładem obsługi enkodera z bibliotekami HAL: [url=https://forbot.pl/blog/kurs-stm32-f...
(at)piotrva - jeśli kolega chce środowiska z ułatwieniami pokroju bascom to CubeMX i tak jest za skomplikowany. Tutaj tylko STMduino z wybranymi procesorami STM32 (a najlepsze wsparcie ma F103 iirc) - plusem jest możliwość korzystania z arduino, ewentualnie mbed siedzący mocno na HALu, ale zapewniający warstwę abstrakcji dość podobną do BASCOMa. W obu...
Pewnie dlatego, ze wczesniej programowałem (AVRy) pod Eclipse, a CooCox to w sumei Eclipse jest. Coocoxa kiedyś używałem, ale odniosłem wrażenie że nie nadąża za trendami w STM32. Jeśli nie czujesz się jakoś specjalnie przywiązany do (schyłkowego) SPL (np. dorobek własny), to ośmielę się zasugerować System Workbench for STM32 także na Eclipse i używanie...
SPL czy HAL HAL to następca SPL. Istotnym podtekstem tego zdania jest to, że SPL jest "dead", nie jest rozwijany i nic się w tej kwestii nie zmieni. MBED MBED to coś na styl Arduino dla ARMów. A przynajmniej takie odnoszę wrażenie. Są to biblioteki w większości w C++. CubeMX CubeMX to nie biblioteki, tylko program od ST służący do konfiguracji STM32...
Witajcie, siedzę i szukam błędu w bibliotekach do obsługi NRF24L01. Skopiowałem je z biblioteki, którą wykorzystuje w ATmega8. Działa nawet dobrze tam, niestety na STM32F0DISCOVERY już nie chce. Będę bardzo wdzięczny za pomoc. To najpierw kody, które wyrażają więcej niż tysiąc słów ;) : main.c http://obrazki.elektroda.pl/4732813300_1...
Bootloader przestawia wektory przed skokiem do softu użytkownika więc wydaje mi się że nic dodatkowo nie trzeba robić poza kompilacją pod 0x08001000. Niestety. CubeMX robi to tak że ustawia na początku rejestr VTOR (funkcja SystemInit): [syntax=c] SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */ [/syntax]...
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...
Witam Od tygodnia walczę z włączeniem ethernetu na stm32. Po wielu nieudanych próbach uruchomienia lwip oraz freertos musiałem zacząć od początku. W CubeMX konfiguruje ETH. Zmieniłem adres PHY i adresy rejestrów, poniewaz Cube ma złe adresy. Aktualnie myśle, ze MAC poprawnie komunikuje się z PHY, poniewaz podczas inicjalizacji eth podglądam wartość...
zdania doprowadzają do jedynej IMO słusznej konkluzji w tym wypadku: Arduino. Arduino to ślepa uliczka. W mojej ocenie, Arduino traktuje uC jak Z-8 (CPU + GPIO) czy 8051 gdzie ze sprzętu to głównie proste timery i UART. ZERO wykorzystania sprzętu! Bo co wspierają biblioteki Arduino? UART z malutkim buforem w RAM, I2C to samo. SPI bez bufora, bez przerwań....
Nie, może być najwyżej widziany jako DFU, o ile uruchomi się w nim wbudowany bootloader. W kilka minut można wyklikać w CubeMX USB CDC, a w następne dwie godziny oprogramować tak, by działało - i masz VCOM.
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...
Nauka C na PC pod jakimkolwiek systemem operacyjnym nauczą Cię C... I na tym koniec. Tylko C to z K&R się nauczysz w weekend. Na uC inaczej się zarządza pamięcią, przerwaniami, są porty IO, duże ograniczenia (wymieniony AVR jest 8 bitowy...). Stm32 jest fajny, ale IMHO CubeMX, czy HAL już wymaga pewnej wiedzy z C... I koło się zamyka. Wg mnie warto...
Linia PC13 ma bardzo małą wydajność prądową. Gdybyś w temacie umieścił schemat lub kod inicjalizacji peryferiów dostałbyś szybciej odpowiedź. Ale skoro CubeMX robi wszystko automagicznie, to przecież nie warto czytać dokumentacji. Na razie masz problem zamaskowany. Pewnie wróci. 5. PC13, PC14 and PC15 are supplied through the power switch, and so their...
Wybrałeś stary uC, archaiczne i martwe środowisko, a do tego chcesz pisać jak na AVR. To jest trochę inaczej. Jeżeli chcesz mieć zewnętrzny kwarc, to podłączasz go to wyprowadzeń HSE, włączasz generator, czekasz aż będzie gotowy i przełączasz taktowanie. Standardem w wielu aplikacjach i płytach rozwojowych jest 8 MHz, czasami 25 MHz. 12 MHz jeszcze...
Próbowałem najpierw skopiować "na głupiego" kod z drugiego linku, niestety zawieszał się w EE_Init(); Spróbowałem ten cały przykład z mbed przenieść do SW4STM (ale bez biblioteki mbed, tylko do szablonu z CubeMX) i po drobnej kosmetyce chodzi całkiem dobrze. Kod jest dobry a przyczyną zawieszania pod SW4STM jest, jak się obawiałem, nieskuteczność tego...
Próbuję uruchomić przetwornik do współpracy z DMA. Bez DMA wszystko działa ale przy użyciu DMA nie do końca. Przy pomocy CubeMX wygenerowałem taki oto kod: [syntax=c] /* USER CODE BEGIN Header */ /** ****************************************... * (at)file : main.c * (at)brief : Main program body ****************************************...
Dzięki pomocy kolegów z innego forum okazało się, że uruchomienie tej magistrali przy użyciu biblioteki HAL jest banalnie proste. Pomysł zaczerpnięty z artykułu, który załączyłem wcześniej. Po krótce wygąda to tak: 1: za pomocą CubeMX konfigurujemy timer w trybie PWM aby jego okres wynosił 1,25us czyli 800kHz. 2. dla tego timera konfigurujemy DMA pamiętając...
Generalnie kod powstał w CubeMx i ten sam plik wygenerował kod dla CubeIDE i Keila dlatego dziwne są te różne wartości dla IWDG_PRESCALER. Sprawdzę to w domu i poszukam błędu. Zawartość plików '.ioc' zapisanych przez CubeMX też jest różna w obu projektach. Pomijam już ustawienia docelowego środowiska, ale ten prescaler IWDG jednak się tam też różni.
Rzeczywiście kompilator zwraca przy f_write warning. Jak to powinno się poprawnie zapisać? Należy użyć dokładnie takiego typu jakiego oczekuje funkcja, czyli UINT, a nie uint8_t. I bynajmniej nie chodzi o rzutowanie - należy zmienić typ zmiennej której adres jest przekazywany do funkcji. Zwrotne informacje z tych funkcji odbieram, ale nie chciałem...
Czy w CubeMX istnieje możliwość zmiany procesora jak wcześniej już był zrobiony projekt pod inny? Tak. Istnieje taka możliwość. Tworzysz nowy, pusty projekt na nowy uC, a następnie importujesz ten stary. Warto próbować automatycznie, wyświetli wtedy różnice z ostrzeżeniami. Jeżeli automat zawiedzie, to można ręcznie importować. Nie ma większego problemu...
Myślę że przesunięcie rzędu czas trwania jednej konwersj nie było by problemem więc pytanie nadal aktualne A dlaczego nie wykorzystać możliwości. Jeżeli nie znasz HALa to najpierw zainstaluj sobie przykłady w Cube (ale nie mx) i przeanalizuj je. Wtedy domyślisz się jak zaincjalizować porty, ADC, DMA i timer aby trygierzował konwersje w odpiednim czasie....
Nie podoba mi się układ kodu generowanego przez ten system, a przede wszystkim konieczność pisania w zdefiniowanych miejscach pliku. Nie musisz całkowicie rezygnować z CubeMX, bo jest dość pożyteczny. Ale możesz go użyć raz, jako "generatora" poprawnej aplikacji a później przerobić według uznania projekt, powyrzucać te specyficzne komentarze i inne...
Pakiet występujący dawniej pod nazwą ThreadX nazywa się teraz Azure RTOS ThreadX i jest już port na niektóre STM32. Pierwszy pakiet zostanie udostępniony dla STM32H7 w 21Q1. Kolejne będą L4 i F4 (21Q2), F7, G4, L5 (21Q3), G0, WB i WL (21Q4). Pozostałe linie nie będą wspierane, ponieważ nie są w żaden sposób rozwijane. Po uzupełnieniu o dodatkowe moduły...
Przygodę z Azure RTOS (dawnej ThreadX) zacząłem częściowo z konieczności dalszego rozwoju mojego projektu, a częściowo za sprawą decyzji STMicroelectronics o zastąpieniu FreeRTOS przez Azure RTOS i szkoleń prowadzonych przez ST, które polecam. Moje pytania w tym temacie dają wyobrażenie o poziomie mojej wiedzy w tej dziedzinie. Jestem na początku drogi....
Masz rację, nie zauważyłem że ten skopiowany kod z definicjami od CubeMX nie podaje zapisanych wartości kalibracji. Ale i tak: ((130-30)/(1375-1034))*(887-1034)+30=-13 Raczej tak zimno u mnie nie jest ;)
Ja bym zaproponował ARM ale narzędzia KEIL-a. Na początek, ograniczenie 32kB nie będzie problemem a KEIL jest wygodny. Generuje projekt z CubeMX, otwiera się KEIL, F7 i kod jest skompilowany. Żadnego wskazywania ścieżek, podłączania debugerów itp. Ślepa ulica dla hobbysty, zupełnie ślepa. Są obecnie dwa dojrzałe środowiska, które pozwolą na wygodne...
Definicja HSE_VALUE w stm32f4xx.h jest definicją 'awaryjną', kiedy wartość nie jest zdefiniowana w żadnym innym miejscu. A to wcale nie jest takie pewne. Co do SPL, to wybór należy do Ciebie. Ja mogę tylko podpowiedzieć, że SPL nie jest już używany przez ST - został zastąpiony przez CubeMX, w połączeniu z HAL, który jest bardzo podobny do rozwiązania...
Aktualna wersja CDC z CubeMX na F4 (tylko) ustawia zbyt mały rozmiar stosu. Zadałem sobie trud i zrobiłem dwa projekty na F103 i F446. 1. Stos zadajesz w konfiguracji przy generacji projektu. Domyślne wartości są identyczne dla F1 i F4 https://obrazki.elektroda.pl/1101990200_... Tak że jest to za każdym razem 1kB w 100% wystarczający...
Obejrzyj wszystko w odpowiednim okienku CubeMX. Skoro wszystko tam będzie, pewnie tam zajrzę. Mam nadzieje że nie namieszałem. Łatwiej urzyć gotowych kalkulatorów bo samemu to trzeba uważać aby nie przekroczyć wymaganych wartości Nie namieszałeś, uporządkowałeś moje myśli :) Serdeczne dzięki za szybkie odpowiedzi, problem rozwiązany, temat zamykam.
Nie chcę inkrementacji. Wysyłam cały czas tą samą zmienną kilkukrotnie z jednej lokalizacji pamięci. W przerwaniu jest przeliczana na inną wartość w taki sposób: Ok. Niemniej jednak skopiowałem ten kod z #8 do CubeIDE 1.5.0, zrobiłem parę korekt pod moje PCB, dokonałem poprawnej implementacji flagi BUSY i wszytko działa jak powinno z inkrementacją...
Nie chciałem zakładać nowego tematu bo wiem z doświadczenia, że jest to męczące dla zaawansowanych użytkowników i sprawia problemy w późniejszym szukaniu. Otóż. Posiadana przeze mnie płytka to nie Discovery, ale Nucleo F429ZI. niestety jestem początkujący ;( a za zadanie dostałem opracowanie połączenia LAN za pomocą socketów w układzie kompuer PC <->...
Po pierwsze, ważna sprawa. Adres kości w funkcjach HAL podawany jest w konwencji 8-bitowej (przesunięty o jeden bit w lewo względem drugiej konwencji występującej np. w dokumentacji tej kostki). Czyli dla QN8025 używasz adresu 0x20 (00100000). Druga rzecz. Nie wiem czy Twój moduł posiada oporniki podciągające linie I2C. Sprawdź, ewentualnie dodaj jeśli...
Podmieniłem #define EVE_CFAF800480E0_050SC (ta z linii 104) na #define EVE_RVT35. Pytanie dlaczego akurat tutaj trzeba to podmienić skoro w 75 linii jest to samo #define EVE_RVT35 ?? Poniewaz wszystkie wczesniejsze #define masz w warunku #if 0 #endif czyli niespelnionym. Zreszta w CubeIde powinienes miec to zaznaczone na szaro (wylaczone). Czy zatem...
W poradniku Szczywronka opis konfiguracji zegara był dokładnie opisany dla STM32F103. Przepisanie kodu stamtąd powinno dać Ci poprawny wynik konfiguracji. Teraz piszę z pomocą CMSIS". Pracę z STM zaczynam zawsze od przygotowania funkcji SystemClockConfig() jak to opisano w poradniku, posiłkuję się zarazem schematem z zegarów z CubeMX . Całość odbywa...
A jaka to różnica. Chodzi o wartości jakie się podaje i idee. Analiza kodu w hal jest tak samo dobra jak innego. Zresztą wątpię żebyś co znalazł do bardziej złożonych peryferie na ejestrach
Witam, próbuję uruchomić akcelerometr LIS3DHH ( https://www.st.com/en/mems-and-sensors/l... ) na zestawie Nucleo F411RE ( https://www.st.com/en/evaluation-tools/n... ). Czujnik mam w postaci adaptera STEVAL-MKI180V1 ( https://www.st.com/en/evaluation-tools/s... ). Konfigurację dla mikrokontrolera generuję za pomocą CubeMX...
0. Z jakiego źródła jest taktowany UART2? Czy zmieniasz wartość BRR dla UART2 po zmianie taktowania? 1. Sprawdź profil zasilania ustawiony w rejestrach PWR. Domyślny to Scale 1, ale jeżeli projekt wygenerowałeś w CubeMX z zegarem HSE lub HSI, to możliwe jest inne ustawienie, które uniemożliwia pracę rdzenia z zegarem 180 MHz. 2. Zmiana Wait State wymaga...
Obejrzałem, nic nie zrozumiałem. Uwagi: 1. Bardzo uśredniaj wartości z ADC - nie tak że żywcem 2. Ja bym generował sinusoidę poprzez DMA wyzwalany timerem, a jedynie zmieniał czasookres pomiedzy wyzwoleniami.
Witam, W mikrokontrolerze "stm32f103c8t6" chciałbym wygenerować następujący przebieg na pinie: a) krótkie, powtarzające się, pulsy przez "x" czasu b) zero (przez "y" czasu) c) a i b powtarzające się z okresem "x"+"y" Myślałem aby w tym celu połączyć TIM3 i TIM1 w konfiguracji master-slave. W TIM3 (master) generowałbym przebieg x+y, który by służył do...
Być może mam skopany oscyloskop i czas kupić nowy. A teraz spójrzcie na mój post z kodem oraz pierwszy post tematu :-). Jeśli taktuję z HSI to 1000 prób echo z blokami po 8192 bajty przechodzi bez szemrania. Przy HSE 25 MHz czy 8 MHz czy 11.0592 MHz realna częstotliwość jest zaniżona i do obliczenia BRR muszę użyć niższej wartości (przy 25 MHz -> 24500000)....
Wprowadzić do EXTSEL w rejestrze ADC odpowiednią wartość. Znajdziesz ją w Reference Manual.
Co masz na myśli pisząc "przekierowuje dane do poszczególnych baz" ? W przerwaniu odbierasz ramkę, sprawdzasz ID i w zależności od wartości ID podejmujesz jakąś akcję.
Patrzę i patrzę ale nie widzę :-( ... Zauważyłem za to że ta sieczka z ADC2 to są mierzone kanały z tym ze wygląda to na utratę synchronizacji pomiędzy ADC1 i ADC2 ( wartości są odpowiednie z tym że skaczą pomiędzy pozycjami raz wartość z mierzonego kanału znajduje się raz w analog HAL_ADCEx_InjectedStart_IT(&hadc1... W callbacku odczytuję :...
Witam, Napotkałem problem, którego nie mogę przeskoczyć podczas używania CubeMX. Chcę za pomocą przerwań lub za pomocą DMA mierzyć napięcie na ADCku. Niestety procesor wykonuje pomiar tylko raz. Mierzy początkową wartość potencjometru, nie reaguje na jego kręcenie. Sterowanie ADCkiem za pomocą "HAL_ADC_PollForConversion" działa, przy próbie użycia przerwań...
Cześć, zwracam się Do Was z prośbą o pomoc w uruchomieniu Touch Sensor Controller (TSC) w STM32L0. Nie mam już pomysłu jak ugryźć temat, a po przeanalizowaniu UM od procka i UM od HAL, na dal do końca nie wiem jak odpalić funkcję pojedynczego klawisza dotykowego w tym procku. Co mam? Mam PCB z wlutowanym MCU. Do jego portów podłączone są: PA7 (TSC_G2_IO4)...
Ok. Przepraszam jakoś mi uciekła ta informacja. Przeglądam właśnie noty z programowej implementacji UARTA dostarczone przez ST na ich stronie. To moje początki z programowaniem i procesorami z rdzeniem ARM ale coraz bardziej zaczyna mi się to podobać. ----------- Znalazłem taką informację odnośnie danych, które muszę obierać: "Bajty przesyłane są, podobnie...
przy oversampling na 8 trzeba ustawić BRR na 0x34 Poddaję się - nie wiem skąd ta wartość (0x34) :?: Metodą "prostego dzielenia", tak jak piszesz, wychodzi 0x1c (28). Dla weryfikacji tej wartości "zgrzeszyłem" i zainstalowałem CubeMX - wygenerowałem inicjalizację UARTu dla F4, baudrate=6M, zegar=84MHz. Kod wygenerowany przez Cube też zapisuje do BRR...
stm32 cubemx stm32 warto cubemx arduino
peugeot oprogramowanie indukcja tranzystor autko pilota
przekaźnik krzywkowy sprinter błędów
Lodówka: Cykl pracy 25 minut, przerwa 55 minut Podłączenie pompy paliwa po usunięciu immobilizera w Kia Cee'd