Znaleziono 9 wyników

autor: AOLEK
28 cze 2013, 06:48
Forum: Elektronika CNC
Temat: STM32F4DISCOVERY i COOCOX pierwsze kroki miganie ledami
Odpowiedzi: 33
Odsłony: 6723

... wczoraj robiąc porządki w szufladzie znalazłem STM32F4DISCOVERY :) mając trochę czsu zainstalowałem środowisko COOCOX, niestety pamięć mam dobrą, ale krótką dużo pozapominałem.

Znalazłem NA TEJ TURECKIEJ STRONCE kilka przykładów i najciekawszy z czterema PWMami.

Chodzi oto, że tylko ten przykład z PWM mi się niekompiluje wywala takie cos:

Kod: Zaznacz cały

GCC HOME: C:\Program Files\GNU Tools ARM Embedded\4.7 2013q1\bin
compile: 
    [mkdir] Skipping C:\CooCox\CoIDE\workspace\pwm5\pwm5\Debug\bin because it already exists.
    [mkdir] Skipping C:\CooCox\CoIDE\workspace\pwm5\pwm5\Debug\obj because it already exists.
       [cc] Starting dependency analysis for 16 files.
       [cc] Parsing ..\..\..\cmsis_boot\stm32f4xx.h
       [cc] Parsing ..\..\..\cmsis\core_cm4.h
       [cc] Parsing ..\..\..\cmsis_boot\stm32f4xx_conf.h
       [cc] Parsing ..\..\..\cmsis\core_cmInstr.h
       [cc] Parsing ..\..\..\cmsis\core_cmFunc.h
       [cc] Parsing ..\..\..\cmsis\core_cm4_simd.h
       [cc] 16 files are up to date.
       [cc] 1 total files to be compiled.
       [cc] 0 files to be recompiled from dependency analysis.
       [cc] arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -Wall -ffunction-sections -g -O0 -c -DSTM32F407VG -DSTM32F4XX -DUSE_STDPERIPH_DRIVER -D__ASSEMBLY__ -IC:\CooCox\CoIDE\workspace\pwm5\cmsis -IC:\CooCox\CoIDE\workspace\pwm5\cmsis_lib\include -IC:\CooCox\CoIDE\workspace -IC:\CooCox\CoIDE\workspace\pwm5 -IC:\CooCox\CoIDE\workspace\pwm5\cmsis_boot -IC:\CooCox\CoIDE\workspace\pwm5\STM32F4-Discovery -IC:\CooCox\CoIDE\workspace\pwm5\cmsis_lib C:\CooCox\CoIDE\workspace\pwm5\main.c
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:18:2: error: unknown type name 'TIM_TimeBaseInitTypeDef'
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:19:2: error: unknown type name 'TIM_OCInitTypeDef'
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c: In function 'GPIO_Setup': 
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:89:4: error: 'GPIO_InitStructure' undeclared (first use in this function) 
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:89:4: note: each undeclared identifier is reported only once for each function it appears in
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c: In function 'PWM_Setup': 
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:167:25: error: request for member 'TIM_Period' in something not a structure or union
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:168:25: error: request for member 'TIM_Prescaler' in something not a structure or union
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:169:25: error: request for member 'TIM_ClockDivision' in something not a structure or union
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:170:25: error: request for member 'TIM_CounterMode' in something not a structure or union
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:170:44: error: 'TIM_CounterMode_Up' undeclared (first use in this function) 
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:172:4: warning: implicit declaration of function 'TIM_TimeBaseInit' [-Wimplicit-function-declaration] 
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:175:23: error: request for member 'TIM_OCMode' in something not a structure or union
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:175:37: error: 'TIM_OCMode_PWM1' undeclared (first use in this function) 
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:176:23: error: request for member 'TIM_OutputState' in something not a structure or union
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:176:42: error: 'TIM_OutputState_Enable' undeclared (first use in this function) 
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:177:23: error: request for member 'TIM_Pulse' in something not a structure or union
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:178:23: error: request for member 'TIM_OCPolarity' in something not a structure or union
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:178:41: error: 'TIM_OCPolarity_High' undeclared (first use in this function) 
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:182:31: error: 'TIM_OCPreload_Enable' undeclared (first use in this function) 
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:185:23: error: request for member 'TIM_OutputState' in something not a structure or union
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:182:4: warning: implicit declaration of function 'TIM_OC1PreloadConfig' [-Wimplicit-function-declaration] 
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:180:4: warning: implicit declaration of function 'TIM_OC1Init' [-Wimplicit-function-declaration] 
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:186:23: error: request for member 'TIM_Pulse' in something not a structure or union
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:188:4: warning: implicit declaration of function 'TIM_OC2Init' [-Wimplicit-function-declaration] 
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:190:4: warning: implicit declaration of function 'TIM_OC2PreloadConfig' [-Wimplicit-function-declaration] 
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:193:23: error: request for member 'TIM_OutputState' in something not a structure or union
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:194:23: error: request for member 'TIM_Pulse' in something not a structure or union
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:196:4: warning: implicit declaration of function 'TIM_OC3Init' [-Wimplicit-function-declaration] 
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:198:4: warning: implicit declaration of function 'TIM_OC3PreloadConfig' [-Wimplicit-function-declaration] 
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:201:23: error: request for member 'TIM_OutputState' in something not a structure or union
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:202:23: error: request for member 'TIM_Pulse' in something not a structure or union
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:204:4: warning: implicit declaration of function 'TIM_OC4Init' [-Wimplicit-function-declaration] 
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:206:4: warning: implicit declaration of function 'TIM_OC4PreloadConfig' [-Wimplicit-function-declaration] 
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:208:4: warning: implicit declaration of function 'TIM_ARRPreloadConfig' [-Wimplicit-function-declaration] 
       [cc] C:\CooCox\CoIDE\workspace\pwm5\main.c:211:4: warning: implicit declaration of function 'TIM_Cmd' [-Wimplicit-function-declaration] 

