ConsoleApplication1.c


1
// ConsoleApplication1.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
2
//
3
4
#include "inttypes.h"
5
6
typedef void(*fnPtr)(void);
7
8
volatile
9
struct
10
{
11
  uint8_t        u8CntFct;
12
//  void(*apfct[8]) (void);
13
  fnPtr      apfct[8];
14
  //---------------------------------------------------------------------------------------------------------------------------
15
  uint32_t       u32TickMs;
16
  uint32_t       u32TickSec;
17
  //-- Statistik ----------------------------------------------------------------------------------------------------------------------------------
18
}
19
scEsc_SysTick;
20
21
void
22
stm32_time_addfct_1ms(fnPtr pfct)
23
{
24
  //-- Eingangsvariablen prüfen -------------------------------------------------------------------------------------------------------------------
25
  uint8_t u8Cnt = scEsc_SysTick.u8CntFct;
26
  uint8_t u8Max = (uint8_t)(sizeof(scEsc_SysTick.apfct)
27
    / sizeof(scEsc_SysTick.apfct[0]));
28
  if (u8Cnt >= u8Max)  return;
29
30
  //-- abspeichern --------------------------------------------------------------------------------------------------------------------------------
31
  scEsc_SysTick.apfct[u8Cnt] = pfct;
32
  scEsc_SysTick.u8CntFct++;
33
34
  //-----------------------------------------------------------------------------------------------------------------------------------------------
35
  return;
36
}
37
38
39
void myFunc(void)
40
{
41
  static int x;
42
  x++;
43
}
44
45
int main()
46
{
47
  stm32_time_addfct_1ms(&myFunc);
48
49
  //-- UserFunktion aufrufen ----------------------------------------------------------------------------------------------------------------------
50
  uint8_t u8Idx = 0;
51
  //uint8_t u8Max = (uint8_t)(sizeof(scEsc_SysTick.apfct) / sizeof(scEsc_SysTick.apfct[0]));
52
  uint8_t u8Max = scEsc_SysTick.u8CntFct;
53
54
  while (u8Idx < u8Max)
55
  {
56
    fnPtr pfct = scEsc_SysTick.apfct[u8Idx++];
57
    if (pfct != 0)
58
    {
59
      (*pfct) ();
60
    }
61
  }
62
63
    return 0;
64
}