1 ////////////////////////////////////////////////////////////////////////////////
2 /// @file     types.h
3 /// @author   AE TEAM
4 /// @brief    THIS FILE PROVIDES ALL THE TYPE FIRMWARE FUNCTIONS.
5 ////////////////////////////////////////////////////////////////////////////////
6 /// @attention
7 ///
8 /// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE
9 /// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE
10 /// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR
11 /// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH
12 /// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN
13 /// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS.
14 ///
15 /// <H2><CENTER>&COPY; COPYRIGHT MINDMOTION </CENTER></H2>
16 ////////////////////////////////////////////////////////////////////////////////
17 
18 // Define to prevent recursive inclusion
19 #ifndef __TYPES_H
20 #define __TYPES_H
21 
22 // Files includes
23 #include <stdint.h>
24 #include <stdbool.h>
25 
26 
27 
28 #ifdef __cplusplus
29 #define     __I     volatile                        ///< Defines 'read only' permissions
30 #else
31 #define     __I     volatile const                  ///< Defines 'read only' permissions
32 #endif
33 #define     __O     volatile                        ///< Defines 'write only' permissions
34 #define     __IO    volatile                        ///< Defines 'read / write' permissions
35 
36 typedef long long    s64;                           ///< used for signed 64bit
37 
38 typedef signed int   s32;
39 typedef signed short s16;
40 typedef signed char  s8;
41 
42 typedef signed int  const  sc32;                    ///< Read Only
43 typedef signed short const sc16;                    ///< Read Only
44 typedef signed char  const sc8;                     ///< Read Only
45 
46 typedef volatile signed int   vs32;
47 typedef volatile signed short vs16;
48 typedef volatile signed char  vs8;
49 
50 typedef volatile signed int  const  vsc32;          ///< Read Only
51 typedef volatile signed short const vsc16;          ///< Read Only
52 typedef volatile signed char  const vsc8;           ///< Read Only
53 
54 typedef unsigned int   u32;
55 typedef unsigned short u16;
56 typedef unsigned char  u8;
57 
58 typedef unsigned int  const  uc32;                  ///< Read Only
59 typedef unsigned short const uc16;                  ///< Read Only
60 typedef unsigned char  const uc8;                   ///< Read Only
61 
62 typedef volatile unsigned int   vu32;
63 typedef volatile unsigned short vu16;
64 typedef volatile unsigned char  vu8;
65 
66 typedef volatile unsigned int  const  vuc32;        ///< Read Only
67 typedef volatile unsigned short const vuc16;        ///< Read Only
68 typedef volatile unsigned char  const vuc8;         ///< Read Only
69 typedef bool    BOOL;
70 #ifndef NULL
71 #define NULL ((void *)0)
72 #endif
73 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;
74 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
75 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;
76 
77 
78 #define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))
79 
80 #define U8_MAX     ((u8)255)
81 #define S8_MAX     ((s8)127)
82 #define S8_MIN     ((s8)-128)
83 #define U16_MAX    ((u16)65535u)
84 #define S16_MAX    ((s16)32767)
85 #define S16_MIN    ((s16)-32768)
86 #define U32_MAX    ((u32)4294967295uL)
87 #define S32_MAX    ((s32)2147483647)
88 #define S32_MIN    ((s32)-2147483648uL)
89 
90 #define MAX(a,b)((a)>(b)?(a):(b))
91 #define MIN(a,b)((a)<(b)?(a):(b))
92 
93 #define SET_BIT(reg, bit)     ((reg) |= (bit))
94 #define CLEAR_BIT(reg, bit)   ((reg) &= ~(bit))
95 #define READ_BIT(reg, bit)    ((reg) & (bit))
96 #define CLEAR_REG(reg)        ((reg) = (0x0))
97 #define WRITE_REG(reg, value)   ((reg) = (value))
98 #define READ_REG(reg)         ((reg))
99 #define MODIFY_REG(reg, CLEARMASK, SETMASK)  WRITE_REG((reg), (((READ_REG(reg)) & (~(CLEARMASK))) | (SETMASK)))
100 #define POSITION_VAL(value)     (__CLZ(__RBIT(value)))
101 
102 #define LEFT_SHIFT_BIT(x)   (1 << x)
103 
104 
105 #endif
106