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.
CCS-COMM_BOARD/RUDRIVEFRAMEWORK/DataType.h

175 lines
2.9 KiB
C

/*
* 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_ */