Elektroda.pl
Elektroda.pl
X
Computer Controls
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[STM32][CooCox][C] Błąd przy użyciu sprintf i koment do ADC

22 Maj 2013 22:54 1953 1
  • Poziom 2  
    Witam

    Mam pewien problem wyrzuca mi następujący błąd przy użyciu sprintf i ADC.

    Cytat:
    [cc] Starting link
    [cc] arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -g -nostartfiles -flto -Wl,-Map=kupa.map -O0 -Wl,--gc-sections -Wl,-entry=main -LC:\CooCox\CoIDE\configuration\ProgramData\kupa -Wl,-TC:\CooCox\CoIDE\configuration\ProgramData\kupa/arm-gcc-link.ld -g -o kupa.elf ..\obj\core_cm3.o ..\obj\system_stm32f10x.o ..\obj\startup_stm32f10x_md.o ..\obj\stm32f10x_gpio.o ..\obj\main.o ..\obj\lcd_hd44780_lib.o ..\obj\printf.o ..\obj\stm32f10x_rcc.o ..\obj\stm32f10x_adc.o ..\obj\syscalls.o ..\obj\stm32f10x_flash.o ..\obj\misc.o
    [cc] C:\Users\PAWEL_~1\AppData\Local\Temp\ccGnyAhn.s: Assembler messages:
    [cc] C:\Users\PAWEL_~1\AppData\Local\Temp\ccGnyAhn.s:464: Error: offset out of range
    [cc] C:\Users\PAWEL_~1\AppData\Local\Temp\ccGnyAhn.s:465: Error: offset out of range
    [cc] lto-wrapper: C:\Program Files\GNU Tools ARM Embedded\4.7 2013q1\bin\arm-none-eabi-gcc returned 1 exit status
    [cc] c:/program files/gnu tools arm embedded/4.7 2013q1/bin/../lib/gcc/arm-none-eabi/4.7.3/../../../../arm-none-eabi/bin/ld.exe: lto-wrapper failed
    [cc] collect2.exe: error: ld returned 1 exit status


    Sprintf mam tak wpisany:

    Code:
    [syntax=c]sprintf((char *)wartoscADC1VTekst, "%d,%03d V\0",( wartoscADC1V / 1000),( wartoscADC1V % 1000));[/syntax]


    Tak mam wpisany przetwornik AC

    Code:
    [syntax=c]void ADC_Config(void)
    
    {
     //konfigurowanie przetwornika AC
      ADC_InitTypeDef ADC_InitStructure;

       ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;                  //Jeden przetwornik, praca niezalezna
       ADC_InitStructure.ADC_ScanConvMode = DISABLE;                       //Pomiar jednego kanalu, skanowanie kanalow nie potrzebne
       ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;                 //Pomiar w trybie jednokrotnym
      //ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;                //Pomiar w trybie ciaglym
       ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;   //Brak wyzwalania zewnetrznego
       ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;               //Wyrownanie danych do prawej - 12 mlodszych bitow znaczacych
       ADC_InitStructure.ADC_NbrOfChannel = 1;                              //Liczba uzywanych kanalow =1
       ADC_Init(ADC1, &ADC_InitStructure);                                 //Incjalizacja przetwornika
                                                                       //Grupa podstawowa, czas probkowania 1,5+12,5=14 cykli ->  f probkowania = 14MHz/14cykli = 1MHz

       ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 1, ADC_SampleTime_1Cycles5);
                                                                           //Kanal 14 - GPIOC4 - potencjometr na plytce ZL27ARM

       ADC_Cmd(ADC1, ENABLE);                                                    //Wlacz ADC1

       ADC_ResetCalibration(ADC1);                                           //Reset rejestrow kalibracyjnych ADC1
       while(ADC_GetResetCalibrationStatus(ADC1));                         //Odczekanie na wykonanie resetu
       ADC_StartCalibration(ADC1);                                         //Kalibracja ADC1
       while(ADC_GetCalibrationStatus(ADC1));                              //Odczekanie na zakonczenie kalibracji ADC1

    }
    [/syntax]



    Pomrzecie mi rozwiązać te błędy, kody pobrałem z książki "STM32 Aplikacje i ćwiczenie "


    z góry dzięki za pomoc
  • Computer Controls
  • Specjalista - Mikrokontrolery
    Błąd jest na 99% spowodowany użyciem LTO i niedostosowaniem którejś części projektu do tejże funkcji.

    4\/3!!