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!