You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
175 lines
2.9 KiB
C
175 lines
2.9 KiB
C
4 weeks ago
|
/*
|
||
|
* DataType.h
|
||
|
*
|
||
|
* Author: Aleksey Gerasimenko
|
||
|
* gerasimenko.aleksey.n@gmail.com
|
||
|
*/
|
||
|
|
||
|
#include <math.h>
|
||
|
#include <stdint.h>
|
||
|
|
||
|
#ifndef SYSTEM_DATATYPE_H_
|
||
|
#define SYSTEM_DATATYPE_H_
|
||
|
|
||
|
|
||
|
|
||
|
typedef void (*pGPIO_FUNCTION)();
|
||
|
typedef void (*pGPIO_FUNCTION_UINT)(uint16_t& data);
|
||
|
|
||
|
|
||
|
|
||
|
struct Register16BitField
|
||
|
{
|
||
|
uint16_t b00: 1;
|
||
|
uint16_t b01: 1;
|
||
|
uint16_t b02: 1;
|
||
|
uint16_t b03: 1;
|
||
|
uint16_t b04: 1;
|
||
|
uint16_t b05: 1;
|
||
|
uint16_t b06: 1;
|
||
|
uint16_t b07: 1;
|
||
|
uint16_t b08: 1;
|
||
|
uint16_t b09: 1;
|
||
|
uint16_t b10: 1;
|
||
|
uint16_t b11: 1;
|
||
|
uint16_t b12: 1;
|
||
|
uint16_t b13: 1;
|
||
|
uint16_t b14: 1;
|
||
|
uint16_t b15: 1;
|
||
|
};//Register16BitField
|
||
|
|
||
|
struct Register16ByteField
|
||
|
{
|
||
|
uint16_t low :8;
|
||
|
uint16_t high :8;
|
||
|
};//Register16ByteField
|
||
|
|
||
|
struct Register16WordField
|
||
|
{
|
||
|
uint16_t wL :16;
|
||
|
};//Register16WordField
|
||
|
|
||
|
|
||
|
union Register16
|
||
|
{
|
||
|
uint16_t all;
|
||
|
Register16BitField bit;
|
||
|
Register16ByteField byte;
|
||
|
};//Register16
|
||
|
|
||
|
|
||
|
struct Register32BitField
|
||
|
{
|
||
|
uint16_t b00: 1;
|
||
|
uint16_t b01: 1;
|
||
|
uint16_t b02: 1;
|
||
|
uint16_t b03: 1;
|
||
|
uint16_t b04: 1;
|
||
|
uint16_t b05: 1;
|
||
|
uint16_t b06: 1;
|
||
|
uint16_t b07: 1;
|
||
|
uint16_t b08: 1;
|
||
|
uint16_t b09: 1;
|
||
|
uint16_t b10: 1;
|
||
|
uint16_t b11: 1;
|
||
|
uint16_t b12: 1;
|
||
|
uint16_t b13: 1;
|
||
|
uint16_t b14: 1;
|
||
|
uint16_t b15: 1;
|
||
|
uint16_t b16: 1;
|
||
|
uint16_t b17: 1;
|
||
|
uint16_t b18: 1;
|
||
|
uint16_t b19: 1;
|
||
|
uint16_t b20: 1;
|
||
|
uint16_t b21: 1;
|
||
|
uint16_t b22: 1;
|
||
|
uint16_t b23: 1;
|
||
|
uint16_t b24: 1;
|
||
|
uint16_t b25: 1;
|
||
|
uint16_t b26: 1;
|
||
|
uint16_t b27: 1;
|
||
|
uint16_t b28: 1;
|
||
|
uint16_t b29: 1;
|
||
|
uint16_t b30: 1;
|
||
|
uint16_t b31: 1;
|
||
|
};//Register32BitField
|
||
|
|
||
|
|
||
|
struct Register32ByteField
|
||
|
{
|
||
|
uint16_t bt0 :8;
|
||
|
uint16_t bt1 :8;
|
||
|
uint16_t bt2 :8;
|
||
|
uint16_t bt3 :8;
|
||
|
};//Register32ByteField
|
||
|
|
||
|
struct Register32WordField
|
||
|
{
|
||
|
uint16_t wL :16;
|
||
|
uint16_t wH :16;
|
||
|
};//Register32WordField
|
||
|
|
||
|
|
||
|
union UIntRegister32
|
||
|
{
|
||
|
uint32_t all;
|
||
|
Register32BitField bit;
|
||
|
Register32ByteField byte;
|
||
|
Register32WordField word;
|
||
|
};//UIntRegister32
|
||
|
|
||
|
|
||
|
|
||
|
struct BoolRegisterBitField
|
||
|
{
|
||
|
uint16_t b0 :1;
|
||
|
};//BoolRegisterBitField
|
||
|
|
||
|
union BoolRegister
|
||
|
{
|
||
|
uint16_t all;
|
||
|
BoolRegisterBitField boolbit;
|
||
|
BoolRegister():
|
||
|
all(0)
|
||
|
{}
|
||
|
};//BoolRegister
|
||
|
|
||
|
|
||
|
struct AnalogFaultRegister16BitField
|
||
|
{
|
||
|
uint16_t a0: 1;
|
||
|
uint16_t a1: 1;
|
||
|
uint16_t a2: 1;
|
||
|
};//AnalogFaultRegister16BitField
|
||
|
|
||
|
union AnalogFaultRegister
|
||
|
{
|
||
|
uint16_t all;
|
||
|
AnalogFaultRegister16BitField bit;
|
||
|
AnalogFaultRegister():
|
||
|
all(0)
|
||
|
{}
|
||
|
};//AnalogFaultRegister
|
||
|
|
||
|
|
||
|
struct HardFaultRegister16BitField
|
||
|
{
|
||
|
uint16_t h0: 1;
|
||
|
uint16_t h1: 1;
|
||
|
uint16_t h2: 1;
|
||
|
};//HardFaultRegister16BitField
|
||
|
|
||
|
union HardFaultRegister
|
||
|
{
|
||
|
uint16_t all;
|
||
|
HardFaultRegister16BitField bit;
|
||
|
HardFaultRegister():
|
||
|
all(0)
|
||
|
{}
|
||
|
};//HardFaultRegister
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#endif /* SYSTEM_DATATYPE_H_ */
|