C: .h und .c habe ich erstellt - wie jetzt weiter?

Gast #2136871
Lesenswert?
• ▲
▼
Hallo Leute!

Ich stehe auf dem Schlauch. Ich habe mir eine .h und eine .c Datei 
erstellt. Die .h Datei habe ich jetzt in meinen Quelltext eingebunden, 
aber die Funktionen werden einfach übergangen. Was ist mit dieser 
"Ogject"-Datei. Macht der Compiler dasd nicht von selber, wenn ich die 
.h einbinde?

Ich arbeite mit IAR.

Hier mal ein Beispiel:
1
// clock_module_initializations.h
2

3
#ifndef CLOCK_MODULE_INITIALIZATIONS_H
4
#define CLOCK_MODULE_INITIALIZATIONS_H
5

6

7

8
void configure_clock_module( void );
9

10
#endif // CLOCK_MODULE_INITIALIZATIONS_H
Und die dazugehörige .c Datei:
1
// clock_module_initializations.c
2

3
#include "clock_module_initializations.h"
4
#include "msp430x24x.h"
5
#include <stdint.h>
6

7

8

9
void configure_clock_module( void )
10
{
11
  // Initialization of clock source - Crystal 3.6864 MHz
12
  
13
  // BCSCTL1: BASIC CLOCK SYSTEM CONTROL REGISTER 1
14
  // XT2OFF:  XT2 oscillator (bit cleared: XT2 is now active)
15
  BCSCTL1 &= ~( XT2OFF | XTS );
16
  
17
  // BCSCTL3: BASIC CLOCK SYSTEM CONTROL REGISTER 3
18
  // XT2Sx:   XT2 range select (XT2S_0: 0-4 MHz)
19
  // XCAPx:   Oscillator capacitor selection (XCAP_1: ~6pF)
20
  BCSCTL3 = ( XT2S_0 | XCAP_1 );
21
  
22
  do
23
  {
24
    volatile uint16_t i = 0;
25
    IFG1 &= ~ OFIFG;              // Clear oscillator-fault-flag
26
    for (i = 0xFFFF; i > 0; i--)  // Time to get stable
27
    {}                            // Loop
28
  } while (IFG1 & OFIFG);         // Do, until no fault present
29
  
30
  // BCSCTL2: BASIC CLOCK SYSTEM CONTROL REGISTER 2
31
  // SELMx:   Select MCLK (SELM_2: XT2CLK)
32
  // SELS:    Select SMCLK (bit set: XT2CLK)
33
  // DIVM:    Divider MCLK (DIVM_1: /2 -> 3.6864MHz / 2 = 1.8432MHz)
34
  // DIVS:    Divider SMCLK (DIVS_1: /2 -> 3.6864MHz / 2 = 1.8432MHz)
35
  BCSCTL2 = ( SELM_2 | SELS | DIVM_1 | DIVS_1 );
36
}
Und dann sieht das ganze im Hauptprogramm so aus:
1
#include "msp430x24x.h"
2
#include "clock_module_initializations.h"
3

4
void main( void )
5
{
6
  // Stop watchdog timer to prevent time out reset
7
  WDTCTL = WDTPW + WDTHOLD;
8

9
  void configure_clock_module( void );
10
  
11
  _BIS_SR (GIE);                       // Global interrupts enabled
12

13
  while (1)
14
  {
15
    
16
  }

Aber "void configure_clock_module( void );" wird einfach übrgangen.

Was mache ich hier falsch?
Gast #2136878
Lesenswert?
• ▲
▼
Hallo,

mach doch einfach einen Funktionsaufruf! Das was bei Dir dasteht, ist 
ein Prototyp. Was mich allerdings wundert, warum meckert da der Compiler 
nicht? Machen "lokale" Prototypen Sinn?

Auf jeden Fall statt
1
void main( void )
2
{
3
  // Stop watchdog timer to prevent time out reset
4
  WDTCTL = WDTPW + WDTHOLD;
5

6
  void configure_clock_module( void );
7
  
8
  _BIS_SR (GIE);                       // Global interrupts enabled
9

10
  while (1)
11
  {
12
    
13
  }

das hier benutzen:
1
void main( void )
2
{
3
  // Stop watchdog timer to prevent time out reset
4
  WDTCTL = WDTPW + WDTHOLD;
5

6
 configure_clock_module();
7
  
8
  _BIS_SR (GIE);                       // Global interrupts enabled
9

10
  while (1)
11
  {
12
    
13
  }

Beste Grüße,
Alfred
Gast #2136899
Lesenswert?
• ▲
▼
OK, ich glaube jetzt geht es.

Ich habe bis jetzt immer nur auf den grünen "Download & Debug"-Knopf 
gedrückt. Jetzt muss ich augenscheinlich vorher noch "Compile" machen.

Dachte, das würde automatisch gemacht.

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.