logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

STMF0 Discovery - Błąd kompilacji przy #include stm32f10x.h w TrueSTUDIO

Chivo 27 Paź 2012 08:53 4149 21
REKLAMA
  • #1 11454956
    Chivo
    Poziom 27  
    Posty: 1325
    Pomógł: 81
    Ocena: 130
    Witam,

    Kupiłem zestaw edukacyjny STMF0 Discovery: http://www.st.com/jp/evalboard/product/253215.jsp. Zainstalowałem najnowszą wersję programu Atollic TrueSTUDIO for ARM Lite. Napisałem pierwszy program do obsługi diod led ze strony: http://www.sunduino.pl/index.php/arm/stm32/di...75-start-z-stm32-vl-discovery-5-truestudio-32.
    Niestety pragram nie kompiluje się ponieważ występuje błąd w linice #include "stm32f10x.h". Proszę o pomoc w napisaniu tego programu do migania diodami led żeby mieć przykładowy program. Dopiero uczę się tych procków i bardzo proszę o pomoc.
    
    /* Includes */
     
    #include "stddef.h"
    #include "stm32f10x.h"
    #include "STM32vldiscovery.h"
     
     
    void GPIO_Inicializace(void); // Ustawienia pinów
    void Delay(__IO uint32_t nTick);
     
    //funkcje  -------------------------------------------------------
     
    // Pętla główna
    int main(void)
    {
    GPIO_Inicializace();
    while (1)
    {
    STM32vldiscovery_LEDOff(LED4);        // LED4 OFF
    Delay(0x55555);
    STM32vldiscovery_LEDToggle(LED4); // LED4 ON
    Delay(0x55555);
     
    if(0 == STM32vldiscovery_PBGetState(BUTTON_USER))
    {
    // po naciśnięciu przycisku
    STM32vldiscovery_LEDToggle(LED3); // LED3 ON
    }
    else
    {
     
    STM32vldiscovery_LEDOff(LED3);   // LED3 OFF
    }
     
    }
    }
     
    // Inicjacja GPIO
    void GPIO_Inicializace(void)
    {
    STM32vldiscovery_LEDInit(LED3);
    STM32vldiscovery_LEDInit(LED4);
    STM32vldiscovery_PBInit(BUTTON_USER, BUTTON_MODE_GPIO);
    STM32vldiscovery_LEDOff(LED3);
    STM32vldiscovery_LEDOff(LED4);
    }
     
    //- Delay
    void Delay(__IO uint32_t nTick)
    {
    for(; nTick != 0; nTick--);
    }
    
  • REKLAMA
  • #2 11455007
    Konto nie istnieje
    Konto nie istnieje  
  • #5 11456250
    Chivo
    Poziom 27  
    Posty: 1325
    Pomógł: 81
    Ocena: 130
    Rozumiem, dzięki za pomoc. Czy możesz mi napisać program do mojej płytki do mrugania diodami led, żeby mieć swój przykładowy program jako wzór?????
  • Pomocny post
    #6 11456315
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • Pomocny post
    #7 11456431
    mrh
    Poziom 18  
    Posty: 572
    Pomógł: 15
    Ocena: 13
    W załączniku masz przykładowy projekt na miganie ledów, tylko że bez bibliotek ST.
    Załączniki:
    • F0_led.zip (280.01 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #9 11458856
    Chivo
    Poziom 27  
    Posty: 1325
    Pomógł: 81
    Ocena: 130
    Do Freddie Chopin: jak możesz to napisz swoją wersję programu do migania diodami dla STM32F0 Discovery
  • #10 11459043
    gaskoin
    Poziom 38  
    Posty: 4159
    Pomógł: 436
    Ocena: 102
    Jest jak wół w linku ze stopki FC
  • REKLAMA
  • #12 11459125
    gaskoin
    Poziom 38  
    Posty: 4159
    Pomógł: 436
    Ocena: 102
    Ale można go zbudować z dwóch :)
  • #13 11460050
    Konto nie istnieje
    Konto nie istnieje  
  • #14 11460247
    zielik
    Poziom 10  
    Posty: 11
    Ocena: 1
    Gdy utworzysz pusty project dla F0Discovery w TrueStudio najnowszym to on automatycznie wygeneruje pierwszy program do mrugania LEDami.

    O taki:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #15 11460647
    Chivo
    Poziom 27  
    Posty: 1325
    Pomógł: 81
    Ocena: 130
    Witam,

    Pozmieniałem trochę ten domyślny program. Moja część zawarta jest w linijkach "moj program" reszte kodu wyłączyłem. Proszę o sprawdzenie, bo jeszcze czekam na kuriera z moim zestawem STM32F0 Discovery.
    
    
    *****************************************************************************
    **
    **  File        : main.c
    **
    **  Abstract    : main function.
    **
    **  Functions   : main
    **
    **  Environment : Atollic TrueSTUDIO(R)
    **
    **  Distribution: The file is distributed “as is,” without any warranty
    **                of any kind.
    **
    **  (c)Copyright Atollic AB.
    **  You may use this file as-is or modify it according to the needs of your
    **  project. Distribution of this file (unmodified or modified) is not
    **  permitted. Atollic AB permit registered Atollic TrueSTUDIO(R) users the
    **  rights to distribute the assembled, compiled & linked contents of this
    **  file as part of an application binary file, provided that it is built
    **  using the Atollic TrueSTUDIO(R) toolchain.
    **
    **
    *****************************************************************************
    */
    
    /* Includes */
    #include <stddef.h>
    #include "stm32f0xx_rcc.h"
    #include "stm32f0xx_gpio.h"
    
    /* Private typedef */
    
    /* Private define  */
    /* STM32F0_DISCOVERY board definitions */
    #define LED_PORT GPIOC
    #define LED1 GPIO_Pin_9
    #define LED2 GPIO_Pin_8
    
    #define KEY_PORT GPIOA
    #define KEY GPIO_Pin_0
    
    /* Private macro */
    
    /* Private variables */
    
    /* Private function prototypes */
    
    void Delay(volatile unsigned);
    
    /* Private functions */
    
    void Delay(volatile unsigned count)
    {
       while(count--);
    }
    
    /* Global variables */
    uint32_t timer=0;
    uint8_t  timerFlag=0;
    
    /**
    **===========================================================================
    **
    **  Abstract: SysTick interrupt handler
    **
    **===========================================================================
    */
    void SysTick_Handler(void)
    {
      timer++;
      if  (timer>2000)
      {
        timerFlag = 1;
        timer = 0;
      }
    }
    
    
    /**
    **===========================================================================
    **
    **  Abstract: main program
    **
    **===========================================================================
    */
    int main(void)
    {
      uint32_t ii = 0;
      GPIO_InitTypeDef        GPIO_InitStructure;
    
      /* TODO - Add your application code here */
      SysTick_Config(4800);  /* 0.1 ms = 100us if clock frequency 12 MHz */
    
      SystemCoreClockUpdate();
      ii = SystemCoreClock;    /* This is a way to read the System core clock */
      ii = 0;
    
      /* GPIOA-C Periph clock enable */
      RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
      RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
      RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
    
      /* Configure
       * PA0 USER Button input
       * */
      GPIO_InitStructure.GPIO_Pin = KEY;
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
      GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
      GPIO_Init(KEY_PORT, &GPIO_InitStructure);
    
      /* Configure PC8 and PC9 in output pushpull mode
       * PC8 = LD3 Green LED
       * PC9 = LD4 Blue LED
       * */
      GPIO_InitStructure.GPIO_Pin = LED1 | LED2;
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
      GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
      GPIO_Init(LED_PORT, &GPIO_InitStructure);
    
      /*  moj program */
      while(1)
      {
    	 GPIO_SetBits(LED_PORT, LED1);
    	 Delay(1000000);
    	 GPIO_ResetBits(LED_PORT, LED1);
    	 Delay(1000000);
    	 GPIO_SetBits(LED_PORT, LED2);
    	 Delay(1000000);
    	 GPIO_ResetBits(LED_PORT, LED2);
    	 Delay(1000000);
      }
    return 0;
    }
    /*  koniec moj program */
    
    
    /**  GPIO_SetBits(LED_PORT, LED1);
      GPIO_ResetBits(LED_PORT, LED1);
      LED_PORT->BSRR = LED2;
      LED_PORT->BRR = LED2;
    
      while (1)
      {
    	  if (timerFlag)
    	  {
    		  timerFlag = 0;
    		  ii++;
    
    		  /* Toggle LED1 */
    /** 	  if (ii == 1)
    		  {
    			  LED_PORT->BSRR = LED1;
    		  }
    		  else if (ii == 2)
    		  {
    			  ii = 0;
    			  LED_PORT->BRR = LED1;
    		  }
    	  }
          if(GPIO_ReadInputDataBit(KEY_PORT, KEY))
    	  {
    		  /* USER key pressed */
    /**		  if (ii == 1)
    		  {
    			  GPIO_SetBits(LED_PORT, LED2);
    		  }
    	  }
    	  else
    	  {
    		  GPIO_ResetBits(LED_PORT, LED2);
    	  }
      }
      return 0;
    }**/
    
  • #16 11461818
    maniek1818
    Poziom 22  
    Posty: 631
    Pomógł: 25
    Ocena: 260
    Ja mam zestaw z STM32F0 wygrany w konkursie organizowanym przez kamami. Wcześniej programowałem już ARM'y ATMELa. W przykładzie jak powyżej wykorzystywany jest System timer tick. U atmela normalnie ustawiałem zezwolenie na przerwania od SysTick, a tutaj tego nie widzę. W RM od tego procesora µC w tabeli wektorów przerwań nie widzę, żeby SysTick był na jakiejkolwiek pozycji.

    ***
    30.10.2012r.
    Dobrze, już wiem. Bazowałem tylko na pliku RM, znalazłem przed chwilą PM (Programming Manual) i już sobie poradziłem.
  • #17 11468870
    Chivo
    Poziom 27  
    Posty: 1325
    Pomógł: 81
    Ocena: 130
    Witam,

    Dzisiaj przyszedł mój zestaw STM32F0Discovery. Niestety mam problem z jego zaprogramowaniem. Udało mi się połączyć i zaprogramować go za pomocą ST-Link programem do mrugania diodami przesłanym przez kolegę "mrh". Nie potrafię skompilować i zaprogramować układu za pomocą własnego programu napisanego w najnowszej wesji Atollic TrueSTUDIO for ARM Lite. W załączniku przesyłam printscreeny błędów. Proszę o pomoc.

    Pozdrawiam, Rafał
    Załączniki:
    • STMF0 Discovery - Błąd kompilacji przy #include stm32f10x.h w TrueSTUDIO Error1.jpg (127.52 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • STMF0 Discovery - Błąd kompilacji przy #include stm32f10x.h w TrueSTUDIO Error.jpg (126.33 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #18 11469121
    Chivo
    Poziom 27  
    Posty: 1325
    Pomógł: 81
    Ocena: 130
    Generalnie proszę napisać jak wygenerować plik ".hex" i jak go wgrać do procesora
  • REKLAMA
  • #19 11470468
    Chivo
    Poziom 27  
    Posty: 1325
    Pomógł: 81
    Ocena: 130
    Witam,

    Czy może mi ktoś napisać jak skompilować ten przykładowy program do mrugania diodami w Atolic TrueStudio, żeby uzyskać plik .hex i wgrać go do procesora????

    Pozdrawiam, Rafał
  • #21 11470540
    tymon_x
    Poziom 30  
    Posty: 1021
    Pomógł: 171
    Ocena: 15
    Chivo napisał:
    Czy możesz mi napisać program do mojej płytki do mrugania diodami led, żeby mieć swój przykładowy program jako wzór?????
    Chivo napisał:
    Czy może mi ktoś napisać jak skompilować ten przykładowy program do mrugania diodami w Atolic TrueStudio, żeby uzyskać plik .hex i wgrać go do procesora????
    Chivo napisał:
    Generalnie proszę napisać jak wygenerować plik ".hex" i jak go wgrać do procesora
    Chivo napisał:
    Czy możesz mi napisać ten program do mrugania diodami?????

    Nie jesteśmy od wyręczenia z każdej czynności.
  • #22 11505014
    Chivo
    Poziom 27  
    Posty: 1325
    Pomógł: 81
    Ocena: 130
    Jakoś sobie poradziłem

Podsumowanie tematu

✨ Użytkownik zakupił zestaw edukacyjny STMF0 Discovery i napotkał błąd kompilacji przy użyciu pliku nagłówkowego "stm32f10x.h" w Atollic TrueSTUDIO. Odpowiedzi wskazują, że problem wynika z użycia niewłaściwych plików nagłówkowych dla procesora STM32F0, zamiast odpowiednich dla STM32F0. Użytkownicy sugerują, aby skorzystać z przykładów dostępnych na stronie STMicroelectronics oraz zainstalować odpowiednie biblioteki. Wskazówki dotyczące generowania pliku .hex oraz programowania układu za pomocą ST-Link również zostały poruszone. Użytkownik prosił o pomoc w napisaniu programu do migania diodami LED, co spotkało się z różnymi odpowiedziami, w tym linkami do gotowych przykładów.
Wygenerowane przez model językowy.
REKLAMA