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

STMF0 Discovery - Pierwszy program

Chivo 27 Paź 2012 08:53 3588 21
  • #1 27 Paź 2012 08:53
    Chivo
    Poziom 21  

    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...5-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.

    Code:

    /* 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--);
    }

    0 21
  • #2 27 Paź 2012 09:33
    63404
    Użytkownik usunął konto  
  • #5 27 Paź 2012 15:09
    Chivo
    Poziom 21  

    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?????

    0
  • Pomocny post
    #6 27 Paź 2012 15:26
    mrsajm0n
    Poziom 13  

    http://www.st.com/internet/evalboard/product/253215.jsp
    Jest tu wszystko czego potrzebujesz z gotowymi programami również.
    Kolega podał Ci nawet dokładny link do paczki. W katalogu /Project/Peripheral_Examples/ masz przykłady. Więcej Ci raczej nikt nie pomoże. Pokombinuj trochę sam.

    0
  • #8 27 Paź 2012 17:33
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Fajne pliki, ale trochę szkoda że z niektórych (z większości) powycinałeś nagłówki i komentarze.

    4\/3!!

    0
  • #9 28 Paź 2012 08:59
    Chivo
    Poziom 21  

    Do Freddie Chopin: jak możesz to napisz swoją wersję programu do migania diodami dla STM32F0 Discovery

    0
  • #10 28 Paź 2012 10:08
    gaskoin
    Poziom 38  

    Jest jak wół w linku ze stopki FC

    0
  • #11 28 Paź 2012 10:21
    Freddie Chopin
    Specjalista - Mikrokontrolery
  • #12 28 Paź 2012 10:33
    gaskoin
    Poziom 38  

    Ale można go zbudować z dwóch :)

    0
  • #13 28 Paź 2012 14:01
    63404
    Użytkownik usunął konto  
  • #14 28 Paź 2012 14:34
    zielik
    Poziom 9  

    Gdy utworzysz pusty project dla F0Discovery w TrueStudio najnowszym to on automatycznie wygeneruje pierwszy program do mrugania LEDami.

    O taki:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #15 28 Paź 2012 16:05
    Chivo
    Poziom 21  

    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.

    Code:


    *****************************************************************************
    **
    **  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;
    }**/

    0
  • #16 28 Paź 2012 19:50
    maniek1818
    Poziom 22  

    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.

    0
  • #17 30 Paź 2012 19:30
    Chivo
    Poziom 21  

    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ł

    0
  • #18 30 Paź 2012 20:17
    Chivo
    Poziom 21  

    Generalnie proszę napisać jak wygenerować plik ".hex" i jak go wgrać do procesora

    0
  • #19 31 Paź 2012 07:42
    Chivo
    Poziom 21  

    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ł

    0
  • #20 31 Paź 2012 08:08
    Freddie Chopin
    Specjalista - Mikrokontrolery
  • #21 31 Paź 2012 08:32
    tymon_x
    Poziom 30  

    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.

    -1
  • #22 08 Lis 2012 18:36
    Chivo
    Poziom 21  

    Jakoś sobie poradziłem

    -1