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>© 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