STM32F0 Fehler: "_ansi.h: No such file or directory"

OP #4445370
Lesenswert?
• ▲
▼
Hallo,

ich beschäftige mich gerade mit einem STM32F0 Discovery Board und bin 
dabei, ein einfaches LED-Blinkprogramm zu schreiben. Dazu habe ich das 
Tutorial im 
https://www.mikrocontroller.net/articles/STM32_CooCox_Installation
durchgeführt und auf das STM32F0 Board adaptiert. Das funktioniert auch 
schon.
Um das Setzen der Ausgänge zu vereinfachen habe ich eine Funktion 
erstellt. Dieser Funktion übergebe ich den Pin, den ich setzen möchte, 
und den Wert. In der Funktion wird die Pinnummer in einen Dezimalwert 
umgewandelt und dem Set- bzw. Resetregister übergeben.
Für die Funktion pow(2, pin) benötige ich die Math.h.

CooCox meckert jetzt aber, dass er "_ansi.h" nicht finden kann.

Wie kann ich den Fehler beheben? Gibt es eventuell eine andere 
Möglichkeit das Setzen der Pins zu vereinfachen?

Hier der Code:

1
#include "stm32f0xx.h"
2
#include "math.h"
3

4
void Delay (int a);
5
void setOutC (int pin, int val);
6

7
int main(void)
8
{
9

10
  RCC->AHBENR |= RCC_AHBENR_GPIOCEN; // Clock für Port C aktivieren
11

12
      GPIOC->MODER = 0x55555555; // PINC.0 .. PINC.15 als Ausgang definieren
13

14
      while(1) // Endlosschleife
15
      {
16
          setOutC(9,0); //Funktionsaufruf: PINC.9 = 0
17
          setOutC(8,0); //Funktionsaufruf: PINC.8 = 0
18
        //GPIOC->BRR = 0b0000001100000000; // Alle LEDs aus
19
          Delay(500000);
20
          setOutC(8,1); //Funktionsaufruf: PINC.8 = 1
21
          //GPIOC->BSRR = 0b0000001000000000; // LED 1 ein
22
          Delay(500000);
23
          setOutC(9,1); //Funktionsaufruf: PINC.9 = 1
24
          //GPIOC->BSRR = 0b0000000100000000; // LED 2 ein
25
          Delay(500000);
26

27
      }
28
}
29

30
// Delay
31
void Delay (int a)
32
{
33
    volatile int i,j;
34

35
    for (i=0 ; i < a ; i++)
36
    {
37
        j++;
38
    }
39

40
    return;
41
}
42

43
void setOutC (int pin, int val)
44
{
45
  if(val==0){
46
    GPIOC->BRR = pow(2,pin);
47
  } else if(val==1) {
48
    GPIOC->BSRR = pow(2,pin);
49
  }
50
  return;
51
}

Info: Ich bin absoluter C-Neuling. (Habe nur etwas Erfahrung in Java)

Danke im Voraus!
Angehängte Dateien:
Gast #4446039
Lesenswert?
• ▲
▼
Luca E. schrieb:

> Info: Ich bin absoluter C-Neuling.

Sieht man. Besser mit Basiswissen in C anfangen, Stichwort 
Bit-Operationen.

Und für math.h braucht es die Linker Option -lm und die Definition, 
welches FP Modell verwendet werden soll, gibt da recht viele. Beim FP 
ganz sicher Soft-FP.

math.h braucht aber hier keiner.
OP #4446176
Lesenswert?
• ▲
▼
Jim M. schrieb:
> Wenn Du stattdessen
> 1<< pin;
> nimmst

Danke, das funktioniert.

John Doe schrieb:
> Lies mal erst ein C-Tutorial...

Ja, das werde ich tun.

Aktuell habe ich das Problem, das ich das Board nicht mehr programmiert 
bekomme... "Error: Connect failed, check config and cable connection"
Der ST-Link wird im Gerätemanager angezeigt, an der Config habe ich 
nichts verändert und ist mit der aus dem Tutorial identisch...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.