Forum: Mikrocontroller und Digitale Elektronik Firmware Einbinden funktioniert nicht!


von Ma B. (drumstick)


Lesenswert?

Hallo!

Ich bin neu von PIC auf ARM umgestiegen. Puhh der Einstieg ist nicht 
einfach!
Ich verstehe das mit der Firmware noch nicht ganz. Ich habe auf der ST 
Site eine Firmware heruntergeladen und in meinem Programm eingebunden. 
Nun erscheinen folgende Fehlermeldungen:


C:\Program Files (x86)\Keil\ARM\INC\ST\STM32F10x\STM32F10x.h(670):
error:  #256: invalid redeclaration of type name 
"CAN_FIFOMailBox_TypeDef" (declared at line 171 of "C:\Program Files 
(x86)\Keil\ARM\INC\ST\STM32F10x\stm32f10x_map.h")


Muss ich die Standart_lib entfernen und das automatisch generierte 
Startup-file entfernen? Meiner Meinung nach sollte dies aber 
funktionieren!?!

Danke für Tipps und Eure Hilfe!

Gruss

M.B.

von Ma B. (drumstick)


Lesenswert?

Dies geschieht, wenn ich die Lib:

#include <stm32f10x_lib.h>

einbinde!


Konkrete Anwendung, ich möchte ein PWM-Signal mit dem Timer 4 erzeugen. 
Im Beispielprogramm funktionierts. Mein eigenes Programm funktioniert 
nur im Debug-Modus. Ich verwende einen STM32f107VC uP und verwende 
uVision4 von Keil. Die Port- und Timer Einstellungen habe ich genau 
übernommen. Könnte das Problem mit dem Clock zusammenhängen??
1
#include <stm32f10x_lib.h>
2
#include "STM32_Reg.h"            // missing bit definitions
3
#include <STM32F10x.h>
4
5
6
void init(void)
7
{
8
9
  //Clock
10
11
  RCC   ->  CFGR    = 0x001d8402;
12
  RCC   ->  CR      = 0x01010082;
13
  
14
  RCC   ->  APB2ENR |=  1 <<  3;   /* Enable GPIOB clock     */
15
16
//Port
17
18
  //GPIOB ->  CRL     &=  0x00000000;
19
  //GPIOB ->  CRL     |=  0x33333333;
20
  GPIOB ->  CRH     &=  0x00000000;
21
  GPIOB ->  CRH     |=  0x333333BB;
22
23
24
  RCC   ->  APB1ENR =    0x0004;           // enable clock for TIM4       
25
  TIM4  ->  CR1     =   0;                // reset command register 1
26
  TIM4  ->  CR2     =   0;              // reset command register 2
27
28
  TIM4  ->  PSC     =   0x1C1F;        // set prescaler
29
  TIM4  ->  ARR     =   0x270F;       // set auto-reload
30
31
  TIM4  ->  CCR1    =   0x0000;          //
32
  TIM4  ->  CCR2    =   0x0000;                            //
33
  TIM4  ->  CCR3    =   0x1388;                            //
34
  TIM4  ->  CCR4    =   0x094C;                            //
35
  TIM4  ->  CCMR1   =   0x0000;                           //
36
  TIM4  ->  CCMR2   =   0x6060;                           //
37
  TIM4  ->  CCER    =   0x1100;      // set capture/compare enable register
38
  TIM4  ->  SMCR    =   0x0000;     // set slave mode control register
39
40
  TIM4  ->  SR      =   0x0001;  
41
  TIM4  ->  CR1     =   0x0004;       // set command register 1
42
  TIM4  ->  CR2     =   0x0000;           // set command register 2
43
  TIM4  ->  DIER    =   0x0018;          // enable interrupt
44
  TIM4  ->  CR1     =   0x0001;            // enable timer
45
      
46
}

Danke und Gruss!

M.B.

von Oliver (Gast)


Lesenswert?

Ein header-file ist keine lib.

Ansonsten solltest du halt mal die Keil-Doku und auch die der "Firmware" 
lesen, um zu verstehen, was die einzelnen Programmteile machen, und wie 
sie anzuwenden sind.

Ebenso die Doku von Keil über startup-files.

Oliver

von Ma B. (drumstick)


Lesenswert?

Jo, lese schon die ganze Zeit! Aber es hat noch nicht klick gemacht. 
Vielleicht bin ich ein bisschen langsam im Verstehen, aber sicher nicht 
zu faul um zu lesen.

Danke und Gruss!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.