Mam problem z programem, co w nim jest nie tak. Program się ładnie kompiluje, linkuje, po wgraniu do procka widać że działa na debugerze (gdb) ale dioda nie miga.
Ja też bym powiedział, że trzeba ustawić HSE albo chociaż HSI. W internecie znalazłem takie coś o deinit dotyczące tego STM-a:
Cytuj:
* - MSI ON and used as system clock source (MSI range is not modified * by this function, it keep the value configured by user application) * - HSI, HSE and PLL OFF * - AHB, APB1 and APB2 prescaler set to 1. * - CSS and MCO OFF * - All interrupts disabled
W STM32F4 deinit chyba włączała HSI. Tutaj skoro działa na MSI to taktowanie jest lipne (65.536 KHz to 4.194 MHz). Ale ja się nie znam, tylko tak strzelam w ciemno.
Ogarnąłem, działa! Jeden problem to nie ma pinu PD13, jest linia D13 która zworką SB42 podłączona jest pod PA5. Problem był jeszcze jeden, nie był kompilowany i linkowany startup_stm32l1xx_xl.S, założyłem nowy projekt i zadziałało.
rezasurmar napisał(a):
Tylko widziałeś, że instrukcja jest dla F0, a F152 to jest M3
Przepis jest uniwersalny, wystarczy zastosować odpowiednie pliki i wpisy, np w ustawieniach ARM C Compiler -. Preprocessor wpisać: STM32L1XX_XL USE_STDPERIPH_DRIVER
itd.
_________________ Und schreien
Spring Erlöse mich Spring ...
Ostatnio edytowano 26 sty 2015, o 15:47 przez PROTON, łącznie edytowano 1 raz
Cross-Compiler GCC ogólnie, umożliwia kompilowanie na twoim systemie na inne systemy i platformy sprzętowe, nas interesuje platforma docelowa arm-eabi.
Niestety nic nie tworzy, tj. żadnych plików wyjściowych, wrzucam logi
Kod:
10:30:34 **** Incremental Build of configuration Debug for project STM32L152-nucleo-template **** make -j2 pre-build main-build arm-none-eabi-objcopy -S -O ihex STM32L152-nucleo-template.hex; arm-none-eabi-size STM32L152-nucleo-template Usage: arm-none-eabi-objcopy [option(s)] in-file [out-file] Copies a binary file, possibly transforming it in the process The options are: -I --input-target <bfdname> Assume input file is in format <bfdname> -O --output-target <bfdname> Create an output file in format <bfdname> -B --binary-architecture <arch> Set output arch, when input is arch-less -F --target <bfdname> Set both input and output format to <bfdname> --debugging Convert debugging information, if possible -p --preserve-dates Copy modified/access timestamps to the output -D --enable-deterministic-archives Produce deterministic output when stripping archives -U --disable-deterministic-archives Disable -D behavior (default) -j --only-section <name> Only copy section <name> into the output --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file> -R --remove-section <name> Remove section <name> from the output -S --strip-all Remove all symbol and relocation information -g --strip-debug Remove all debugging symbols & sections --strip-dwo Remove all DWO sections --strip-unneeded Remove all symbols not needed by relocations -N --strip-symbol <name> Do not copy symbol <name> --strip-unneeded-symbol <name> Do not copy symbol <name> unless needed by relocations --only-keep-debug Strip everything but the debug information --extract-dwo Copy only DWO sections --extract-symbol Remove section contents but keep symbols -K --keep-symbol <name> Do not strip symbol <name> --keep-file-symbols Do not strip file symbol(s) --localize-hidden Turn all ELF hidden symbols into locals -L --localize-symbol <name> Force symbol <name> to be marked as a local --globalize-symbol <name> Force symbol <name> to be marked as a global -G --keep-global-symbol <name> Localize all symbols except <name> -W --weaken-symbol <name> Force symbol <name> to be marked as a weak --weaken Force all global symbols to be marked as weak -w --wildcard Permit wildcard in symbol comparison -x --discard-all Remove all non-global symbols -X --discard-locals Remove any compiler-generated symbols -i --interleave [<number>] Only copy N out of every <number> bytes --interleave-width <number> Set N for --interleave -b --byte <num> Select byte <num> in every interleaved block --gap-fill <val> Fill gaps between sections with <val> --pad-to <addr> Pad the last section up to address <addr> --set-start <addr> Set the start address to <addr> {--change-start|--adjust-start} <incr> Add <incr> to the start address {--change-addresses|--adjust-vma} <incr> Add <incr> to LMA, VMA and start addresses {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val> Change LMA and VMA of section <name> by <val> --change-section-lma <name>{=|+|-}<val> Change the LMA of section <name> by <val> --change-section-vma <name>{=|+|-}<val> Change the VMA of section <name> by <val> {--[no-]change-warnings|--[no-]adjust-warnings} Warn if a named section does not exist --set-section-flags <name>=<flags> Set section <name>'s properties to <flags> --add-section <name>=<file> Add section <name> found in <file> to output --rename-section <old>=<new>[,<flags>] Rename section <old> to <new> --long-section-names {enable|disable|keep} Handle long section names in Coff objects. --change-leading-char Force output format's leading character style --remove-leading-char Remove leading character from global symbols --reverse-bytes=<num> Reverse <num> bytes at a time, in output sections with content --redefine-sym <old>=<new> Redefine symbol name <old> to <new> --redefine-syms <file> --redefine-sym for all symbol pairs listed in <file> --srec-len <number> Restrict the length of generated Srecords --srec-forceS3 Restrict the type of generated Srecords to S3 --strip-symbols <file> -N for all symbols listed in <file> --strip-unneeded-symbols <file> --strip-unneeded-symbol for all symbols listed in <file> --keep-symbols <file> -K for all symbols listed in <file> --localize-symbols <file> -L for all symbols listed in <file> --globalize-symbols <file> --globalize-symbol for all in <file> --keep-global-symbols <file> -G for all symbols listed in <file> --weaken-symbols <file> -W for all symbols listed in <file> --alt-machine-code <index> Use the target's <index>'th alternative machine --writable-text Mark the output text as writable --readonly-text Make the output text write protected --pure Mark the output file as demand paged --impure Mark the output file as impure --prefix-symbols <prefix> Add <prefix> to start of every symbol name --prefix-sections <prefix> Add <prefix> to start of every section name --prefix-alloc-sections <prefix> Add <prefix> to start of every allocatable section name --file-alignment <num> Set PE file alignment to <num> --heap <reserve>[,<commit>] Set PE reserve/commit heap to <reserve>/ <commit> --image-base <address> Set PE image base to <address> --section-alignment <num> Set PE section alignment to <num> --stack <reserve>[,<commit>] Set PE reserve/commit stack to <reserve>/ <commit> --subsystem <name>[:<version>] Set PE subsystem to <name> [& <version>] --compress-debug-sections Compress DWARF debug sections using zlib --decompress-debug-sections Decompress DWARF debug sections using zlib -v --verbose List all object files modified @<file> Read options from <file> -V --version Display this program's version number -h --help Display this output --info List object formats & architectures supported arm-none-eabi-objcopy: supported targets: elf32-littlearm elf32-bigarm elf32-little elf32-big plugin srec symbolsrec verilog tekhex binary ihex 'Building target: STM32L152-nucleo-template' make: [pre-build] Błąd 1 (zignorowany) ' ' 'Invoking: Cross GCC Linker' arm-none-eabi-gcc -nostartfiles -T "D:/Dropbox/Projekty_ARM/STM32L152-nucleo-template/STM32L152RE_FLASH.ld" -mthumb -mcpu=cortex-m3 -Wl,--gc-sections -o "STM32L152-nucleo-template" ./startup/startup_stm32l1xx_xl.o ./src/main.o ./src/stm32l1xx_it.o ./src/stm32l1xx_nucleo.o ./src/system_stm32l1xx.o ./STM32L1xx_StdPeriph_Driver/misc.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_adc.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_aes.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_aes_util.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_comp.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_crc.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_dac.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_dbgmcu.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_dma.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_exti.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_flash.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_flash_ramfunc.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_fsmc.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_gpio.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_i2c.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_iwdg.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_lcd.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_opamp.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_pwr.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_rcc.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_rtc.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_sdio.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_spi.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_syscfg.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_tim.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_usart.o ./STM32L1xx_StdPeriph_Driver/stm32l1xx_wwdg.o c:/program files (x86)/gnu tools arm embedded/4.9 2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m\libc.a(lib_a-init.o): In function `__libc_init_array': init.c:(.text.__libc_init_array+0x20): undefined reference to `_init' collect2.exe: error: ld returned 1 exit status make: *** [STM32L152-nucleo-template] Błąd 1
PS. Mam nadzieje że mi admin wybaczy, wrzucenie na dropa, ale nie chce zaśmiecać niepotrzebnie serwera .
Po obejrzeniu kilku stron z poradnikami, oraz kilkudniowej nieskuteczne próbie odpalenia przykładu od zera na eclipsie dla STM32L152RET, oraz STM32L053 zdecydowanie stwierdzam że
c:/program files (x86)/gnu tools arm embedded/4.9 2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m\libc.a(lib_a-init.o): In function `__libc_init_array': init.c:(.text.__libc_init_array+0x20): undefined reference to `_init' collect2.exe: error: ld returned 1 exit status make: *** [STM32L152-nucleo-template] Błąd 1
Kategorycznie stwierdzam, że konfiguracja przykładowego kodu od zera na eclipse dla STM32L152RET6 nucleo, zdecydowane mnie przerasta.
Oj tam przerasta ... po prostu chcesz szybko szybko , a szybko to wiesz co można zrobić Mój kepler na pewno działa a reszta .... się wyda później
_________________ Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]
No przykłady z wizarda działają, ale ja nie potrzebuje F4 itd. tylko chciałem uruchomić przykład na L152 bez mnóstwa plików itp. jak przy cmsis itp. w wizardzie.
_________________ Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]
Do około dwóch tygodni zrobię poradnik step-by-step w konfiguracji platformy nucleo dla własnego środowiska opartego na Eclipse. Postaram się go zaopatrzyć w duże ilości obrazków, żeby nikt się nie zgubił. W razie gdybym zapomniał, dajcie mi znać!
Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości
Nie możesz rozpoczynać nowych wątków Nie możesz odpowiadać w wątkach Nie możesz edytować swoich postów Nie możesz usuwać swoich postów Nie możesz dodawać załączników