Rachel załamujesz mnie :D __IO uint32_t AFR[2] to deklaracja tablicy dwuelementowej a w C indeksuje się je od 0 :)
W starym ("antycznym") standardzie języka C - a najwidoczniej taki masz ustawiony - deklaracja zmiennej, czyli `TIM_TimeBaseInitTypeDef timBaseStruct;`, musi być na samym początku funkcji, przed jakimkolwiek "kodem" który coś robi ("executable block"). Innymi słowy: void funkcja(void) { int zmienna1; // ok zmienna1 = 15 + sin(0.1f);...
Przydałoby się jeszcze 2 rzeczy: 1. zmniejszyć FLASH o odpowiednią wartość, tak aby na siebie nie najeżdżały - możesz od LENGTH odjąć ile tam potrzeba ... LENGTH = 128k - XXX 2. Dodać profilaktycznie } > VAR AT > VAR Tym sposobem skrypt linkera będzie w 100% poprawny. Jeśli nadal będą jakieś błędy, to już nie po stronie linkera. Jeśli dalej coś nie...
Ja mam tak: __attribute__ ((section(".bootloader&... int program_page(unsigned short *data, unsigned int adr) {... } i linker: .bootloader 0x08000000+128K-1K : { *(.bootloader) } i działa
Zainkluduj plik nagłówkowy <string.h>, tam masz prototyp tej funkcji.
bez apelacyjne operator extern powinno się tam znaleźć. To zleży jak przebiega proces kompilacji. Jeżeli kompilujemy wszystkie pliki na raz to w sumie ta dyrektywa o której wspominasz działa tak jak oczekujesz i rzeczywiście zmienna jest zadeklarowana tylko raz. Natomiast jak kompilujemy każdy plik źródłowy osobno do postaci pośredniej i później linkujemy...
Witam Próbuję skompilować przykład "R3_list3_1-3_3" z ksiażki "Mikrokontrolery STM32 w praktyce" - przykłady wraz z biblioteką można pobrać pod #include "stm32f10x.h" #include "stm32f10x_bkp.h" #include "stm32f10x_gpio.h" #include "stm32f10x_flash.h" #include "stm32f10x_rcc.h" #include "misc.h"...
A czy została ta funkcja użyta chociaż raz w programie? Bo jeśli nie, to kompilator sygnalizuje ostrzeżenie, a nie błąd. Nie o to chodzi, tylko o to, że deklaracja funkcji ze słówkiem "static" jest w plik _nagłówkowym_, co jest kompletnie bez sensu, a w efekcie deklaracja tej funkcji znajduje się w każdym pliku źródłowym który z tego nagłówka korzysta.
Problem został rozwiązany. Leżał on w wywołaniu funkcji putch(), która wysyłała dane na USART'a. Zamiast niej z rozpędu pisałem putchar(), która jest procedurą systemową. Jednakże dlaczego program się wykrzaczał już na samym początku? Powinien dojść do wywołania tej funkcji.
Jeśli w NVIC_Init wystąpi błąd (np. "Undefined symbol NVIC_PriorityGroupConfig ") to dla kompilatora NVIC_Init nie istnieje. Musisz więc "po sznurku" szukać w jakim pliku jest deklaracja owego NVIC_PriorityGroupConfig (strzelam, że w stm32f103_misc.h lub podobnym, którego nie inkludowałeś). Szuka się w plikach projektu wciskając w KEIL Ctr+H - zakładka...
Post już pewnie nieaktualny dla autora. Jednak chciałbym coś sprostować. Dla STM8 jest kilka komercyjnych środowisk uruchomieniowych z własnymi kompilatorami C z ograniczeniem dla wersji darmowej do 32kB kodu. http://support-raisonance.com/extranet/t... http://www.cosmic-software.com/stm8.php http://www.iar.com/en/Products/IAR-Embed...
Szczerze mówiąc to nie rozumiem Twojego kodu gaskoin. Może tak z natury technicznej, to co znaczy taka deklaracja funkcji: [syntax=c]void *blink_led(void * param);[/syntax] szczególnie chodzi mi o te param, ale również o całość. Myślę, że to już nie należy do podstaw, więc możesz mi spokojnie opowiedzieć ;) Jak również taka definicja: [syntax=c]void...
Arduino to taka zabawka, niby super a do kitu. Wiem o tym, jak pisałem mgr. we dwie osoby to ta druga pisała sterownik na arduino i nic z tego nie wyszło a moje małe coś na AtMega 8 ... Chyba, że to nie wina materii, tylko krawca. Sądzę, że nie zrujnowało mu to życia, tj dyplom niestety dostał? ... jak możesz to nie dotykaj środowiska Arduino, bo wszyscy...
Witam! Uczę się programowania mikrokontrolerów STM32 (aktualnie męczę STM32F103). Programy piszę w C, ale co jakiś czas zerkam w to co spłodził kompilator - w celach edukacyjno-poznawczych. Napisałem prostą funkcję obsługi przerwania od SysTicka. Deklaracja funkcji ma postać: [syntax=c]void SysTick_Handler(void) __attribute__((interrupt));[/syntax]...
Sam main.c raczej nic nie da ale proszę. /** ****************************************... * File Name : main.c * Description : Main program body ****************************************... * This notice applies to any and all portions of this file * that are not between comment...
Zmagam się z drobnym problemem. Chcę zmierzyć odległość czujnikiem i muszę zmierzyć czas od stanu wysokiego na wejściu do staniu wysokiego na wyjściu. Otóż chcę ustawić wyjście cyfrowe aby co jakiś czas był na nim stan wysoki, od tego momentu powinien naliczać się czas, aż do momentu pojawienia się stanu wysokiego na wejściu. Potem wartość tego czasu...
Witam, Chciałbym napisać własny bootloader, który miałby działać podobnie jak ten z noty 2557 od ST. Bootloader chciałbym umieścić na początku pamięci FLASH, zaś aplikację we flashu z pewnym offsetem, podobnie jak w przykładzie od ST. Aplikacja jaka ma być ładowana/zmieniana przez bootloader jest już gotowa, zmodyfikowałem skrypt linkera tak aby program...
Dziękuję Wam, działa. Ale dlaczego wcześniej wyrzucało mi błędy to tego nie rozumiem? Szkoda,że tamtą wersję skasowałem. Jak sprawdzić gdzie kompilator Keila umieścił tablice? Zadeklarowałem jedną zwykłą w RAM a drugą jako static do Flash. A chciałbym się przekonać że tak na prawdę jest. Przeglądałem plik .map ale jak wyłowić z niego potrzebne informacje?...
Budowa toolchainu pod systemem LINUX dla urządzeń z rdzeniami: CM0+ ( instrukcje są generyczne-czyli uogólnione i działają na procesorach: CM0+/CM0+F/CM3/CM3F/CM4/CM4F/CM7/CM7F ), oraz CM4F. Całość jest w postaci wizardu konsolowego i została fajnie opisana na stronie http://www.iwasz.pl/electronics/toolchai... Generowany kod jest kompaktowy...
Przeczytałem wątek z dużym zainteresowaniem, wracam do uP po paru latach natomiast jestem starym programistą C Nie będę redagował jednolinijkowych cytatów, wypowiem się w punktach mam nadzieję każdy wyczyta co pochwalam / czemu się sprzeciwiam 0) nie zmienimy starego albo nie swojego kodu (np AVR czy innego) ale nowy możemy pisać lepiej. a) makra to...
Witam, Mam zrobiony dzielnik napięcia (18k i 4.7k) tak aby mierzyć napięcie od około 9V do 12.5V. Napisałem kod (w oparciu o przykłady), który podaje mi wartość liczbową. Jak obliczyć, jakie jest rzeczywiste napięcie? Deklaracja ADC: [syntax=c]ADC_StructInit(&ADC_InitStruct... /* Calibration procedure */ ADC_VoltageRegulatorCmd(ADC1, ENABLE); ADC_SelectCalibrationMode(ADC1,...
Witam! Mam problem z uruchomieniem modułów radiowych RFM12 pod STM32. Uruchomiłem je bez problemu na ATmegach8 korzystając z funkcji opisanych w [url=http://www.elektroda.pl/rtvforum/vi... poście. Jest to programowy SPI i przepisałem funkcje od nadajnika tworząc coś takiego: [syntax=c] #include "stm32f10x.h" #include "GLCD.h"...
Witam Mam dosyć spory problem z parsowaniem tekstu, mianowicie użytkownik może w terminalu wpisać sobie taką o to składnie. Silnik 3,5;Silnik 5,25;Silnika 7,45; Ma to podzielić na "Silnik 3,5" , "Silnika 5,25" itp; Robię to w następujący sposób: -gdy z USARTa przychodzi ciąg znaków zakończonych znakiem '\0' wychodzi do przerwania gdzie tworzona jest...
Widzę że dosyć cich. dorzucam jeszcze skrypt linkera i startup. nawet mam brakepointa w void Reset_Handler(void) i w niego nie wchodzi. ale na brakepointa w Default_Handler reaguje. Zanaczam że jak wgram program na mikrokontlorer to działa bez zarzutu... [syntax=c]/* Procedura startowa dla STM32 connectivity line devices */ /* NastÄ™pujÄ…ce...
Tę tablicę alokujesz na stosie, a jego rozmiar jest zapewne nie za duży. Albo alokuj statycznie, albo powiększ stos w ustawieniach projektu.
Funkcje ta masz jedynie w skompilowanej postaci. Jest ona częścią libgloss, która jest częścią newlib (biblioteka standardowa w Twoim toolchainie): https://github.com/bminor/newlib/blob/dd...
BTW. Jest to trochę mylące, tworzy się projekt C++ i nie działa od razu. Trzeba ręcznie zmienić na .cpp. Typ projektu nie definiuje, że odtąd wszystkie pliki w nim są w C++. Jeśli by tak było, to jakim cudem w projekcie zrobiłbyś assemblerowy startup? Próbowałem też zrobić w pliku c++ funkcję i ją wywołać z main.c - też nie działa. https://isocpp.org/wiki/faq/mixing-c-and...
Witam, Ustawienie __main_stack_size = 1024; nic nie pomogło. Mam jeszcze jedno pytanie które mi się nasuwa. Czy deklaracja funkcji obsługującej przerwanie("stm32f10x_it.c") powinna wyglądać tak: void USART1_IRQHandler(void) { Czy wymagane są jakieś dodatkowe atrybuty (__attribute__) ? W pliku out/*.lss jest zawarty kod obsługujący przerwanie:...
Nic nie wiemy o typie mikrokontrolera. Poszczególne serie STM32 mają różne możliwości programowania (16/32/64 bity). Nie pokazałeś deklaracji zmiennych, a od tego wiele zależy. Podejrzewam problem ze zmienną Address.
A jakie to ostrzeżenia generuje kompilator i dlaczego w ogóle je generuje? Ja mam już swoją teorię nt. Twojego błędu - brak deklaracji zapowiadającej, na co narzeka kompilator. Zgadłem?
(at)elktrinfrm Jest godbolt i zamiast gdybać można zawsze sprawdzić. Spoiler, nie ma wpływu. (at)karol75 Podaj również jaką architekturę używasz bo między armv6-m a armv7-m, jest sporo różnic. Ogólnie i tak nie polecam używania pól bitowych gdyż raz i tak nie ma za dużo uzysku na pamięci (gdyż generują się dodatkowe instrukcje by wyłuskać bity odpowiednie)...
Na wypadek, gdybyś nie zauważył: przy takich deklaracjach i treści procedury konfiguracji DMA, jakie masz obecnie, do rejestru adresu pamięci DMA wpisujesz wartość bajtową odczytaną z pamięci ze zmiennej TxBuf, rozszerzoną zerami do 32 bitów, czyli wysyłasz przez UART zawartość tablicy wektorów wyjątków.
Po skonfigurowaniu środowiska yagarto zgodnie z instrukcją wyskakiwało mi: DescriptionResourcePathLocationType Type 'uint16_t' could not be resolvedmain.c/PRJ_Color/srcline 26Semantic Error więc zobaczyłem jak to jest zdefiniowane i wstawiłem typ z definicji
Korzystam z Sourcery CodeBench Lite i nie mogę znaleźć pliku nagłowkowego w ktorym znajdowałaby się deklaracja dtostrf.
Co do Twojego problemu deklaracji typu układu - typ ten zdefiniowany jest w Makefile (MD, HD, CL, ...) Jeśli używasz przerwań, to ustaw jakąś wielkość stosu dla przerwań w skrypcie linkera (domyślnie jest 0, bo nie ma przerwań w przykładach). 4\/3!!
1. Zbędny atrybut volatile w deklaracji AdcVal. 2. Czy AWD jest jedynym źródłem przerwania ADC? 3. Kasować bit zgłoszenia przerwania należy na początku procedury obsługi przerwania. nie wiem, aj to jest W STM32, ale w wielu innych Cortexach Zgłoszenie przerwania nie zdąży się w takiej sytuacji skasować i powtórnie wejdziesz w obsługę przerwania.
Sposobem Freddiego + tablica długości miesięcy można to załatwić w 3 linijkach - łacznie z deklaracją tablicy. Albert
Dziękuję koledzy za odpowiedzi. Zapomniałem dodać plik h w którym są deklaracje, wstawię go po pracy:)
Witajcie Próbuję się w końcu nauczyć tego C i jednocześnie STM32, no ale... Deklaracja zmiennych: uint8_t Tim = 230; uint8_t Tim_Poprzedni = 230; uint8_t C = 0; uint8_t R = 0; Program (wielkie słowo :D): while (1) { HAL_Delay(1000); Tim++; R = Tim - Tim_Poprzedni; if (Tim - Tim_Poprzedni >= 10) { Tim_Poprzedni = Tim; C++; } } Póki Licznik Tim się nie...
Witam, wszystko wynika z koniecznosci szybkiego przeniesienia czego z ardunio na STM'a. Oczywscie ze moglem popelnic bledy dlatego zwrocilem sie o pomoc z wyjasnieniem. Arduino ide 1.8.19, LiquidCrystal to standardowa biblioteka: https://www.arduino.cc/reference/en/libr... Doinstalowane: https://github.com/rogerclarkmelbourne/A...
Błąd w deklaracji wskaźnika - powinno być: volatile cBufElem* pWrite;
po takiej deklaracji w sekcji .ssitag lądują wskaźniki do tej tablicy, a nie sama tablica, jak wymusic żeby całosć tam wylądowała? Musiałbyś albo w tablicy umieścić nie napisy ("...") tylko po prostu wskaźniki do tych napisów (osobnych obiektów), z których każdy miałby również ten atrybut. Druga opcja to zrobienie tablicy tablic (obecnie masz tablicę...
Przykładów można szukać w SPL - można się w ten sposób dowiedzieć, w których rejestrach i co trzeba wpisać. Powoli szykuję tutorial do STM32 bez biblioteki, ale to jeszcze trochę potrwa. Kłopoty z bibliotekami są wielorakie. Ostatni kłopot - to to, do czego nas zachęcają przykłady z użyciem bibliotek, czyli deklarowania struktur jako zmiennych i pracowitego...
kompilator to arm-none-eabi-gcc a komenda -DSTM32F4XX -I"C:\workspaceSTM\usb\base&quo... -I"C:\workspaceSTM\usb\usb\dev\... -I"C:\workspaceSTM\usb\usb\dev\... -I"C:\workspaceSTM\usb\usb\otg\... -O0 -Wall -std=gnu99 -Wa,-adhlns="$(at).lst" -c -fmessage-length=0 -mcpu=cortex-m4...
A nie masz tam przypadkiem przed main() funkcji SystemInit() ze SPLa, która "coś" robi z zegarem? P.S. Ta deklaracja przerwania przed main() naprawdę jest zbędna... Czemu to niby miałoby służyć? P.S.2 - PSC też powinno być 499. 4\/3!!
Zobacz, co masz w pliku startup. W różnych środowiskach wygląda i nazywa się on różnie. Sprawdź, czy jest tam w ogóle nazwa SysTick_Handler i czy jest tak samo pisana, jak u Ciebie - być może trzeba ją wpisać w tablicy wyjątków (jeśli nie ma deklaracji weak w startup).
A pamiętasz o odwoływaniu się w źródłach C++ do deklaracji z plików C z dodatkiem extern "C" ?
Co jest dziwne, bo w tym samym pliku wcześniej dodany jest plik nagłówkowy stm32f1xx_hal.h, który jest poprawnie linkowany przez kompilator. Bardziej "inkludowany", bo to robi kompilator. co jest absurdalne, ponieważ na górze pliku main.c jest zaincludowany plik EPD_Test.h, który zawiera tę definicję! W pliku nagłówkowym masz tylko deklarację, a nie...
Sprawna wersja: http://obrazki.elektroda.pl/8007651200_1... Niesprawna: http://obrazki.elektroda.pl/2176426700_1... Wygląda na to ze bit ovr jest ustawiony tylko dlaczego. Nie zmieniam nic poza deklaracją zmiennej
warningi znikają po usunięciu volatile sprzed deklaracji zmiennej buf1, ale nic się nie pojawia w terminalu Może faktycznie przedobrzyłem z tym volatile ale po jego osunięciu program działa jak powinien. Co prawda było u mnie jakieś potknięcie z działaniem, gdy go pierwszy raz usunąłem ale nie jestem pewien czy to nie przypadek (kabelki, ustawienie...
deklaracja zmiennych deklaracja klasy deklaracja paneli
minus uziemić regeneracja napisów atmega8 fusebit
inwerter mosfet akumulator seicento
Wymiana bezpiecznika w kuchence Amica krok po kroku Wybór napędu do bramy przesuwnej: Force 2000 kg vs Nice 1000 kg