poeh... where to start...
Ik vraag me na al die topics af of je nu weet wat je aan het doen bent, maar op één of andere manier bewonder ik wel je doorzettings vermogen.
Vandaar wederom mijn reactie 
Allereerst.
In C include je GEEN C files. (tenminste, tenzij je echt aparte dingen wilt, maar doorgaans niet)
Om je code wat op te splitsen maak je een nieuwe .c en .h file.
In je c file definieer en implementeer je je functies die je in een andere file (bijvoorbeeld main.c) wilt aanroepen.
Dit noem je dan globale functies.
Als je in je aparte c file functies hebt die enkel binnen die file aangeroepen (mogen) worden heb je het over static functions. Je definieerd ze dan met "static" ervoor.
Om de globale functies bruikbaar te maken in externe files, moet je de functie definitie ook in de include file (ook wel header file genoemd) definieren. Daar is een definitie met enkel naam, return type en argumenten genoeg. (dit noemen ze dan function prototypes)
in de c file die je hebt gemaakt moet je de bijbehorende include file includen en ook alle andere files, waarvan je functies of variabelen nodig hebt.
Daarnaast heeft je include file een zogenaamde "header guard" dit is de
c code:
#ifndef BLABLABLA_H
#define BLABLABLA_H
#endif
dit is ervoor om te zorgen dat alles wat je include, maar 1x geinclude wordt. Dit om problemen van redefinition en dergelijke te voorkomen bij meervoudig includen.
Zorg ervoor dat al je definities TUSSEN de #define en #endif staan.
Na de #endif komt doorgaans niks meer.
dus voorbeeldje van een paartje c en h files:
De include (h) file
c code:
#ifndef __BLABLA_H_
#define __BLABLA_H_
#include "stm32l1xx.h"
#ifdef __cplusplus
extern "C" {
#endif
void InitBlaBla(void);
void HandleBlaBla(void);
uint32_t GetBlaBlaThing(void);
void SetBlaBlaThing(uint32_t bbt);
#ifdef __cplusplus
}
#endif
#endif
en hier de c file inhoud
c code:
#include "blabla.h"
uint32_t blaBlaThing
void InitBlaBla(void) {
}
void HandleBlaBla(void) {
blaBlaThing++;
}
uint32_t GetBlaBlaThing(void) {
return blaBlaThing;
}
void SetBlaBlaThing(uint32_t bbt) {
blaBlaThing = bbt;
}
Nu wat betreft mij opvalt in jouw screenshots:
* je include een c file, NIET DOEN
* je hebt gewoon maar wat code in de c file gemikt. Executeerbare code moet netjes in een functie zitten
* je include "probeer.h" in de while(1) loop. dat doe je bovenaan in je source file als allereerst
* in je "probeer.h" niks meer na de #endif
* je zet PROBEER in hoofdletters terwijl de file toch echt lowercase is
dan lijkt het toevoegen van de include paden volgens mij wel ok, het ziet er bij mij iets anders uit maar ok. Ik zou wel even de drowdown op "all configurations" zetten, want anders include je het enkel voor de debug build en niet voor de release build.
ik heb in mijn voorbeeld voor mijn module de include en c file bij elkaar in een mapje staan. Ik vind persoonlijk een hoger gelegen INC map met daarin de include files heel iritant.
zo even genoeg tips. Succes