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.
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.
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...
Więc, doszedłem do tego, że mam źle skonfigurowany Timer. Jak wrzuciłem kod z użyciem bibliotek to ruszyło, zaczął przesyłać w nieskończoność jakieś losowe wartości. Po pierwsze w NVICu muszę odblokować przerwanie od Timera: Tak na początek - rejestr danych USART ma 8 bitów, nie 16. Zaprogramuj transfer DMA 8 bajtów, a nie czterech słów. Liczby transmitowanych...
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...
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 ??
Poprawnie zrobiłeś konfigurację zegara (RCC)?? Bo kod widzę pochodzi z cube.
Witam, Niedawno przesiadłem się na programowanie STM32, z arduino, i już na samym początku spotkałem problemy. Aby nie było niedociągnięć że robię coś źle, opisze wszystko jak mam ustawione. Posiadam moduł STM32F103C8T6 ARM STM32 Cortex-M3 oraz programator ST-LINK STLINK V2. Piny podłączone następująco: ST-Link - Moduł 3.3V - 3V3 SWCLK - SWCLK GND -...
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.
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?
Znalazłem przykładowy program do migania diodą, która zawarta jest na module STM32F103*: Open On-Chip Debugger 0.10.0-dev-00019-g5352c55 (2019-02-14-15:31) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.... Warn : Could not determine executable path, using configured BINDIR. none separate Info...
Problem zegara się szybko wyjaśnił. Wystarczyło zmienić na format binarny. PS: Niestety obecnie padł mi programator i ładuje przez bootloader.
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ć ....
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?
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...
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...
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;...
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...
Coocox bardzo dobry na początek. Łatwy w konfiguracji, współpracuje z programatorami JTAG, ST_Link, nie ma ograniczeń, ma sporo ułatwień (automatyczne dołączanie potrzebnych plików, automatyczna konfiguracja stosu, zegara, przerwań (startup). A co do płytek z STM32 to najlepsze są serii discovery - tanie i posiadają wbudowany programator z ST_Link,...
Odpalasz zegar dla tim 2 a używasz tim 6 więc jak to ma działać? :D
Witam, próbuję skonfigurować licznik TIM2 w STM32L152RE, aby zliczał impulsy z pinu w trybie alternatywnym AF1 na PA0 i generował przerwanie po zliczeniu 10. Stan wysoki na linii w przerwaniu od SysTick. Niestety, TIM2 po zliczeniu impulsów nie generuje przerwania i nie ma żadnej reakcji od niego. Czy ktoś spotkał się z takim problemem? Funkcje do obsługi...
Ź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. ;)
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...
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...
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...
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?...
Jeśli nie będziesz grzebał w konfiguracjach taktowania szyn, wszystkie szyny L4 pracują z częstotliwością CPU, timery też. Zdaje się, że pracowicie rozwiązujesz problemy, które sam wygenerowałeś. Włącz PLL z taktowaniem z MSI, przestaw czas dostępu do Flash, poczekaj na gotowość PLL i przełącz się na PLL. To wszystko, jeśli chodzi o konfigurację zegara....
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
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?
Walczę z obsługa klawiatury - w tym necie nic sensownego znaleźć nie można .... na razie tyle .......; #include <stdio.h> #include <stdlib.h> #include <HD44780.h> // definicje zmiennych ----------------------------------------... #define vcc_ref 5.0 // napiecie referencyjne #define hall_ref 2.5 // napiecie referencyjne...
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ś...
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ą...
(at)gaskoin Racja. Jak coś nie działa to się wszędzie szuka błędów. Nie korzystam z żadnych dodatkowych peryferiów. Jest main() ustawienie usarta2 ustawienie DMA i tyle. A właśnie - za ustawienie zegara procesora odpowiada funkcja skopiowana z StdPeriph która się zwie SystemInit() w sumie zapomniałem o niej. Napiszę swoją od nowa i się odezwę - może...
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,...
Poniżej program do obsługi wyświetlacza TFT: Interesuje mnie dlaczego funkcja LCD_Clear(WHITE) na STM32 działa wolniej niż na Atmedze32 z kwarcem 16MHz. Wydawało mi się że powinno czyścić ekran szybciej na STM32 a już na pewno nie wolniej. Tylko nie zwracajcie mi uwagi na temat pętli opóźniającej;) ponieważ i tak nie jest wykorzystywana w LCD_Clear....
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...
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:...
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.
ustawienie taktowania gpio GPIO_Speed_50MHz przy nieskonfigurowanym pll co powoduje, on rowniez jest taktowany maksymalna czestotliwoscia ,czyli w tym wypadku 8 Mhz ? GPIO_Speed nie ma nic wspólnego z częstotliwością taktowania portu. Zmniejszenie "gpio speed" powoduje ograniczenie stromości zboczy sygnału wyjściowego co np. redukuje zakłócenia. Polecana...
Witam, mam dziwny problem z komunikacją I2C. Przed stworzeniem tematu przetestowałem przykłady użycia I2C udostępnione przez ST (komunikację I2C1 z I2C2 itp.) i wszystko było ok, niestety pod drobnych zmianach i podłączeniu RTC DS1307, uC nie może się z nim skomunikować. Nie wiem w czym jest problem, a siedzę już nad tym ze 2 dni, więc prosiłbym żeby...
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...
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;...
No racja, dzięki. jeszcze tak dla pewności: to w ten sposób mam przerwanie co 0,2s: SysTick_Config(CLK_FREQ/14400000); Nie. Taka konfiguracja spowoduje to, że przerwania będą bardzo szybko występować (co kilka cykli zegara). Jak chcesz mieć przerwanie co 200ms to skonfiguruj timer tak: I automatycznie za każdym przerwaniem powinna wykonywać się powyższa...
Witam po długiej nieobecności. Teraz chcę testować obsługę karty SD przez SDIO. Gdy uruchamiam z "SD 1 bit" to poprawnie się inicjalizuje, ale po zmianie na "SD 4-bit Wide bus" mam Error=1. Dlaczego funkcja BSP_SD_Init zwraca taki błąd? Czy trzeba gdzieś/coś dodatkowo konfigurować? PS: Dlaczego w oknie konfiguracji zegara w CubeMX nie ma możliwości...
Ja wiem co chcesz osiągnąc ale to chyba nie do końca właściwa droga. Po pierwsze aktualizacja CCRx powinna następować w pewnych określonych momentach. Dlaczego: wyobraź sobie, że licznik jest np równy 100, CCRx 105. Tym momencie zmieniasz ten CCRx na 99. Co się dzieje. Licznik będzie liczył do końca, przekręci się i doliczy do 99 - dając takie PWM o...
Czytam niektóre co czytelniejsze kawałki tego kodu i zachodzę w głowę, kto wyłączył HSI po resecie, że koniecznie trzeba go włączać i kto powpisywał w domyślnie wyzerowane pola niezerowe wartości, że musisz te pola zerować, w dodatku pojedynczo. Jeśli sam nie radzisz sobie z ustawieniami zegara, skorzystaj z CubeMX.
1. W stm32f429/439/427/437 powinno być dodane opóźnienie po włączeniu zegara w AHB/APB - jest to opisane w erracie. 2. www.elektroda.pl/rtvforum/topic2968552.h...
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,...
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...
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, z góry przepraszam za mój nikły poziom obeznania w świecie STM32. Myślę, że problem będzie błahy dla wielkich myślicieli elektrody :) Otóż skonfigurowałem sobie TIM7 do pracy tak: [syntax=c]TIM_TimeBaseInitTypeDef TIM_InitStructure; TIM_InitStructure.TIM_Period = 4; TIM_InitStructure.TIM_Prescaler = 999; TIM_TimeBaseInit(TIM7, &TIM_InitStructure);...
Kod: [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 36000000 /* User defined function prototypes */ void GPIOA_Init(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...
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...
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...
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...
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,...
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...
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.
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...
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.
Nie ma znaczenia czy to Keil czy inne środowisko. Nie znajdziesz rejestru, z którego możesz odczytać wartość częstotliwości taktowania rdzenia wprost, czyli jawnie np. 72000000. Możesz odczytać poszczególne ustawienia pętli z rejestrów RCC i użyć wzoru, aby obliczyć przybliżoną, rzeczywistą wartość w oparciu o częstotliwość podłączonego do układu kwarcu,...
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...
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 zegara czasu rzeczywistego (RTC) w mikrokontrolerze STM32F411, z wykorzystaniem bezpośredniej manipulacji rejestrami. Wskazuje na potrzebę posiłkowania...
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 !!! 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...
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...
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...
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]...
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...
Moja konfiguracja z zycia wzieta to ostatnio mialem ustawic baudrate 6Mbode/s przy zegarze 84Mhz na USART1. Prze oversample 16 sie nie da bo on dalby najwyzej 5.25MB/s a przy oversampling na 8 trzeba ustawic BRR na 0x34 czyli 3x8+4=28(dzielnik) przy wzorze zegar/baudrate daloby nam 0xE lub 0x1C(przy przemnozeniu przez 2) czyli zle. Ale troche mi to...
upanie , może i faktycznie źle Ciebie zrozumiałem. W każdym bądź razie dzięki za poinformowanie o tym dodatkowym impulsie na zegarze. Warto o tym wiedzieć jak coś będzie szwankowało. Chociaż może nie będzie mi ta informacja już potrzebna, bo STM32 wydaje się być ciekawą alternatywą dla SAM7S (podobna cena, podobny pobór prądu, lepsza wydajność) i jak...
Poza tym czy masz inny układ na magistrali, jaki masz zegar i jaki baud na CANie chcesz uzyskać? STM jest taktowyany 168MHz , prędkość CANa obojętnie byle by uruchomić. Na magistrali nic nie ma tylko przejściówka z CAN na USB dzięki której mam zamiar sprawdzić poprawność transmisji z STM32 po CANie
Na poniższym obrazku jest przedstawiony sposób konfiguracji zegara. http://obrazki.elektroda.pl/4653757300_1... Dodatkowo jak już wcześniej pisałem, sprawdziłem parametry generowanego PWM przy pomocy oscyloskopu. Wszystkie się zgadzały.
To mysisz sprawdzić polaryzcję zegara itp. Niestety nie pomogę ci z komendami tego wyświetlacza. Sprawdź też czy timingi się zgadzają (np czy szerokośc resetu, czas pomiędzy ustawieniem poziomów a przesyłaniem jest wystarczający dla układu) Dodano po 1 ale kol szczywronek operuje z tego co widzę na danych 16 bitowych/
Witam, Walczę z obsługą STLED316S za pomocą stm32. Jak dla mnie strasznie nieczytelnie jest napisana nota tego układu i nie wiem w jakim formacie wysłać informacje do STLED316S [syntax=c]uint8_t pData[5]={0x00, 0x20, 0x1C, 0xB6, 0x1C}; uint16_t size=5; uint32_t timeout=10; HAL_GPIO_WritePin(GPIOA, STLED316S_STB_Pin , GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOA,...
Witam, Mam problem z uruchomieniem USARTa na mikrokontrolerze STM32L100RC. Kod pisałem w oparciu do Reference Manual, oraz poradnik dostępny na tym forum. Czy jest w stanie wskazać mi błąd, bo mi już brakuje pomysłów. Kod: [syntax=c] //Konfiguracja komunikacji po USART1 void USART_Conf() { uint16_t divider; //Odblokowanie zegara dla USART1 RCC->APB2ENR...
Witam, Po okiełznaniu GPIO i DAC na STM32, przyszła kolej na timery i PWM. Używajac procka STM32F429 napisałem taki oto program: [syntax=c] #include "stm32f4xx.h" #include "stm32f4xx_rcc.h" #include "stm32f4xx_gpio.h" #include "stm32f4xx_tim.h" void SwitchRCC_HSI(void) { // ustaw bit HSION -> włącz wewnĹ•trzny oscylator RCC->CR...
Dzieki Panowie, udało mi sie uzyskać zamierzony efekt kierując sie zaleceniami kolegi Sareph , dobrze wiedzieć jak sie ustawia poszczególne bity rejestrów, jednak mam pytanko: https://obrazki.elektroda.pl/4282252600_... właśnie zrobiłem to w taki sposób jak powyżej, bo nie wiem jak ustawić bit25 jeżeli pod nazwą SWJ_CFG Piotrus_999...
SystemInit wzorowałem na funkcji konfigurującej zegar, której autorem jest Freddy Chopin. Uzupełniłem ją o konfigurację zegarów dla USB oraz I2S. Dodałem pliki, np. Config.h, a pozostałe pliki zmodyfikowałem w taki sposób, aby po utworzeniu nowego projektu mieć cały zestaw plików, które zawierają też szablon programu z inicjalizacją i obsługą przerwania...
konfiguracja stm32 stm32 konfiguracja bibliotek eclipse konfiguracja stm32
czasopismo audio corel komputer marvell yukon 88e8040
philips 55pus focus wymiana komputera
Jak odczytać stan naładowania baterii Duracell z paskiem PowerCheck? Podłączenie pieca gazowego do stabilizatora SVEN: AVR czy surge protection?