Firmware Einbinden funktioniert nicht!

OP #2205571
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.
OP #2205599
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.
Gast #2205645
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren