Libs for using Nucleo STM32F411 periphery
RingBuffer Class Reference
#include <RingBuffer.h>
Public Member Functions | |
RingBuffer (const int size) | |
~RingBuffer () | |
bool | writeBuffer (uint32_t inputdata) |
bool | setBufferStatus (int bit) |
bool | resetBufferStatus (int bit) |
uint8_t | getBufferStatus () |
uint32_t | readBuffer () |
void | setBF_METHODE (void(*BUFFER_HANDLER)(void)) |
Protected Attributes | |
int | buffer_size |
Größe des Buffers. | |
uint32_t | read_pointer |
Lesezeiger der auf die nächste zulesenede Stelle zeigt. | |
uint32_t | write_pointer |
Schreibzeiger der auf die nächste zubeschreibene Stelle zeigt. | |
bool | bufferfull |
Buffer ist voll. | |
bool | bufferempty |
Buffer ist leer. | |
bool | extfct |
Freigabe zur Verwendung externer Funktionen. | |
void(* | BUFFER_HANDLER )(void) |
Externe Funktion bei fast vollem Buffer aufrufen. |
Detailed Description
Diese Klasse erstellt einen 32 Bit Ringbuffer mit einen vom Nutzer vorgegebenen Größenbereich. In dem Ringbuffer können entsprechend 32 Bit Daten für Messaufzeichnungen genutzt werden. Zudem gibt es 8 Bit in einem Statusregister die frei definiert werden können. Es gibt für jedes einzelne Bit des Statusregisters eine Setter und Getter Methode. Nachdem der Ringbuffer komplett beschrieben wurde, wird wieder der erste Wert überschrieben. Wenn der Abstand zwischen Lese- und Schreibezeiger zu gering wird, kann eine vom User definierte Funktion aufgerufen werden.
#include "mbed.h" #include "RingBuffer.h" int Event_Routine(){ .... } // Irgendeine Funktion die bei fast vollem Fifo aufgerufen wird bool write; uint8_t status; int main() { Ringbuffer adcbuffer(250); // Erstellen einer Instanz mit 250 Werten write = adcbuffer.writeBuffer(16658); // Schreibt einen Wert in den Buffer. Wenn Rückgabe write // true ist wurde dieser erfolgreich beschrieben. adcbuffer.setBF_METHODE(Event_Routine); // Bei fast vollem Fifo wird die Routine aufgerufen adcbuffer.setBufferStatus(4); // Setzt das 4. Bit des Statusregisters adcbuffer.resetBufferStatus(6); // Löscht das 6. Bit des Statusregisters status = adcbuffer.getBufferStatus(); // Liest das Statusregister aus while(1){ printf("Value: %i\r\n", adcbuffer.readBuffer()); // Ausgabe der geschriebenen Werte } }
Definition at line 44 of file RingBuffer.h.
Constructor & Destructor Documentation
RingBuffer | ( | const int | size ) |
Konstruktor zum Erstellen einer Instanz mit einer vom User festgelegten Größe
- Parameters:
-
size Größe Anzahl der maximal gespeicherten Werte im Buffer
Definition at line 8 of file RingBuffer.cpp.
~RingBuffer | ( | ) |
Destruktor entfernt den RingBuffer
Definition at line 55 of file RingBuffer.h.
Member Function Documentation
uint8_t getBufferStatus | ( | ) |
Liest den Status aus der aktuelle Zelle und gibt diesen zurück.
Definition at line 84 of file RingBuffer.cpp.
uint32_t readBuffer | ( | ) |
Liest Daten aus der aktuelle Zelle. Wenn die Werte nicht ausgelesen werden konnten, dann ist der Rückgabewert 0
Definition at line 52 of file RingBuffer.cpp.
bool resetBufferStatus | ( | int | bit ) |
ResSetzt ein Bit im Statusvektor des Buffers. Wenn der Rückgabewert True ist, würde der Wert übernommen
- Parameters:
-
bit Welches Bit der Zelle zurück gesetzt werden soll
Definition at line 98 of file RingBuffer.cpp.
void setBF_METHODE | ( | void(*)(void) | BUFFER_HANDLER ) |
Setzt eine weitere Routine die verwendet werden kann, wenn der Buffer fast voll ist. Um die Daten z.B. zu übernehmen
- Parameters:
-
BUFFER_HANDLER Adresse zur weiteren Routine
Definition at line 109 of file RingBuffer.cpp.
bool setBufferStatus | ( | int | bit ) |
Setzt ein Bit im Statusvektor des Buffers. Wenn der Rückgabewert True ist, würde der Wert übernommen
- Parameters:
-
bit Welches Bit der Zelle gesetzt werden soll
Definition at line 88 of file RingBuffer.cpp.
bool writeBuffer | ( | uint32_t | inputdata ) |
Schreibt Daten in die aktuelle Zelle. Wenn die Rückgabe true ist, dann wurde der Wert geschrieben. Wenn nicht, ist der Buffer voll.
- Parameters:
-
inputdata Daten 32 Bit Integer Daten für die aktuelle Zelle
Definition at line 23 of file RingBuffer.cpp.
Field Documentation
void(* BUFFER_HANDLER)(void) [protected] |
Externe Funktion bei fast vollem Buffer aufrufen.
Definition at line 103 of file RingBuffer.h.
int buffer_size [protected] |
Größe des Buffers.
Definition at line 91 of file RingBuffer.h.
bool bufferempty [protected] |
Buffer ist leer.
Definition at line 99 of file RingBuffer.h.
bool bufferfull [protected] |
Buffer ist voll.
Definition at line 97 of file RingBuffer.h.
bool extfct [protected] |
Freigabe zur Verwendung externer Funktionen.
Definition at line 101 of file RingBuffer.h.
uint32_t read_pointer [protected] |
Lesezeiger der auf die nächste zulesenede Stelle zeigt.
Definition at line 93 of file RingBuffer.h.
uint32_t write_pointer [protected] |
Schreibzeiger der auf die nächste zubeschreibene Stelle zeigt.
Definition at line 95 of file RingBuffer.h.
Generated on Wed Jul 13 2022 17:06:12 by 1.7.2