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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.