BUILD FAILED
Total time: 2 seconds
Co robię nietak ?[/code]
autor: AOLEK
14 paź 2012, 16:15
Forum: Elektronika CNC
Temat: STM32F4DISCOVERY i COOCOX pierwsze kroki miganie ledami
Odpowiedzi: 33
Odsłony: 6723

fajny opis... dzięks
Ustawić według tego opisu ?
Niewiem czy to pod linuxem się przyda ale jak wczoraj czytałem i dobrze zrozumiałem to rozwiązaniem jest wcześniejsza wersja drivera stlink ale to chba chodziło o komunikacje w XP
autor: AOLEK
14 paź 2012, 07:03
Forum: Elektronika CNC
Temat: STM32F4DISCOVERY i COOCOX pierwsze kroki miganie ledami
Odpowiedzi: 33
Odsłony: 6723

A TU można na tłumacza google wrzucić gość opisuje jescze jakieś ustawienia tylko w jakim celu ? to niezabardzo kumam.
autor: AOLEK
13 paź 2012, 14:15
Forum: Elektronika CNC
Temat: STM32F4DISCOVERY i COOCOX pierwsze kroki miganie ledami
Odpowiedzi: 33
Odsłony: 6723

To może zacznijmy od tego a potem będzie łatwiej :grin:

Kod: Zaznacz cały

 #define HWREG(x)         (*((volatile unsigned long *)(x))) 
  #define RCC             0x40023800 
  #define RCC_AHB1ENR     (RCC + 0x30) 
  #define GPIOA             0x40020000 
  #define GPIOA_IDR        (GPIOA + 0x10) 
  #define GPIOD            0x40020c00 
  #define GPIOD_MODER     (GPIOD + 0x0) 
  #define GPIOD_BSRR      (GPIOD + 0x18) 

  #define STACK_TOP 0x20002000                                        /* To może poruszać się całkiem szybko! */
albo jakieś namiary...
autor: AOLEK
13 paź 2012, 13:47
Forum: Elektronika CNC
Temat: STM32F4DISCOVERY i COOCOX pierwsze kroki miganie ledami
Odpowiedzi: 33
Odsłony: 6723

hehe... szukałem gdzie zmienić port servera, gdy można zmienić port klient
działa ?
a na drugie pytanie: Listonosz jest daleko dlatego nie może się połączyć :mrgreen:

Teraz trzeba się zagłębiać w biblioteke STM32F4.
autor: AOLEK
13 paź 2012, 13:34
Forum: Elektronika CNC
Temat: STM32F4DISCOVERY i COOCOX pierwsze kroki miganie ledami
Odpowiedzi: 33
Odsłony: 6723

A to co ? po odchaczeniu opcji: autodownload w opcjach debuggera.

Obrazek

[ Dodano: 2012-10-13, 13:35 ]
markcomp77 pisze:muszę poszukać, gdzie się ustawia port...
w opcjach debuggera obok
autor: AOLEK
13 paź 2012, 13:05
Forum: Elektronika CNC
Temat: STM32F4DISCOVERY i COOCOX pierwsze kroki miganie ledami
Odpowiedzi: 33
Odsłony: 6723

Może problemem jest brak połączenia fizycznego z Discovery ?
Wczoraj gdzieś mi mignął przed oczyma taki temat.

[ Dodano: 2012-10-13, 13:08 ]
markcomp77 pisze:to daje szansę na pracę pod linuksem !
z tego co czytałem wczoraj na różnych forach to napewno pracuje pod linuxem.
autor: AOLEK
13 paź 2012, 12:28
Forum: Elektronika CNC
Temat: STM32F4DISCOVERY i COOCOX pierwsze kroki miganie ledami
Odpowiedzi: 33
Odsłony: 6723

Ja mam to w COOCOX to co mam w poście wyżej jest w pliku main.c. Przy nowym projekcie podaje nazwe katalogu w kroku 1 i 2 wybór ARM i rodzaju procesora potem zaznaczam tak jak na zrzucie niżej i wszystkie potrzebne pliki lądują w katalogu którego nazwe podałem na samym początku.
Obrazek

[ Dodano: 2012-10-13, 12:39 ]
markcomp77 pisze:a jak idzie komunikacja discovery z coIDE? (stlink)
dopiero przedwczoraj kupiłem w necie jeszcze nieprzyszło :wink:
po kliknięciu deburdzera coś mi takiego wywala:"Console flasch download error"
autor: AOLEK
13 paź 2012, 10:32
Forum: Elektronika CNC
Temat: STM32F4DISCOVERY i COOCOX pierwsze kroki miganie ledami
Odpowiedzi: 33
Odsłony: 6723

STM32F4DISCOVERY i COOCOX pierwsze kroki miganie ledami

Dopiero za 8 razem udało mi się znaleźć przykładowy program migania ledami i go poprawnie skompilować. Myślę,że STM32F4 to przyszłość i jaknajbardziej przyda się do sterowania naszych maszyn CNC. Z momocą wójka google przetłumaczyłem niektóre komentaże, a z waszą pomocą chciałbym zrozumieć linijka po linijce tego kodu.

Kod: Zaznacz cały

 /****************************************************************************************************/
 /*                                                                                                  */
 /*    Name:        blinky.c                                                                         */
 /*                                                                                                  */
 /*    Purpose:    Test Program for STM32VLDiscovery - blinks the LEDs on and off at different rates */
 /*                (Green = 4 x Slower than Blue). Green is turned off if the button is pressed.     */
 /*                                                                                                  */
 /*    Created:    21st September 2010                                                               */
 /*                                                                                                  */
 /*    Author:        Paul Robson ([email protected])                                              */
 /*                Simonsson Fun Techonlogies (original work on code for STM32)                      */
 /*              STM32F4DISCOVERY adapation by A. Wassatsch                                          */
 /*                                                                                                  */
 /****************************************************************************************************/

 #define HWREG(x)         (*((volatile unsigned long *)(x))) 
 #define RCC             0x40023800
 #define RCC_AHB1ENR     (RCC + 0x30) 
 #define GPIOA             0x40020000
 #define GPIOA_IDR        (GPIOA + 0x10) 
 #define GPIOD            0x40020c00
 #define GPIOD_MODER     (GPIOD + 0x0) 
 #define GPIOD_BSRR      (GPIOD + 0x18) 

 #define STACK_TOP 0x20002000                                        /* To może poruszać się całkiem szybko! */

 void nmi_handler(void); 
 void hardfault_handler(void); 
 void delay(void); 
 int main(void); 

 /*  Four vectors - the starting stack pointer value, code entry point and NMI and Hard-Fault handlers */
 /*  Cztery wektory - początkowa wartość wskaźnika stosu, punkt wejścia kod i NMI i Hard-Fault teleskopowe */

 unsigned int * myvectors[4] 
 __attribute__ ((section(".isr_vector")))= { 
     (unsigned int *)    STACK_TOP,
     (unsigned int *)     main,
     (unsigned int *)    nmi_handler,
     (unsigned int *)    hardfault_handler
 }; 

 int main(void) 
 { 
     int n = 0; 
     int button; 

     HWREG(RCC_AHB1ENR) |= 0x08 | 0x01;   /* Enable the GPIOA (bit 0) and GPIOD (bit 3) Włącz GPIOA (bit 0) i GPIOD (bit 3) */
     HWREG(GPIOD_MODER) = 0x05000000;     /* Set GPIOD Pin 12 and Pin 13 to outputs     Set GPIOD Pin 12 i pin 13 na wyjścia */

     while(1) 
     { 
         delay();                                      /* A short delay */
         button = (( HWREG(GPIOA_IDR) & 0x1) == 0);    /* Read the button - the button pulls down PA0 to logic 0 Odczyt przycisk - przycisk ściąga PA0 logice 0*/
         n++;                                          /* Count the delays */
         if (n & 1) {                                  /* Copy bit 0 of counter into GPIOC:Pin 8 Kopiuj * 0 bit licznika do GPIOC: Pin 8*/
             HWREG(GPIOD_BSRR) = 1<<12 ; 
         } else { 
             HWREG(GPIOD_BSRR) = 1<<28; 
         } 
         if ((n & 4) && button) {                      /* Copy bit 4 of counter into GPIOC:Pin 9 if button pressed */
             HWREG(GPIOD_BSRR) = 1<<13 ; 
         } else { 
             HWREG(GPIOD_BSRR) = 1<<29; 
         } 
     } 
 } 

 void delay(void) 
 { 
     int i = 100000;                                   /* About 1/4 second delay Około 1/4 sekundy opóźnienia*/
     while (i-- > 0) { 
         asm("nop");                                   /* This stops it optimising code out Zatrzymuje on optymalizacji kodu z*/
     } 
 } 

 void nmi_handler(void) 
 { 
     return ; 
 } 

 void hardfault_handler(void) 
 { 
     return ; 
 }

Wróć do „STM32F4DISCOVERY i COOCOX pierwsze kroki miganie ledami”