Zapomniałeś oczywiście o FLASH LATENCY. Musisz ustawić odpowiednio rejestry pod 72MHz, łatwo to znajdziesz w RM.
Przeczytaj sobie np ten temat: http://www.elektroda.pl/rtvforum/topic17... Od siebie napiszę tylko tyle, że jak porównasz kody bez bilioteki ze źródłem biblioteki to zauważysz jedną rzecz: coś co często można zrobić w dwóch linijkach (konfiguracja) tam jest robione w dwustu. Jest tam mnóstwo niepotrzebnych obliczeń do sprawdzania jaki bit gdzie...
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...
wiec mam 8MHz tak jak fabrycznie dostalem stm32f0discovery. Napewno? "Fabrycznie" jest kwarc 8MHz natomiast MCU ma mnożnik PLL który można ustawić. Jakiego środowiska używasz? W "moim" eclipse standardowy szablon dla STM32F0DISCOVERY wygląda tak: Na pewno mam 8MHz. SysTick'iem sie upewnilem. Pokaż kod.
Przecież w Twoim kodzie nie ma ustawiania tzw. "flash latency".
To podpowiedz jeszcze co z tym flash latency o którym dopisałem w poście powyżej.
Wybaczcie ale jestem w pracy i już śpie, lepiej nie będę nic pisał :P Z programem Ci nie pomogę bo nie znam tej biblioteki, jedyne co mi się rzuca w oczy to "FLASH LATENCY", którego się nie ustawia bo przecież program uruchamia się z ramu
Hard Fault jest podczas czytania czy podczas zapisu? Jakoś trudno mi uwierzyć w błąd podczas czytania. A próbowałeś rozbić operację na odczyt do zmiennej tymczasowej i zapis do rejestru? Wg mnie źle poustawiane zegary albo prefech czy też flash latency i wtedy w debugerze będzie miał faulty losowo. Bez jakichkolwiek fragmentów kodu to pewnie niewiele...
Hmm nie ustawiałem Flash latency. Myślisz to dlatego zegar systemowy nie chce byś szybszy? Edit: wpisałem i pomogło. Dzięki tylko powiedz why? FLASH_SetLatency(FLASH_Latency_2); To jest jakiś czas zwłoki pomiędzy wyslaniem adresu a początkiem wysyłki danych?
Keil startując CPU odpala funkcję SystemInit() która to jest zdefiniowana w pliku system_stm32f4xx.c . Plik ten możesz napisać sobie sam, lub możesz skorzystać z gotowca. Gotowce masz w przykładach od STM lub możesz wygenerować go za pomocą Excela jak wspominał kolega imarszi . Tutaj masz opis jak się tym narzędziem poslugiwać i skąd je wziąć : Clock...
Ok winowajca znaleziony. Tadzik dzięki naprowadziłeś mnie na dobry tor. Sprawdziłem rejestry flasha. Okazało się że domyslnie jet ustawiony 32bit access mode. I w trybie 32 bitowym flash latency nie może byc ustawione. Najpierw trzeba zmienić tryb na 64 bitowy dopiero wtedy można ustawić wait states
Czy próbowałeś bezpośrednio przed wciśnięciem przycisku "Connect" w ST Link Utility nacisnąć przycisk Reset (sprzętowy). Oczywiście jeśli taki masz na PCB. Jeśli nie masz to należy go dolutować. Wciśnięcie resetu musi być "wykonane w odpowiednim czasie", który musisz dobrać eksperymentalnie. Nie można wykluczyć, że procek padł, ale zacząłbym od tego...
//wlaczenie opoznienia FLASH FLASH ->ACR |= (FLASH_ACR_LATENCY_1); Dla częstotliwości 72 MHz, żeby pamięć Flash działała musisz ustawić jej dwa cykle opóźnienia a nie jeden.
Gdy ją od komentuję, podczas debugowania wszystko się sypie. W Zakładając że mówimy o projekcie stm32_blink_led, czyli tym dla F103. Jeśli w config.h ustawisz FREQUENCY na 24MHz max, w funkcji pll_start() wywalisz wywołanie funkcji flash_latency() (w F100 niby nie da się tego przestawiać), to powinno zadziałać, choć niekoniecznie optymalnie (w funkcji...
choć wydaje mi się że wskazane obszary pamięci są poprawne (0x80000000 przy BOOT0 ustawionym na 0 powinien wskazywać początek flasha). Co do tego żebym zerknął do noty to nie bardzo rozumiem, jedyne do czego można by się na upartego przyczepić to podciąganie NRST do zasilania, bo jest ono i tak podciągane przez wewnętrzny układ mikrokontrolera, także...
Próbuję zgodnie z DS ustawić częstotliwość APB1 na 42MHz. W związku z tym, że AHB ma zegar 84MHz należy zastosować dzielnik /2. http://obrazki.elektroda.pl/9304994000_1... [syntax=c]RCC->CFGR = (8<<16) | (4<<10) | 2;[/syntax] Niemniej ustawienie tego dzielnika w rejestrze CFGR na 2 nie przynosi skutku - APB jest tak samo...
Spróbuj dodać na początku linijkę: FLASH->ACR = 0x00000002; LATENCY: Latency 000 Zero wait state, if 0 < SYSCLK≤ 24 MHz 001 One wait state, if 24 MHz < SYSCLK ≤ 48 MHz 010 Two wait states, if 48 MHz < SYSCLK ≤ 72 MHz
Ale czego jeszcze nie wiesz? Wszystko zależy od szybkości pamięci FLASH. Minimum to 13 cykli. Jeśli interrupt latency ma być stałe należy tak zaprojektować procesor, aby przy każdej nastawie WAIT STATE dla pamięci Flash odpowiedź była jednakowa. W LPC11xx max WaitStates dla flash to 3 cykle czyli 13+3 = stały interrupt latency.
Piszę w System Workbench for STM32 . Faktycznie w pliku system_stm32f10x.c usunięcie ciała funkcji SystemInit pomogło. Musze zainteresować się kolegi startupem. Oto jej ciało: [syntax=c] /* Reset the RCC clock configuration to the default reset state(for debug purpose) */ /* Set HSION bit */ RCC->CR |= (uint32_t)0x00000001; /* Reset SW,SWS, HPRE, PPRE1,...
Masz nagłówek "stm32f10x.h" to z niego korzystaj. A nie stawiasz wszędzie (1 << X). Na poniższym przykładzie widać co chce zrobić... nawet nie potrzeba komentarzy, kto już jest obeznany trochę z STM32. [syntax=c]inline void RCC_conf(void){ FLASH->ACR |= FLASH_ACR_LATENCY_0; //set FLASH latency[2:0]=001, one state wait state, if 24MHz < SYSCLK...
Witam, otóż mam problem z konfiguracją zegara, tak aby mikrokontroler działał z prędkością 216MHz. Po próbie przetaktowania mikrokontrolera pojawia się problem z transmisją USART z czego wnioskuję, że robię coś źle przy konfiguracji zegara, bo transmisja USART przy standardowym taktowaniu działa bez problemu. [syntax=c] static void flash_latency(uint32_t...
Tak dokładnie to powinno być: if (USART1->ISR & USART_ISR_TC) GPIOA->BRR = 1u << DE_BIT; Pomogło, urządzenie sygnalizuje że otrzymało ramkę - jednak nie do końca działa. Po restarcie procesora jest kilka zapytań i nagle cisza. Pomaga tylko restart. Debugerem nie jestem w stanie wychwycić gdzie się wysypuje... Dodano po 24 Byłbym jeszcze...
Wiesza się w tym samym miejscu co w moim programie - po włączeniu przerwania NVIC_EnableIRQ. W stosunku do oryginału zmieniłem tylko port GPIO oraz dodałem obsługę TIM3 i mryganie diodą na podstawie TIM3->CNT by wiedzieć czy licznik rzeczywiście działa. W skrypcie linkera ustawiłem oba stosy oraz tak jak sugerowałeś zmniejszyłem pamięć o połowę -...
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...
Witam, Mam problem z odblokowaniem pamięci Flash do zapisu. sekwencja: FLASH->KEYR = 0x45670123; FLASH->KEYR = 0xCDEF89AB; Działa na pewno dobrze, na co wskazuje Lock (FLASH->CR & 0x80). Pozwala mi to na przeprowadzenie tylko jednej operacji na flash'u, na przykład mogę skasować jakąś stronę czy zapisać jakąś daną. Problem pojawia się gdy...
bo różnica jest oczywista i wystarczy sie zastanowić co te funkcje przynajmniej powinny robić. 1 konfiguruje cały układ zegarowy 2 wyłącznie startuje PLL Ja może rozwinę, choć przyczyną problemu jest wg mnie nie przeczytanie dokumentacji... Funkcja pll_start() z moich przykładów uruchamia PLL i konfiguruje niektóre rzeczy które do tego celu MUSZĄ być...
Witam. Nie pamiętam już, czy aby zmienić AGPCLK/CPUCLK należy przejść na User Define. Jeżeli tak, to przejdź i ustaw 2/3. Ile masz zainstalowanej pamięci operacyjnej. Nie dokładałeś jej czasem więcej przy okazji wymiany procesora? Jeżeli tak, to zostaw tylko ten moduł pamięci, z którym wcześniej wszystko działało poprawnie. Pozdrawiam. PS. Spróbuj tak...
witam posiadam STM32F103RET6 i jeśli ustawię PLL mnożnik na więcej niż 6 razy (co odpowiada 48MHz) to procek wysypuje się, przechodzi do HardFault_Handler, jesli konfiguracje przeprowadziłem w THUMBie to jeszcze na 56MHz pracuje. Po pierwsze chciałbym zauważyć, że STM32 (Cortex-M3) obsługuje tylko thumb-2, więc niby w jakim trybie jesteś normalnie?...
Próbuje uruchomić przerwania: vector.c wygląda tak [syntax=c]static void __Default_Handler(void) __attribute__ ((interrupt)); static void __Default_Handler(void) { while (1); } /* +=======================================... | assign all unhandled interrupts to the default handler +=======================================...
Wiec, probowalem jeszcze raz ale z innymi pinami sterujacymi - wybralem do tego PORT_B_PIN11 i PORT_B_PIN_12, nie jestem pewien czy dobrze to sprawdzilem w nocie katalogowej, ale wydaje mi sie ,ze one powinny byc 5V tolerant. Ponizej zalaczam caly config. h oraz main.c - probowalem znowu przetestowac mozliwe wartosci dla nowych pinow sterujacych niestety...
Main: Dodano po 2 (at)stracho Jakie opóźnienie proponujesz ? Poniższe nie pomaga: [syntax=c] void Delay(uint32_t delay) { while (delay--); } [/syntax]
Dzięki za tytuł. FLASH->ACR |= FLASH_ACR_LATENCY_2 | FLASH_ACR_PRFTBE ; to załatwia sprawę?
Jeśli chodzi o flash prefetch to robi to Twoja funkcja(flash_latency(uint32_t frequency))? Jeśli tak to mam włączone:) Nie wiem tylko jak włączyć akcelerator flasha i gdzie tego szukać. No to masz włączone wszystko co trzeba. 4\/3!!
Cześć, Platforma: STM32F769I-DISCO, środowisko: System Workbench for STM32 Wydawało mi się, że poprawnie skonfigurowałem FreeRTOS, ale ten znowu mnie zaskoczył :) Jak tworzę wątki przed vTaskScheduler(), to wszystko działa super, ale jak próbuję stworzyć wątek po uruchomieniu planisty, to wątki nie uruchamiają się. Może czegoś nie rozumiem, ale wydaje...
Mam z jakiegos template od ST ;/ jak wróce to przerobie na wersje od freddiego aczkolwiek w komentazu jest * 5. This file configures the system clock as follows: *=======================================... *=======================================... * Supported STM32F4xx device...
Witam. Na początek pochwalę się kodem : Tak wygląda main: [syntax=c]int main(void) { /* This sample code shows how to use STM32F4xx GPIO HAL API to toggle PG13 IOs (connected to LED3 on STM32F429i-Discovery board) in an infinite loop. To proceed, 3 steps are required: */ /* STM32F4xx HAL library initialization: - Configure the Flash prefetch, instruction...
Cześć, mam problem ze startem zewnętrznego kwarcu 16 MHz w STM32F030K6T6. Nota katalogowa mówi, że akceptuje on oscylatory z przedziału 8 - 32 MHz. Przy kwarcu są oczywiście dwa kondensatory 15 pF. W domyśle chciałbym uruchomić PLL x3, żeby mikrokontroler pracował z prędkością 48 MHz. Zmienna HSEStatus zostaje ustawiona na 0 po wygaśnięciu timeoutu...
Witam, Kilka dni temu kupiłem układ jak w temacie. Pierwszy program z migającymi diodami był bez zarzutu, zapalały się i gasły co sekundę tak jak powinny. Zdziwił mnie tylko fakt, że częstotliwość pracy rdzenia wynosiła tylko 1 MHz... wynika to z faktu, że w prostą funkcję Delay (zliczającą takty w dół) wrzuciłem wartość 1000000 i czas pomiędzy zapaleniem...
Witam! Timer generuje przerwanie periodyczne. W procedurze obsługi testowo chciałem przełączać stan na jednej z linii portu GPIO (prymitywny debug na LED), ale... okazało się, że nie działa. W pierwszej chwili szukałem błędów w inicjalizacji timera, ale później się okazało, że przerwania się generują, tylko ja tego nie widzę, bo nie wykonuje się przełączenie...
Witam, Nie mogę rozwiązać jednego problemu, może będziecie w stanie mi pomóc. Próbuję na STM32F042 uruchomić biblioteki dla czujnika VL53L (biblioteki ULD), ale problem w sumie raczej nie w tym. Kompilacja przechodzi bez problemu, ale przy próbie wywołania funkcji wpada w HardFault i nie mam pojęcia czemu. https://obrazki.elektroda.pl/7548785900_...
Słyszałeś kiedyś o formatowaniu kodu ? [syntax=c]void RCC_Conf(void) { RCC->CR= 0x00000083; // to jest bez sensu, można wyrzucić RCC->CFGR= 0x00000000; // j.w. RCC->CIR= 0x00000000; // j.w. RCC->CR|=RCC_CR_HSEON ; while(RCC->CR & RCC_CR_HSERDY == 0); FLASH->ACR |= FLASH_ACR_PRFTBE; FLASH->ACR |= FLASH_ACR_LATENCY_2; RCC->CFGR |= RCC_CFGR_PLLMULL9 |...
Musze przyznać Freddie, że Twoja strona jest bardzo pomocna. Z tego przykładu właśnie korzystam z tym że pod keilem . Wykorzystuje funkcje z tego projektu: static void flash_latency(uint32_t frequency); static void fpu_enable(void); static uint32_t pll_start(uint32_t crystal, uint32_t frequency); Nie znam się na tyle by dostrzec jakieś inne różnice...
Template i konfiguracja RCC freddiego, mam nadzieję, że się nie obrazi :) Program używa tylko pinu TX i cyklicznie wysyła tablicę, w tym przypadku w kółko tą samą. [syntax=c]#include "inc/stm32f10x.h" #include "config.h" #define CRYSTAL 8000000ul // quartz crystal resonator which is connected to the chip #define FREQUENCY 72000000ul // desired target...
Tak pll_start(uint32_t crystal, uint32_t frequency) i flash_latency(uint32_t frequency) zostawiłem tak jak było, w skrypcie linekera zmienilem tylko sekcje MEMORY na odpowiednie wpisy. Zwielokrotnienie kodu ustawiajcego pin w sumie nic nie zminiło nadal wyglada tak jakby jeden cykl trwał 80ns. Co do timera to musze troche poczytac nim go ustawię bo...
Próbuje osiągnąć maksymalny możliwy czas próbkowania (2.4MSPS) z STM32F407ZET6 Inicjalizacja ADC i DMA: ADC_SampleTime_3Cycles lub ADC_SampleTime_15Cycles powoduje że wartości odczytane z przetwornika są 0. Niższe prędkości próbkowania działają poprawnie lecz mi chodzi o "wyciągnięcie" tych 2.4MSPS Dla ADC_SampleTime_84Cycles : 982648 Dla ADC_SampleTime_56Cycles:...
Mam płytkę STM32F412G-Discovery (STM32F412ZGT6), próbuję uzyskać częstotliwość 100MHz oraz przerwanie co 1ms od Systick'a. Moja konfiguracja RCC, wartości dla PLL z STM32F4xx Clock Configuration: [syntax=c]RCC->CR |= RCC_CR_HSEON | RCC_CR_HSEBYP; RCC->PLLCFGR |= ( 4 << RCC_PLLCFGR_PLLM_Pos ) | \ ( 200 << RCC_PLLCFGR_PLLN_Pos ) | \...
Próbowałeś instalować sterowniki do tego PenDrive'a, czy korzystasz z wbudowanej obsługi USB Flash Drive z Windowsa? *** Czy tą kartą był Live? jeśli tak, wystarczyło zmienić PCI Latency...
Witam, Mam problem z odbiorem danych na magistrali CAN. Program wysyła dane na CAN co 500ms i to działa, natomiast kiedy pojawi się ramka na RX, program przestaje już wysyłać dane i wygląda jakby zawisł. Poniżej kod. Może ktoś sprawdzić i podać przyczynę problemu? [syntax=c]#include "stm32f10x.h" #include "stm32f10x_can.h" #include "hdr_rcc.h" #include...
Dzięki, dobrze wiedzieć, jak coś to zgłoszę się do Ciebie po najnowsze OpenOCD. Na razie spróbuje na tym starociu co mam - 0.6.1. Przeglądnąłem sekcję RCC. Znalazłem tam jakieś różnice w rejestrach do włączania zegarów dla poszczególnych peryferiów i ich resetowania. Co do samego ustawiania SYS_CLK nie znalazłem różnic, czyli wszystkie funkcje w projekcie...
Witam, Mam problem z uruchomieniem zewnętrznego oscylatora 8MHz (HSE) na mikrokontrolerze STM32L476. Próbuję skonfigurować HSE poniższym kodem ale gdy debaguje program to zatrzymuje mi się na linijce: [syntax=c]while(!(RCC->CR & RCC_CR_HSERDY));[/syntax] co oznacza chyba, że HSE nie chce w ogóle ruszyć. Korzystam z płytki Nucleo, gdzie wlutowałem kwarc...
Witam Żeby nie zakładać nowego tematu. Jeżeli nie jestem w dobrym miejscu to proszę przenieść. Mam problem z TIM3 z częściowym remapowaniem. Proc. STM32F050C6 Po prostu nie działa. Proszę kolegów o zerknięcie na ten kod. Siedzę trzeci dzień i już mnie coś trafia. Pewnie jakaś drobnostka ale nie widzę. TIM3 ma wygenerować PWM. Na razie o stałej częstotliwości...
[syntax=c]void system_init(void) { RCC->APB1ENR |= RCC_APB1ENR_PWREN; PWR->CR = 0x800; FLASH->ACR |= FLASH_ACR_ACC64; FLASH->ACR |= FLASH_ACR_PRFTEN | FLASH_ACR_LATENCY; RCC->CR |= RCC_CR_HSION; while ((RCC->CR & RCC_CR_HSIRDY) == 0); RCC->CFGR |= RCC_CFGR_PLLDIV2 | RCC_CFGR_PLLMUL4; RCC->CR |= RCC_CR_PLLON; while ((RCC->CR...
na każdym module znajduje się mały ( 4x5mm) układ SMD który 8 nózek , po 4 z kazdej strony. Jest to pamiec flash w której zapisane są dane dotyczące modułu. Taktowanie , Cas Latency (czyli opóżnienie) , pojemność. To właśnie z tego układu np bios lub Sandra pobiera dane . Ten układ , często produkcji ATmela znajduje się przy brzegu modułu. Pozdro
Ja mam tak: [syntax=c]FLASH->ACR = FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS;[/syntax] Przejrzą konfigurację USB Host i może jeszcze ulepszę kod i może będzie lepiej działać.
Witam, Bawię się zestawem ZL27ARM i robię ćwiczenia z książki "STM32. Aplikacje i ćwiczenia w języku C" Jestem przy ćwiczeniu 18 i mam problem z DMA (pierwszy raz mam styczność z DMA). Zgodnie z przykładem wypełnienie PWM powinno zmieniać się od 0 do 100%. U mnie jest cały czas 50%. Dane z tablicy bufor_PWM nie są przekazywane do TIM1->CCR1 http://obrazki.elektroda.pl/9548353800_1...
Walczę już kilka dni próbując różnych podejść i niestety się nie udaje, więc postanowiłem spytać, może ktoś miał coś podobnego. Mikrokontroler stm32F407VGT6, potrzebuję zapisać bajt w pamięci flash pod określonym adresem. Mam 2 funkcje do zapisu i odczytu jednego bajtu w sektorze 2 pamięci flash: void flash_init(void) { FLASH_PrefetchBufferCmd(ENABLE);...
Witam Zamierzałem ustawić zegar na 32MHz w następujący sposób: zewnętrzny kwarc 8MHz i pętla PLL x8/2. Posłużyłem się przykładami zawartymi w RM, kod konfiguracji: [syntax=c]// --- RCC ----------------------------------------... RCC->CR |= RCC_CR_CSSHSEON // Clock security system on HSE enable bit | RCC_CR_HSEBYP // HSE clock bypass bit | RCC_CR_HSEON;//...
Witam Rozpoczynam zabawe z STM32 i napotkalem problem. Chodzi o uruchomienie USART2 i wyslanie znaku na terminal do PC. Rx i Tx mam podpiete do portu A PA2->Tx i PA3->Rx. Siedze z dokumentacja procesora ale jakos nie moge znalesc bledu w swoim kodzie. Moze co podpowiecie. Kompilator AtolicTruestudio Petla główna: [syntax=c] int main(void) { int...
Wygeneruj sobie projekt w cube i podejrzyj. Jest to najszybsze i najprostsze. Dodano po 11 [syntax=c]void HAL_UART_MspInit(UART_HandleTypeDef* huart) { GPIO_InitTypeDef GPIO_InitStruct; if(huart->Instance==USART1) { /* USER CODE BEGIN USART1_MspInit 0 */ /* USER CODE END USART1_MspInit 0 */ /* Peripheral clock enable */ __USART1_CLK_ENABLE(); /**USART1...
Procek działa sobie z częstotliwością 8 MHz, powiedzmy, że sygnał ma z HSE. Chcę sobie go podkręcić na 72 MHz więc odpalam PLL. No i niby jest podkręcony ale Flash może działać tylko do 24 MHz więc trzeba dodawać latencje, np. za pomocą FLASH_SetLatency(FLASH_Latency_2); To z kolei powoduje, że kod programu jest wykonywany dużo wolniej i podniesienie...
A bawił się ktoś z Was tymi gotowcami od ST? Nie mogę tego uruchomić za bardzo. Na jednym małym projekcie działa ale jak chcę to dorzucić do FreeRTOS to już nie bardzo. Mam Taki kod: static void prvSetupHardware(void) { /* Start with the clocks in their expected state. */ RCC_DeInit(); /* Flash 0 wait state */ //FLASH_SetLatency(FLASH_Latency_2...
Mam funkcję sin(x) zapisaną w tablicy y_sin_obl[100] czyli 100 próbek (przeliczone na wartości 0-4094 żeby do DAC można było od razu wpisać). Konfiguruję PLL: void pll_init(void) [syntax=c]{ // HSI enable RCC->CR|=RCC_CR_HSION; // HSI enable while(!(RCC->CR&RCC_CR_HSIRDY)); // wait for HSI ready RCC->CFGR |= RCC_CFGR_SW_HSI; //Select HSI...
Skoro tak to rezystory wyrzuciłem. BOOT0 i BOOT1 są na masie. Oto fragment kodu rozruchowego: void RCC_Configuration() { ErrorStatus HSEStartUpStatus; RCC_DeInit(); RCC_HSEConfig(RCC_HSE_ON); HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS) { FLASH_PrefetchBufferCmd(FLASH_Prefet...
Zawsze Ci będzie dzałał ale pytanie z jaką częstotliwością, to nie AVR Coś takiego w HAL-u powinno być (tu przykład dla HSE = 8M i Fcpu=72M) [syntax=c] RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; /**Initializes the CPU, AHB and APB busses clocks */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState...
Witam, mam problem z prawidłowym skonfigurowaniem wszystkich zegarów w moim procesorze. Zacząłem od bibliotek ST, jednak później po przeczytaniu wielu tematów na tym forum zabrałem się za dokumentacje i poustawiałem wszystkie bity tak jak trzeba.. i problem jest dalej ten sam. otóż najlepiej wytłumaczy to ten rysunek: http://obrazki.elektroda.pl/1942215800_1...
Witam, Skonfigurowałem sobie zegar bazując na przykładzie znalezionym w sieci (kod poniżej). [syntax=c]void RCC_Config(void){ ErrorStatus HSEStartUpStatus; RCC_DeInit(); // Reset ustawień RCC RCC_HSEConfig(RCC_HSE_ON);// Włącz HSE HSEStartUpStatus = RCC_WaitForHSEStartUp(); // Czekaj aż zegar HSE będzie gotowy if(HSEStartUpStatus == SUCCESS){ FLASH_PrefetchBufferCmd(ENABLE);...
Staram się ustawić częstotliwość próbkowania ADC1 i ADC2 w trybie Regular simultaneous dual. ADC1 taktuję Timerem 2: [syntax=c]void timer2_init() // this timer is triger of ADC1 and ADC2 conversion { RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // APB2 clocked TIM1 by 45MHz TIM2->PSC = 0; // F TIM = 45MHz TIM2->ARR =45e6/Fp; // Fp= Ftim/val //TIM2->DIER...
Kroki które teraz poczyniłem: 1. W pliku stm32f10x.h odkomentowałem #define STM32F10X_MD 2. W pliku system_stm32f10x.c odkomentowałem #define SYSCLK_FREQ_72MHz 72000000 . 3. Do main.c programu dodałem i wywołałem: [syntax=c] void RCC_Configuration(void) { /* RCC system reset(for debug purpose) */ RCC_DeInit(); /* Enable HSE */ RCC_HSEConfig(RCC_HSE_ON);...
Wklejałem wcześniej kod konfiguracji zegara. Mógłbyś podpowiedzieć co może być źle w tej konfiguracji?? PS. Nie głoszę herezji tylko pytam. Wcale nie twierdzę że kod jest poprawny. Od tego chyba jest forum, żeby pytać o ewentualne źródła rozwiązania problemu. [syntax=cpp]void SystemClock_Config(void) { RCC_ClkInitTypeDef RCC_ClkInitStruct; RCC_OscInitTypeDef...
Witam, zaczynam swoją przygodę z STM32, na początku chciałem się pobawić bibliotekami oferowanymi przez producenta i od razu nieprzyjemna niespodzianka. Mam taką funkcję: void RCC_Conf(void) { ErrorStatus HSEStartUpStatus; RCC_DeInit(); RCC_HSEConfig(RCC_HSE_ON); HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus...
Zapłacisz 100 zł za zasilacz?? Po co wymieniałeś kartę sieciową?? Po wymianie procesora co najwyżej trochę mniej Ci będzie flash przycinać Na początku zmień bios w płycie. i napisz jakie masz te pamięci. Częstotliwości i ich opóźnienia (latency) http://allegro.pl/amd-athlon-xp-2200-tho... Chłodzenie powinno pasować...
Poradnik spoko - zauważyłem lepszą przydatność wygenerowania pojedynczego pliku nagłówkowego z rejestrami, skrojonego na miarę, w postaci struktury unii, niżeli używanie wyciętych fragmentów pliku nagłówkowego. Niestety trzeba uważać przy tworzeniu takiego pliku nagłówkowego i pilnować poprawności z dokumentacją: [syntax=c] #include <stdint.h>...
MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_UART8SEL, 0b01 << RCC_DCKCFGR2_UART8SEL_Pos); //USB Wywal i sprawdź bez tego. FLASH->ACR = FLASH_ACR_LATENCY_7WS; Zbędne, wywal. Sprawdź z inną prędkością, np. 9600. Zmierz oscyloskopem czas trwania jednego bitu na linii TX i na linii RX. błąd po ok 1500 bajcie już przy pierwszym bloku 8192 bajtów...
To już ustawiam w aplikacji: [syntax=c]int main( void) { //--------------------------------------... zegara----------------------------------... FLASH->ACR = FLASH_ACR_LATENCY_2 | FLASH_ACR_PRFTBE; // ustawienie latencji RCC->CR |= RCC_CR_HSEON; // kozystanie z zewnętrznego oscylatora ... //--------------------------------------...
FPU jest włączone (Opcja "FPU Hard" w Configuration -> Compile -> Options -> FPU). Jeśli wybiorę "Not use FPU" to mi się chyba licznik "przekręca" - jest różnica w czasach. W linku, który podałem gość używał opcji "FPU Soft" ale dlatego, że biblioteka PDM mu nie działała. Co do zegarów to wydaje mi się być ok. Czasy na TIM1, który wyzwala ADC...
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...
Kod wydaje mi się nie istotny. Ponieważ mam też napisany program na obsługę innego wyświetlacza i jest ten sam problem. Jedyną istotną rzeczą w programie jest funkcja konfiguracji zegara: [syntax=c]void konf_zegary(void) { ErrorStatus HSEStartUpStatus; // Reset ustawien RCC RCC_DeInit(); // Wlacz HSE RCC_HSEConfig(RCC_HSE_ON); // Czekaj za HSE bedzie...
Kolego Piotrus_999 po imporcie projektu do eclipse wygenerowanego z cube widzę że kod jest napisany w hal. Nie widzę opcji w cube aby nie generował w hal jak i opcji USE_HAL_DRIVERw eclipse . Oto fragment kodu ustawiającego zegary: [syntax=c]void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; /**Initializes...
Freddie Chopin Miałem na myśli taką funkcje(akurat dla F1): No, przestawienie zegara na 24 MHz z PLL to całe 4 linijki kodu - któż byłby w stanie napisać to sam... Ale chyba trzeba zrobić funkcję podobną do tej wyżej(od F1), odczekać az HSE bedzie gotowy itd. ??
Ten kod generuje sam CubeMX, ja jeszcze nie dopisałem swojego kodu. Tamten kod w całości wygląda tak: arm-atollic-eabi-objdump: 'list': No such file
Użyłem RCC_HSI48Cmd(ENABLE); i już nie zacina przycisku przy ustawieniu 48000, jednak zgasła dioda LED do pomiaru częstotliwości. Mam taką oto procedurkę: [syntax=c] void RCC_Config(void) { ErrorStatus HSEStartUpStatus; RCC_DeInit(); // Reset ustawien RCC RCC_HSEConfig(RCC_HSE_ON); // Wlacz HSE RCC_HSI48Cmd(ENABLE); HSEStartUpStatus = RCC_WaitForHSEStartUp();...
[syntax=c] void gpio_init(void) { // enable all possible GPIO ports RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOCEN;// enable all possible GPIO ports } [/syntax] tak z ciekawości gdzie można znaleźć pliki nagłówkowe do procesorów stm32? Na stronie producenta w zakładce software są biblioteki SPL ale nagłówkowych nie ma. Przyznam...
i tam napisane jest iż MLA trwa dwa cykle a np ADD, MUL jeden czyli ja zysku nie widzę przy wykorzystaniu tego rozkazu Moja odpowiedz mogła być trochę źle zrozumiana ale MLA trwa tyle samo (2 cykle) co (ADD 1cykl + MUL 1 cykl) no i tak jest, jednak czytałem że zaleca się używanie MLA. Następnie drodzy forumowicze co tak naprawdę oznacza wait state...
Witajcie Napisałem własną funkcję korzystając z rejestrów do ustawienia HSI na mojej płytce podanej w tytule. Prosiłbym was o sprawdzenie poprawności [syntax=c]void Sys_init() { RCC->CR |= RCC_CR_HSION; while (!(RCC->CR & RCC_CR_HSIRDY)){}; RCC->CR |= RCC_CR_PLLON; while (!(RCC->CR & RCC_CR_PLLRDY)) { }; FLASH->ACR |= FLASH_ACR_PRFTEN | FLASH_ACR_LATENCY;...
Rozważmy na początek taki kod: [syntax=c] #include "stm32f10x.h" void Delay(unsigned int delay); void SetClock(); int main() { FLASH->ACR = 0x10; FLASH->ACR = 0x00; FLASH->ACR = 0x10; SystemInit(); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GP... ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode...
Podstawowe pytanie, używać będziesz biblioteki ST czy swojej. Jak ST to jest bardzo zagmatwana i uczy złych nawyków, niestety na niej się uczyłem i nawyki zostały ;]. konfiguracja zegarów za każdym razem wygląda tak samo (z biblioteki ST): [syntax=c]RCC_DeInit(); //reset do stanu początkowego zegarów RCC_HSEConfig(RCC_HSE_ON); //zewnętrzny szybki oscylator...
Witam, Mam problem z uzyskaniem dokładnego czasu z timera. To mój kod: [syntax=c] #include "stm32f407xx.h" int main(void){ // flash //FLASH -> ACR |= FLASH_ACR_DCRST | FLASH_ACR_ICRST; FLASH -> ACR = FLASH_ACR_DCEN | FLASH_ACR_ICEN | FLASH_ACR_PRFTEN | FLASH_ACR_LATENCY_5WS; //while((FLASH -> ACR & FLASH_ACR_LATENCY) != FLASH_ACR_LATENCY_5WS);...
Witam, Mam problem z ustawieniem SysTick'a na przerwania co 1ms(mam co 3.14ms). Podejrzewam, że mikrokontroler nie chce wystartować na częstotliwości 72MHz, ale nie wiem dlaczego. Program ładnie działał bez żadnego problemu na STM32F103ZET6. W momencie przejścia na STM32F105VBT6 pojawia się wyżej wymieniony problem. Program był napisany w cpp(nadmieniam...
Kurcze działa... Trzeba było jeszcze ustawić bit RCC_CFGR_PLLDIV2 co widać dokładnie w tym CubeMX. Dziękuje za każdą wskazówkę. Chciałbym jeszcze podsumować teraz jeszcze działanie timera a mianowicie w tej chwili częstotliwość to 12 MHz wcześniej wynosiła 2,097MHz(MSI): 1. Gdy ustawiam: [syntax=c] TIM2->PSC = 12000-1; // 1ms TIM2->ARR = 500-1; // 500...
Uzyskałem pomiar mikrosekund z zewnętrznego czujnika tak jak na poniższym zdj https://obrazki.elektroda.pl/6205855700_... https://obrazki.elektroda.pl/8707798800_... Wartością wyświetlaną na konsoli jest rejestr CNT Timera2, który inkrementuje się co 1 us. Jednak nie zgadzają mi się obliczenia prędkości zegarów i szyny...
Krótkie pytanie czy ten kod powinien zapalać diodę LED podłączoną do pinu PB1? [syntax=c_loadrunner] #include "stm32f10x.h" void Clk_Init (void) { // 1. Clocking the controller from internal HSI RC (8 MHz) RCC_HSICmd(ENABLE); // wait until the HSI is ready while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET); RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI); //...
Witam Mam arma stm32f103rb i kwarc 8Mhz chce gopuścić z pełną szybkością 72 Mhz. Czy w środowisku Keil poczas debugowania można w którymś rejestrów sprawdzić z jaką predkością działa arm? [syntax=cpp]void Clock_init(void) { ErrorStatus HSEStartUpStatus; // Reset ustawien RCC RCC_DeInit(); // Wlacz HSE RCC_HSEConfig(RCC_HSE_ON); // Czekaj za HSE bedzie...
Mam mikrokontroler stm32f103rb. Chciałbym wystawić stan wysoki na pin PA10. Oto kod: [syntax=cpp] #include "stm32f10x_conf.h" #include "stm32f10x_gpio.h" #include "stm32f10x.h" #include "stm32f10x_rcc.h" #include "stm32f10x_flash.h" #include "misc.h" GPIO_InitTypeDef GPIO_InitStruct;//inicjalizacja void clock_init(void) ; int main(void) { clock_init()...
Witam, Próbuje uruchomić wyświetlacz oparty o ILI9341 z wykorzystaniem SPI. Wyświetlacz sprawdzałem pod Arduino i działa, jest sprawny. Próbuję podpiąć go do STM32F407ZET6. SPI działa, widać że są przesyłane dane na oscyloskopie. Zaczerpnąłem procedurę inicjalizacji wyświetlacza z Adafruit dla Arduino ale wyświetlacz jak był biały tak jest po wgraniu...
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);...
Szanowni koledzy. Od kilku godzin próbuję uruchomić przetwornik C/A stosując poniższy kod bez żadnego rezultatu. Co robię źle? Pozdrawiam [syntax=c] #include <stddef.h> #include "stm32f10x.h" void RCC_Conf(void) { ErrorStatus HSEStartUpStatus; RCC_DeInit(); RCC_HSEConfig(RCC_HSE_ON); HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus...
Gdzie ustawiasz TIM_Clock_Division_CKD? Powinno być na TIM_CKD_DIV1 (0) - to są bity CKD w TIM1->CR1. Być może tutaj masz ustawione dzielenie przez dwa. Co do ustawień częstotliwości taktowania procesora to czy masz możliwość to jakoś sprawdzić? Żeby mieć pewność, że ustawiłeś 24 MHz albo coś innego? Z tego co widzę to na elektrodzie jest to mało spotykane,...
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);...
Pracuje obecnie na tym nowym discovery z F7 na pokladzie, chociaz rejestry z tego co widze ma te same co F4. Przyszla pora na uruchomienie RTC za pomoca wbudowanego tam kwarcu 32.768 khz i zupelnie nawet nie moge go wlaczyc. Moglby ktos zerknac co robie nie tak? HSE i glowne PLL dzialaja dobrze [syntax=c] void RCC_Init() { RCC->CR = RCC->CR = RCC_CR_HSITRIM...
Witajcie, zbudowałem samodzielnie funkcję inicjalizacji zegarów i magistrali na podstawie biblioteki Standard Peripherals Library, jednak program nie rusza - na innej funkcji RCC_Configuration wszystko działa dobrze, jednak mi zależy na tym aby uC STM32L152 uruchomić przy jego maksymalnej prędkości 32MHz, a więc z użyciem pętli PLL. Podprogram stworzyłem...
stm32 flash latency latency check zmiana latency
formatowanie zabezpieczonego pendrive programowanie magic rezystancja iskrownik
czyszczenie gaźnika kosiarka rs485 controlv21
Przepalanie kopułki w BMW E46 2.5L benzyna - przyczyny i diagnostyka Przekaźnik K9 w Mercedes Vito 111 CDI 2007 - Funkcje