Globalne definicje przekazuje się przez kompilator, odpowiednimi parametrami. Powiem Ci w sekrecie, że wszelkie poszukiwania błędów w kompilatorze, szczególnie z takimi trywialnymi sprawami, są z góry skazane na śmieszność, tak więc to czy brnąć dalej w zaparte to już Twoja decyzja. Co z tego, że ty sobie w main.c zdefiniujesz, skoro pliki od UARTu...
Witaj :) Co do wgrania, jeżeli używasz System Workbench for STM32 to tam trzeba na projekcie w drzewku nacisnąć prawym myszy, wybrać "Debug As" -> "1 Ac6 STM32..." i po odpaleniu wybrać: Debug device: ST-Link-V2 Debug interface: SWD Tutaj masz obrazki: http://forbot.pl/blog/artykuly/programow...
a pamiętałeś żeby włączyć RCC dla tych portów w konfiguracji zegarów? RCC_APB2PeriphClockCmd(RCC_APB2Periph_GP... ENABLE); Gdzie x to port.
A jesteś w stanie sprawdzić zgodność zakładanej częstotliwości zegara systemowego z rzeczywistą ?
Czy ktoś wie gdzie może być problem? Na pewno w tym, że nie czekasz ani na ustabilizowanie się zegara HSE, ani na ustabilizowanie się pętli PLL. Te operacje są obowiązkowe zarówno przed użyciem HSE jako źródła dla PLL jak i przed użyciem PLLa jako źródła dla rdzenia. https://github.com/DISTORTEC/distortos/b...
Korzystam z książki Krzysztofa Paprockiego "Mikrokontrolery STM32 w praktyce" i tam tego nie było. Było. Musiałeś przeoczyć, bo to jest w funkcji konfigurującej zegary RCC_Conf()
poprawiona kalibracja ADC i konfiguracja zegara - pomiar bez zmian
Ponieważ np. I2C komunikuje się z urządzeniem zewnętrznym przez piny GPIO ustawionymi jako alternatywna funkcja pinu AFIO i dlatego trzeba te bloki włączyć ..najoględniej mówiąc.
Zmieniłem trochę kod, zgodnie z sugestiami kolegów. Teraz mam coś takiego: [syntax=c]#include <stm32f0xx.h> void TIM6_DAC_IRQHandler(void); int main(void) { RCC->CFGR &= ~(RCC_CFGR_SW_1 | RCC_CFGR_SW_0); //HSI RCC->AHBENR |= RCC_AHBENR_GPIOCEN; GPIOC->MODER |= GPIO_MODER_MODER9_0; //wejscie GPIOC->MODER &= ~GPIO_MODER_MODER9_1;...
No, przestawienie zegara na 24 MHz z PLL to całe 4 linijki kodu - któż byłby w stanie napisać to sam...
Witam, Ostatnio z kolegą zastanawialiśmy się czy kolejność konfiguracji peryferiów w STM32 ma znaczenie ? Wiadomo, że zegary muszą być ustawiane w pierwszej kolejności, a następnie inne peryferia. Ale np. przy konfiguracji SPI, bądź ADC najpierw powinno zainicjować się GPIO, czy na odwrót, czy może kolejność nie ma znaczenia ??
https://obrazki.elektroda.pl/7314526000_... Po co? Bo potrzebowałem zastąpić taki zestaw urządzeń: https://obrazki.elektroda.pl/2866172900_... Czyli switcha 100M, ładowarkę USB, rozdzielacz, dwa 3 portowe (używane 4 porty w sumie) "wstrzykiwacze" PoE (jednego nie ma na zdjęciu) jednym urządzeniem, bo schludniej. Poza...
Mnie właśnie przydałby się sam scheduler, bo koncepcja działania peryferiów często bardzo zależy od użytego układu i samego projektu. Może powinieneś rozdzielić ten projekt na dwa, jeden to czysty scheduler i drugi projekt to cały system który z kolei jest oparty o ten pierwszy projekt. Zauważ, że im bardziej rozbudowany będzie ten projekt, tym trudniej...
Poprawnie zrobiłeś konfigurację zegara (RCC)?? Bo kod widzę pochodzi z cube.
Czyli w poniższym artykule są błędy? [url=link]https://forbot.pl/blog/kurs-st... Jest tam wzór: INT_FREQ = TIM_CLK/(ARR+1)(PSC+1)(CKD+1) Tak jest TIM_CLOCKDIVISION_DIV w CubeMX zdefiniowany:[syntax=c]#define TIM_CLOCKDIVISION_DIV1 0x00000000U #define TIM_CLOCKDIVISION_DIV2 (TIM_CR1_CKD_0) #define TIM_CLOCKDIVISION_DIV4...
0. Na początek postaraj się zapomnieć o SPL. To już nie jest rozwijane i nigdy nie powinno było się pojawić. 1. Środowisko definiuje startup, a ten może konfigurować PLL. Poszukaj pliku startup.c, albo startup.s oraz wywołań funkcji System_Init czy jakoś tak. Poszukaj też definicji zewnętrznego kwarcu, pewnie będzie 25MHz, a wtedy zegar jest ustawiony...
1. Rozłączenie openocd -> w widoku "Debug" w zakładce... "Debug" zaznaczasz OpnOCD i klikasz na ikonkę czerwonego prostokąta (albo PPM i coś tam z "Terminate" w nazwie). 2. Co do "automatyzacji" - nie wiem, nigdy nie próbowałem :) 3. Na pewno kompilator nie rozpoznaje definicji? Zakładka "Problems" nie ma nic wspólnego z kompilatorem i najlepiej o niej...
Wywal timeout i sprawdź w debugerze czy program przechodzi za konwersję z ADC. Jeśli nie to musi być błąd w konfiguracji gdzieś albo zegara albo samego adc.
NVIC->ISER U mnie przerzuciłem się na funkcję CMSIS, bo faktycznie sprawdzanie dwóch plików pdf w czterech miejscach w poszukiwaniu gdzie znajduje się dane przerwanie jest trochę utrudnionę. W tzw międzyczasie znalazłem sobie coś takiego: http://www.keil.com/download/docs/363.as... (STM32 Timer Example) i przyglądam się jak to jest tam zrobione
Ale przecież kod obsługi to już Twoja działka (my nawet nie wiemy co on ma robić). A to co trzeba na razie zrobić żeby to działało, to tylko konfiguracja. A to piszesz że umiesz zrobić.
Próbowałem juz wszystkiego, dodałem funkcję opóźniającą i dalej nic. Taktowanie zegara masz równieź ustawione na 72MHz?
Czy właściwą praktyka jest wyłączanie zegara RCC danego peryferium np. ADC w trakcie działania programu w celu rekonfiguracji ADC w trakcie działania programu? Jeżeli wyłaczysz zegar to niczego nie skonfigurujesz bo nie da się niczego zapisać do rejestrów (abstrahuję od uK, które mają dwa zegary ADC). Aby zmienić konfigurację trzeba ADC wyłączyć ....
Da się tak ustawić PLL by uzyskać 48MHz na wewnętrznym RC. Testowałem USB na wewnętrznym RC (bez kalibracji HSI) i działało to poprawnie. Tak czy inaczej kalibracja jest wskazana, bo nie polegałbym na domyślnej kalibracji RC. ST ma noty aplikacyjne w których podany jest sposób na kalibrację RC z zewnętrznego sygnału zegarowego lub przy użyciu zegara...
Rozumiem, chodzi mi tutaj bardziej o "dobre" praktyki programistów. Powiedzmy konfiguracja RCC w STM32. Są STD i HAL, można to zrobić. Wykonuje się to miliardy taktów zegara, można prościej. Makra, odpowiednie funkcje... jak? Jakieś przykłady?
Rada praktyczna: ustaw preskaler tak, żeby podzielony zegar timera miał jakiś "okrągły" okres, np. 1, 10 lub 100 us, wtedy nie będziesz musiał pracowicie wyliczać wartości okresu timera, np. preskaler 7200 -> okres zegara 100 us; w celu uzyskania jednej sekundy ładujesz do ARR 10000-1. Twój problem, jak napisano wyżej, wynika z braku kasowania znacznika...
Odpalasz zegar dla tim 2 a używasz tim 6 więc jak to ma działać? :D
Witam Mam zdaje się banalny problem - mianowicie chcę zamigać diodą - procesor STM32F103RBT6 :P O ile na STM32F4 nie miałem z tym problemów to tutaj nie mogę sobie z tym poradzić od kilku godzin. [syntax=c]void RCC_Config(void) { RCC->CR |= RCC_CR_HSEON; FLASH->ACR |= FLASH_ACR_PRFTBE | (1<<2); //konfiguracja flasha (latency = 2 takty) RCC->CFGR...
automatyczna konfiguracja stosu, zegara, przerwań (startup). Kolego, nie opowiadaj bajek. Gdzie jest ta automatyczna konfiguracja??? Na przykład dla STM32F4xx, wielkość stosu definiujesz w pliku startup_stm32f4xx.c, konfiguracja zegara w pliku startup_stm32f4xx.c, bazuje na ustawieniach zawartych w stm32f4xx_conf.c, co często sprawia, że rdzeń jest...
Źle popatrzyłem w twój kod i wygląda na to że miałeś inne literki do zapisu BSRR. Rozejrzę się z ciekawości po dokumentacji i może coś wymyślę. Na razie olej pętle i delaye, wpisz do ODR same jedynki i zakończ while(1); Zobacz diodę, ale zmierz też woltomierzem co się tam dzieje. Zastanów się też czy linker Ci nie nie dodaje jakiś wstępnych ustawień...
Na bazie jednego z przykładów od STM zrobiłem transfer DMA z urządzenia zewnętrznego i drugi układ z transferem do urządzenia zewnętrznego. W każdym przypadku miałem zewnętrzny sygnał taktujący (zegar) danych równoległych w takt którego dane są wysyłane/odbierane. W przykładzie był do tego zaprzęgnięty któryś timer, ale nie pracował jako licznik tylko...
[syntax=c]RCC->APB2ENR= RCC_APB2ENR_IOPAEN; //włączasz zegar portu A RCC->APB2ENR= RCC_APB2ENR_IOPCEN; //wyłączasz zegar portu A, włączasz portu C [/syntax] Jw. ;)
Witam. Od niedawna staram się zapoznać z uC STM32 i chciałbym skorzystać z pinów PD0,PD1 uC stm32f100. Mój kod wygląda następująco: [syntax=c] GPIO_PinRemapConfig(GPIO_Remap_PD01, ENABLE); GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GP... ENABLE); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;...
Czyli układ nie odpowiada na przesłany adres. Czy obie linie adresowe są przypięte do masy? Jeżeli tak, to może zamieniłeś SCL z SDA? Co pokazuje analizator? Czy zegar SCL na pewno ma częstotliwość do 400 kHz?
AVE... (at)_lazor_ Możesz mi napisać konkretnie, co jest złego w przykładzie dla STM32, który zapodałem? Bo poszukałem paru innych przykładów i mają one podobne elementy, co ten: jest funkcja main(), która w praktyce nie różni się niczym od wersji 8-bit, i są typowe dla STM32 bloki konfiguracji zegarów i GPIO, oba dość rozbudowane, ale w końcu jest...
Do ARR załaduj wartość równą częstotliwości zegara w Hz dzielonej przez 50 minus 1. Rejestrowi ARR zapewne odpowiada to pole struktury TIM_Period.
Witajcie, Kupiłem sobie płytke deweloperską NUCLEO-H743ZI2 i próbuję ją połączyć z kodekiem CS4220 (taki akurat mam pd ręką), ale coś mi to nie chce działać. Nie znalazłem też nigdzie w internecie żeby ktoś próbował pracować z tym kodekiem i STM32. Jest z tym jakiś problem czy ja coś źle robię? Co do samej konfiguracji, ustawiłem prędkość transmisji...
Naprawdę wierzysz, że uszkodzenie taśmy powoduje zmianę częstotliwości zegara procesora? Coś za dużo tych cudów. Ok, WS2812 potrafi się uszkodzić, jeśli łączysz układy "pod prądem", bez wcześniejszego połączenia mas - w takim przypadku psuje się pierwsza kostka na taśmie - łatwo można to sprawdzić oscyloskopem (czy przepuszcza dane dla drugiej).
Witam, Mam jeszcze jedno pytanko, czy pomimo tego, że Timer 2 jest podłączony do magistrali APB1 taktowanej zegarem 36MHz (max) to i tak na jego prescaler wchodzi sygnał 72Mhz? (CK_INT) pozdrawiam Krzysiek
Czy włączyłeś zegar dla ADC1? Coś takiego: RCC_APB2PeriphClockCmd(RCC_APB2Perip... ENABLE); Pozdrowienia, m.ki
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...
To nie ma znaczenia - magistrala do której jest podpięty definiuje tylko sposób dostępu przez kod użytkownika i źródło zegara. Wyjścia timera są dołączone do pinów raczej fizycznie, co najwyżej konfiguracja portu odpowiada za multiplexacje kilku układów peryferyjnych na jedno wyjście. 4\/3!!
A masz fizycznie podłączone jakieś urządzenie podłączone do tego I2C? Mówisz o Na D15 jest SCL z I2C1 jednakże po podłączeniu oscyloskopu nie ma sygnału zegarowego ,a w Cube pokazujesz PB8 PB9. A mi wychodzi I2C na PB6, PB7. Nie widzę w kodzie momentu włączenia zegara dla I2C . Czy porty masz skonfigurowane jako open drain? Adres urządzenia jest właściwy?...
Wg mnie nie trzeba nic zmieniać. Konfiguracja układów peryferyjnych typu RCC czy GPIO raczej się nie zmieniła, w startupie na pewno nic się nie zmieniło (przecież to wciąż Cortex-M3). Rozmiary pamięci można zmienić, ale nie trzeba (w końcu kod zajmuje ułamek flash i ułamek RAM, więc nic to nie zmienia w zasadzie). Adresy pamięci na 99,666% się nie zmieniły....
O ile makra masz poprawne.... To BRR i BSRR to nie rejestry do stosowania RMW. Czysty zapis bez andów czy orów. Gdzie włączone zegary Dla GPIO i SPI? Co debuger na to wszystko?
Jechałem debugerem i nie wchodziło w SysTick_Handler... Kod poniżej: [syntax=c] /************************* * stm32 uart main.c *************************/ #include "stm32f10x.h" #include "stm32f10x_flash.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_usart.h" #include "stdint.h" #include "misc.h" #define CLK_FREQ 72000000...
Ja ostatnio używam dość często EXTI, wczoraj realizując moduł umożliwiający komunikację przez RFM22B: sygnał nIRQ wprowadzony mam na jeden pin, z którego mam przerwanie, generowanie przerwania mam tylko od zbocza opadającego i nigdy nie wyzwala mi się na zboczu narastającym (tak więc exti zachowuje się poprawnie). Moja konfiguracja EXTI (jeśli kogoś...
Dokładnie. Dzięki. PS. poprawne wartości dla serwo to: timeBaseInit.TIM_Period = 10000; timeBaseInit.TIM_Prescaler = 48; przy 24MHz zegara.
To nie mikrokontroler "marnuje pamięć", a źle napisana biblioteka. Kod na uC 32-bitowy na ogół nie jest dłuższy niż odpowiadający mu kod na uC 8-bitowy, bo to samo da się zrobić mniejszą liczbą operacji. Za jakość bebechów biblioteki odpowiadają jej autorzy. Projekty, które na STM32 robią dużo więcej, niż da się zrobić na śrenim ATmega, na ogół zajmują...
Nie wiem czy ożyło bo ten wstawiony ostatnio program zlasowal mi mózg , błędów zamiast mniej to było coraz więcej i w końcu ten kod odłożyłem na bok. Próbuje cos zwojować na bibliotece HALL ale pomimo iż program się kompiluje nie wiem czy jest poprawianie napisany a nie będę pytał AI bo i tak mi nie powie. Program się nie uruchamia więc albo inicjacja...
Witam, Zacząłem zabawę z STM32, kupiłem najtańszy moduł z procesorem STM32F103C8T6, programuje z użyciem STLink v2 w środowisku AC6 STM32 (eclipse) biblioteka StdPeriph. Prosta obsługa portów działa, kompiluje i debugguje poprawnie. Jednak jest problem z UARTem, ciągle łapie śmieci (realTherm pokazuje błąd ramki). Konfiguracja baudrate itd na PC i uC...
3. W razie popełnienia jakiegoś błędu przy konfiguracji zegara istnieje potrzeba uruchomienia cpu w trybie bootlandera. Czy warto dodać przycisk z podciągnięciem do vcc, czy może można to rozwiązać w inny sposób? Wyprowadź reset na SWD, i jeśli nie planujesz używać bootloadera, możesz wyrzucić rezystor na BOOT1. 4. Jeśli chodzi o podłączenie programatora,...
dzięki za podpowiedź choć akurat dla STM32F107 jest to troszkę bardziej pogmatwane, konfiguracja z uwzględnieniem magistrali dla I2S wyszła tak, ale pytanie czy tak jest na prawdę pozostaje otwarte.... [syntax=c][/syntax]void RCC_traktowanie(void) { //reset ustawien do wartoci domylnych RCC_DeInit(); /*właczanie rezonatora zewnetrznego*/ RCC_HSEConfig(RCC_HSE_ON);...
Cześć, Pozwolę sobie oszczędzić trochę czasu innym, którzy spotkają się z tym problemem. Nie wiem jak wygląda sprawa ze starszymi mikrokontrolerami, ale w F7 rozwiązano problem odwróconej kolejności bitów, rejestry modułu CRC pozwalają na ustawienie sprzętowego odwrócenia bitów i bajtów. Przykład konfiguracji pod CRC32[zip, itp] dla biblioteki HAL:...
Nie znam nowych avrów, ten kod przypomina mi STM32, natomiast w starych była globalna flaga uruchomienia przerwań, sprawdzałeś czy tutaj takiej nie potrzeba? I przez analogię do STM, czy po zmianach częstotliwości zegara, nie trzeba poczekać ileś cykli aż się ustabilizuje? Jak tam prosty przykład? No i przeniósłbym zliczanie minut do przerwania, u siebie...
Korzystając z okazji zadam kolejne pytanie, dlaczego po konfiguracji i2c od razu mam ciągle ustawioną flagę busy? I2C resetuje po włączeniu zegara. Do i2c podpięta pamięć FM24cl16 z 1k podciąganiem.
Witam Moje pytanie brzmi jak w temacie. Pewnie zaraz usłyszę, że jest tego na forum lub w sieci na pęczki, ale trudno. Ja nic nie znalazłem, a to co znalazłem widocznie nie było dla mnie dość zrozumiałe. Dysponuje środowiskiem RIDE7 i uC stm32f103vet6 z Propoxa. Poczytałem trochę w sieci i chciałbym zacząć przygodę z tą rodziną uC. Jednak mam problem...
Witam, Pracuję nad projektem urządzenia, w którym po raz pierwszy zastosuję mikrkontroler STM32 zamiast dotychczasowych AVR. Zadecydowałem się użyć układ STM32F030K6T6 oraz środowisko programistyczne CooCox. Na poczatek napisałem prosty program w załaczniku. Mam takie pytanie, jak w programie zadeklarować, że uzywam zewnetrzny kwarc np: 12Mhz? [syntax=c]...
Z drugiej jednak strony naprawdę nie widzę tej wielkiej komplikacji przed którą się tak bronisz. Ot wpisanie zer do dwóch czy trzech rejestrów aby zresetować ustawienia zegara, a zresetowanie wszystkich układów peryferyjnych w STM32 jest równie banalne - wpisać 0xffffffff do wszystkich rejestrów typu RCC->...RSTR, a następnie wpisać tam zero. Wiem że...
Witam, Mam pewnien problem ze zrozumieniem SPI w STM32F0 (dokładnie STM32F030C8T6). Mianowicie, przy takiej konfiguracji: void SPI_Set(void) { RCC->APB2ENR |= RCC_APB2ENR_SPI1EN; // wlaczenie zegara dla SPI1 RCC->AHBENR |= RCC_AHBENR_GPIOAEN; //wlaczenie zegara dla portu A (ponowne) GPIOA->MODER |= (GPIO_MODER_MODER4_1...
Tego zegara nie trzeba jakoś kosmicznie generować, wystarczy dobrze skonfigurować I2S. Generowanie zegara w jakichś przerwaniach to kosmos :D O to tajemna konfiguracja I2S: MUSI być skonfigurowany (i piny). Po takiej konfiguracji nic więcej z I2S już się nie robi, tylko się zastanawia co tu jeszcze nie działa :) Proponuję najpierw odpalić to wszystko...
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...
(...) parameters value: file %s on line %d\r\n", file, line) */ /* USER CODE END 6 */ } #endif /* USE_FULL_ASSERT */ https://obrazki.elektroda.pl/7610684000_... https://obrazki.elektroda.pl/2590996500_... https://obrazki.elektroda.pl/3191504300_... Dziękuję za szczegółowy opis problemu oraz udostępnienie...
Gdy uruchamiam z "SD 1 bit" to poprawnie się inicjalizuje, ale po zmianie na "SD 4-bit Wide bus" mam Error=1. Spotkałem się z opinią, że tryb 4-bit nie działa w SDIO z HAL... Teź próbowałem przełączyć się w tryb 4-bit ale tak samo dostawałem błąd, tylko nie pamiętam już jaka funkcja go zwracała;/ PS: Dlaczego w oknie konfiguracji zegara w CubeMX nie...
Witaj Freddie. W Twoim szablonie nie było błędu, była wartość zgodna z dokumentacją dla uC z zegarem do 72MHz. Rdzeń w STM32F4xx można taktować do 180MHz, ale dolna częstotliwość PLL jest wyższa - 192MHz, a nie 64MHz jak było w Twojej wersji przeznaczonej dla STM32F10x. Ja popełniłem błąd, ponieważ nie zaktualizowałem tej jednej wartości. Przy okazji,...
To ja proponuję: [syntax=C]RCC_Config(); // Najpierw konfiguracja zegara i włączenie taktowania dla peryferiów GPIO_Config(); // Następnie konfiguracja peryferiów[/syntax] Zastanów się też, czy chcesz korzystać z SPL? Można pisać czytelne, działające i lepsze programy korzystając z CMSIS oraz pliku definicji uC. Albo dostosować się do propozycji ST...
Tam pisało,że z maszynowego zrobiono program ASM - może lepiej podaj, gdzie pisze, bo przekaz przez kogoś, kto nie całkiem rozumie, jest niejasny. Jak się chce coś takiego zrobić na uC, to: (1) jest parę możliwości zrobienia błędu tak, że czasy będą się odrobinę różnić, i to bardziej, niż w układzie na scalakach CD4xxx; (2) zaprogramowanie uC może...
A gdzie masz konfigurację procesora, jak wygląda u Ciebie plik dla linkera? Gdzie jest konfiguracja zegara? Na początek proponuję zapoznać się z tym [url=http://www.elektroda.pl/rtvforum/to... projekty dla ARMów W pierwszym poście znajdziesz też odnośnik do strony, na której są przykłady, między innymi dla STM32. Miłej lektury...
Cześć, Ponieważ pojawiła się prośba o możliwość udostępnienia uproszczonej wersji na inny uC to przedstawię krótką instrukcję jak dostosować projekt do potrzeb. Generalnie w obecnej wersji obsługiwane są dwie rodziny procesorów czyli STM32F4xx i STM32H7xx - prawdopodobnie nie powinno być większych problemów z innymi podobnymi układami STM natomiast...
Witajcie, mam wyświetlacz z kontrolerem SSD1963, a dokładnie RFE43AQ-EIW-DBN. Chcę go sprzęgnąć z STM32F407 w trybie 8-mio bitowym (potrzebuję sporo wolnych nóżek mikrokontrolera). Kiedy robię to poprzez zwykłe "machanie" pinami GPIO, wszystko działa w jak najlepszym porządku, więc połączenia, wyświetlacz i konfiguracja działają. Problem robi się, kiedy...
Wydawało mi się że problemem jest jedynie kwestia złego konfigurowania układu. A jeśli chodzi o kod programu to uproszczę sprawę. Zrobiłem teraz następujący test: Na Atmedze i STM program wykonuje jedynie pętle while: [syntax=c]while(1) { LED_PORT |= LED; delay(100); LED_PORT &= ~LED; delay(100); }[/syntax] gdzie delay() zdefiniowano: [syntax=c]void...
Przesyłasz dane przez I2C stosując protokół z L3? DOM dotyczy trybu L3, z którego na tej płytce nie możesz korzystać. Adres urządzenia na I2C to 0x30 do zapisu i 0x31 do odczytu. To wszystko jest w dokumentacji. Weź też pod uwagę, że Atmega32 nie nadaje się do takiej aplikacji. Dane musisz przesyłać bardzo stabilnie, a ten układ tego nie potrafi, nie...
A gdzie konfiguracja zegara ?
Witam wszystkich Poniżej zamieszczam kod który przeraża mnie swoją wolnością znaczy się brakiem szybkości. To jest STM32 a działa wolniej niz ATMEGA8. Osobiście nie sprawdzałem oscyloskopem taktowania ale jesli wierzyć konfiguracji PLL to zegar główny to 64MHz while zajmuje 16 albo 18 cykli - MASAKRA. Jak to przyśpieszyć? Czy jest możliwe wykorzystanie...
0. Używając SPL sam prosisz o problemy. 1. SPI_Cmd(SPI1, DISABLE); Jeżeli to ma włączyć SPI, to chyba powinno być ENABLE? 2. Dla SCK i MISO ustawiasz GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; Który układ generuje zegar? A dla MISO powinien być pull-up. 3. !CS nie może być na stałe do masy. Po pierwsze operacje są synchronizowane sygnałem...
W standardowym nagłówku z CMSIS masz przecież makra np USART_CR. Na forum wrzuciłem też całkiem przyjazną funkcję do konfiguracji IO, wtedy kod wygląda tak: [syntax=c]static void UsartInit(){ RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_USART1EN; GPIO_Config(GPIOA, 9, AFPP_OUTPUT_2MHZ); USART1->BRR = FREQUENCY/BAUD; // set baud rate to BAUD USART1->CR1...
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...
Witam można to zrobić tak? Dwa projekty w jednym boot w drugim program wykonywalny. 1. projekt z bootem rom (rx) : org = 0x08000000, len = 16k // akurat 16k ma sektor// linker w tym projekcie mam tylko dwie opcje : - konfiguracja zegara+ czytanie programu np przez spi + zapis do flash - lub skok do adresu 0x08004000 2 projekt z programem. rom (rx) :...
Witam, Nie wiem co kryje ta funkcja: [syntax=c]gpio_pin_cfg(GPIOA, GPIO_Pin_4, GPIO_AF5_PP_50MHz); // NSS[/syntax] ale jak używasz SPL to GPIO_Pin_4 =4 a nie [syntax=c]#define GPIO_Pin_4 ((uint16_t)0x0010[/syntax] albo napisz np tak: [syntax=c] /* Connect SPI pins to AF5 */ GPIOA->AFR[0]&= 0x000FFFFF; GPIOA->AFR[0]|= 0x55500000;[/syntax] albo [syntax=c]gpio_pin_cfg(GPIOA,...
Bardzo dziękuje za zainteresowanie. Jeśli chodzi o wartość ARR to się pomyliłam użyte wartości to : ARR - 99 PSC - 99 CKD - 0. Konfiguracja zegara: Funkcja inicjalizacji timera : Funkcja do sterowania: [syntax=c]void pwm_tim3_set(uint16_t duty) { if (duty < 1) { pwm_duty = 0; TIM3->CCR4 = 0; } else if (duty > 99) { pwm_duty = 99; TIM3->CCR4...
To nie jest kwestia 8 czy 32 bit. STM32 też ma wsparcie w Arduino, zresztą nowsze Arduino to też ARMowe ATSAM od microchipa. Ich nieco niższa popularność wynika główie z tego, że nie każdy soft napisany na np. arduino uno zadziała na leonardo. Niemniej ogromna część bibliotek ma swoją wersję dla ARM i pisze się zasadniczo tak samo. Jest to wygodniejsze...
Wygeneruj sobie pliki w EVE editor czy designer i skopiuj setup do własnego projektu. Jak ci obraz miga to zapewne źle jest ustawiona konfiguracja zegara i w efekcie reszta timingów obsysa.
Czy konfiguracja zegarów jest w obu przypadkach taka sama? Czy masz kod wygenerowany w CubeIDE, czy tylko kompilujesz ten sam kod w obu środowiskach? SystemInit jest wołany przez moduł startowy przed main(), ty wołasz tę procedurę powtórnie z main(). Może coś psujesz w ten sposób.
Mógłby ktoś rzucić okiem i sprawdzić czy konfiguracja timera jest poprawna? [syntax=c]void TIM_Config(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; // TIM_OCInitTypeDef TIM_OCInitStructure; //Konfiguracja licznika 1 //Ustawienia taktowania i trybu pracy licznika 1 TIM_TimeBaseStructure.TIM_Prescaler = 7200-1; //taktowanie licznka fclk = 72MHz/7200...
Witam, mam pytanie, jak zaznacza się by odbiornik był w trybie master, a jak by w trybie Slave? Póki co myślę, że jak się wygeneruje Start, to automatycznie traktowany jest jako master, ale nie jest to dla mnie jasne. Tu jest fragment struktury inicjalizacyjnej, czy tutaj się ustawia Master/Slave? // Konfiguracja I2C1 I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;...
Tak, próbowałem przeprowadzić ponownie całą konfigurację usart'a poczynając od odłączenia zegara w RCC->APB1ENR i ponownego podłączenia. I nic. Potrzebuję zresetować up i wtedy przeprowadzić nową konfigurację. Lecz to nie wchodzi w grę gdyż zmiana musi nastąpić w locie.
Dzień dobry, zmagam się już z tym problemem od kilku dobrych popołudni, a zatem chcę napisać kod, który będzie uruchamiał tryb PWM korzystając z timera1 na dowolnym pinie w mikrokontrolerze STM32F303RE i nijak mi nie chce to zadziałać. Próbowałem już wielu rzeczy i nie wiem, co jest nie tak (zrobiłem to tak, jak jest w dokumentacji napisane, aby zrobić)....
Jeśli faktycznie TIM2 jest taktowany z częstotliwością 42MHz to Twoje przerwanie powinno być wywoływane co 10ms (konfiguracja RCC). Niemniej jednak kasowanie flagi przerwania powinno być pierwszą czynnością jaką przerwanie wykonuje a Ty kasujesz flagę raz na 100 wywołań. Poza tym umieszczanie funkcji USART_putint i USART_SendData wewnątrz przerwania...
Napisz co ile ma być zgłoszone przerwanie i jak masz skonfigurowany zegar. A poza tym po wejściu do przerwania musisz skasować bit zgłoszenia przerwania TIMx->SR &= ~(1<<0); Spróbuj może takiej konfiguracji: TIM6->PSC=0xFA00;//1ms,64MHz TIM6->ARR=10;// int co 10ms TIM6->DIER=1; TIM6->CR1=0x1;
Na początku upewnij się, że włączyłeś zegary we wszystkich wymaganych urządzeniach (albo załącz na forum cały program). Możesz też wymusić obsługę przerwania zewnętrznego używając funkcji bibliotecznej "EXTI_GenerateSWInterrupt". A poza tym proponuję zacząć od migania diodką a później napisz taki prosty program starając się powoli zastępować funkcje...
domyślnie są one ustawione tak, że uC pracuje zaraz po włączeniu W STMach też nie ma przymusu konfigurowania systemu zegarowego. Domyślnie mikrokontroler działa na wewnętrznym oscylatorze. W moim poradniku 3/4 peryferiów jest omówione bez ruszania konfiguracji zegarów. Trzeba pamiętać tylko o włączeniu sygnału zegarowego dla peryferiala. W uC 32 bit...
System init mam jeszcze z tych głupich bibliotek ST. Uruchamia tylko zegary. HW_Init_GPIO ustawia wszytkie piny SPI2 i jakieś ledy. Najpierw ustawiam piny SPI2 jako out PP aby CS nie był w stanie nikim, a zegar musi być wysokim zanim uruchomię SPI. void HW_Init_GPIO(void) { GPIO_InitTypeDef IO; RCC->APB2ENR |= (RCC_APB2ENR_IOPAEN...
Witam. Na wstępie przepraszam za może głupie pytanie i problem, ale jestem początkujący. Chciałbym móc sterować jasnością świecenia diody LED za pomocą PWM. W późniejszych próbach różne jasności ustawić pod różne przyciski itp, a na końcu sterować programowo. Program nie jest całkowicie mój, wzorowałem się na wielu kodach znalezionych w internecie......
opisz jak w procesorze STM32F411 skalibrować RTC używająć rejestrów. Posiłkuj się Reference Manual i notą aplikacyją AN4759 Wstępna ocena dostępnych informacji Użytkownik prosi o szczegółowy opis kalibracji RTC w mikrokontrolerze STM32F411 przy użyciu rejestrów, opierając się na Reference Manual oraz nocie aplikacyjnej AN4759 . Celem jest precyzyjne...
Przy kwarcu 8MHz i Twojej konfiguracji masz na CAN'ie 500kbit a nie jak piszesz 250kbit. To jaka ma być w końcu prędkość magistrali CAN? W Keil'u masz symulator i całkiem niezły "pomocnik" w postaci podglądu peryferiów - warto z tego skorzystać (np. sprawdzić czy wszystkie potrzebne zegary są włączone lub jaka "wychodzi" finalnie prędkość portu UART...
Korzystam z: Układ STM32 P103 (procesor STM32 F103 RBT6) Programator ARM-USB-OCD-H Środowisko CrossWorks v2.1.1 Problem: Pisząc własną obsługę USB wzorowałem się na przykładzie dla Keila (USB HID) i paczce z przykładowymi programami do USB ze strony Olimexa dla układu STM32 P103. Pierwszy (dla Keila) nie działał (operował na innych PINach itp.) ale...
Witam !!! Uruchamiam projekt https://hackaday.io/project/158256-hover... https://github.com/isabellesimova/Hoverb... Projekt jest napisany na STM 32 W swojej desce mam GD32. Po uruchomieniu błąd systemu zgłasza watchdog /* IWDG init function */ static void MX_IWDG_Init(void) { __HAL_RCC_WWDG_CLK_ENABLE(); hiwdg.Instance = IWDG; hiwdg.Init.Prescaler...
System Workbench for STM32 mam zainstalowany, zależy mi na programie startowym kolegi Freddie Chopin bo w SWFstm32 ma własną inicjalizację zegarów i odliczanie czasu systic nie zgadza się z tym co jest w programie a chcę uruchomić hd44780 gdzie potrzebuję dokładnych czasów. Chyba że koledze chodzi o coś innego? Pozdrawiam
Proponuje 50kHz przełączanie to jest jeśli dobrze pamiętam standardowa wartość. 180kHz to ja mówiłem że pójdzie bez problemu a nie że jest to górna granica. Powiem że nie pamiętam już do końca jak jest z konfiguracją PWM w atmedze bo ja teraz stm32 się zajmuje ale myśle że 1/10 częstotliwości zegara wyciągniesz czyli przy 20 MHz PWM do MHz ale nie potrzebujesz...
A teraz to samo AVR Nie ma to jak porównywać kod pracujący bezpośrednio na rejestrach do kodu z wyższej warstwy abstrakcji i to w dodatku błędnego. Poniżej jest jak to można zrobić na w tym wypadku stm32. [syntax=c] // Przypięcie zegara do AHB1 RCC->AHB1ENR |= RCC_AHB1Periph_GPIOD; // Inicjalizacja portu GPIO GPIOD->MODER |= GPIO_Mode_OUT; GPIOD->OSPEEDR...
Na pytania odnośnie debugowania nie odpowiem - obraziłem się! Nie wiem, nie znam się - mi zazwyczaj działa:) Podpowiem, że przydatny jest fakt jednocyklowych operacji na ITCM i DTCM ( stm32H7 ) - efektywność użycia pamięci Flash spada w rzeczywistych ( czyli, nie tylko sekwencyjnych ) zastosowaniach, wraz z f większą od ok. 1.5xHSI ( większość stm32...
konfiguracja stm32 stm32 konfiguracja stm32 coocox konfiguracja
volvo silnika testy akumulatorów ustawienie orange
taśma kaptonowa praca programista
Brak dźwięku w głośnikach wysokotonowych Tannoy 607 po przerwie BIOS z obsługą NVMe dla DHLB1030ZD/X1 Panasonic FZ-G1