/** ************************************* Copyright ****************************** * (C) Copyright 2019,TuYW,FMSH,China. * All Rights Reserved * By(Shanghai Fudan MicroeleCardTyperonics Group Company Limited) * https://www.fmsh.com * * FileName : function.h * Version : v1.0 * Author : TuYW * Date : 2019-03-19 * Description: *******************************************************************************/ #ifndef __FUNCTION_H_ #define __FUNCTION_H_ #include #include #include #include #include //#include "stdint.h" /* Includes ------------------------------------------------------------------*/ // #include "fm15l0xx.h" //#include "core_cm3.h" //#include "sys.h" //#if APP_NO_IAP == 1 // #define APP_ADDR 1 //#endif /* Exported types ------------------------------------------------------------*/ #define REG32( addr ) (*( ( volatile unsigned long *) (addr) ) ) //#define assert_param(expr) ((void)0) typedef unsigned char BOOLEAN; typedef unsigned char INT8U; /* Unsigned 8 bit quantity */ typedef signed char INT8S; /* Signed 8 bit quantity */ typedef unsigned short INT16U; /* Unsigned 16 bit quantity */ typedef signed short INT16S; /* Signed 16 bit quantity */ typedef unsigned int INT32U; /* Unsigned 32 bit quantity */ typedef signed int INT32S; /* Signed 32 bit quantity */ typedef float FP32; /* Single precision floating point */ typedef double FP64; /* Double precision floating point */ /********************************************************************************************************* ͨ�ú궨�� *********************************************************************************************************/ #define PROGRAM_IAP_BASE FLASH_IAP_ADDR #define PROGRAM_IAP_LENGTH 0X6000 #define PROGRAM_APP_BASE FLASH_APP1_ADDR #define PROGRAM_APP_LENGTH 0X30000 #ifndef HIGH #define HIGH 1 #endif #ifndef LOW #define LOW 0 #endif #ifndef TRUE #define TRUE 1 #endif //TRUE #ifndef FALSE #define FALSE 0 #endif //FALSE #ifndef ON #define ON 1 #endif //ON #ifndef OFF #define OFF 0 #endif //OFF #ifndef NULL #define NULL ( (void *) 0) //��ַΪ0��ָ��,void*���͵�ָ�����Ĭ��ת�����κ����͵�ָ�롣������ǵĿ�ָ��Ͷ�������� #endif //��ʼ����������,������������ //#define ClrLongBuf(buf) memset(buf, 0x00, sizeof(buf)); /** The upper 8 bits of a 32 bit value */ //lint -emacro(572,MSB) // Suppress warning 572 "Excessive shift value" #define MSB_32( a ) ( ( (a) & 0xFF000000) >> 24) /** The lower 8 bits (of a 32 bit value) */ #define LSB_32( a ) ( (a) & 0x000000FF) /** The upper 8 bits of a 16 bit value */ //lint -emacro(572,MSB_16) // Suppress warning 572 "Excessive shift value" #define MSB_16( a ) ( ( (a) & 0xFF00) >> 8) /** The lower 8 bits (of a 16 bit value) */ #define LSB_16( a ) ( (a) & 0x00FF) ///** Leaves the minimum of the two 32-bit arguments */ ///*lint -emacro(506, MIN) */ /* Suppress "Constant value Boolean */ //#define MIN( a, b ) ( (a) < (b) ? (a) : (b) ) ///** Leaves the maximum of the two 32-bit arguments */ ///*lint -emacro(506, MAX) */ /* Suppress "Constant value Boolean */ //#define MAX( a, b ) ( (a) < (b) ? (b) : (a) ) /** Concatenates two parameters. Useful as a second level of indirection, * when a parameter can be macro itself. */ #define CONCAT_2( p1, p2 ) p1 ## p2 /** Concatenates three parameters. Useful as a second level of indirection, * when a parameter can be macro itself. */ #define CONCAT_3( p1, p2, p3 ) p1 ## p2 ## p3 /**@brief Set a bit in the uint32 word. * * @param[in] W Word whose bit is being set. * @param[in] B Bit number in the word to be set. */ #ifndef SET_BIT #define SET_BIT( W, B ) ( (W) |= (uint32_t) (1U << (B) ) ) #endif /**@brief Clears a bit in the uint32 word. * * @param[in] W Word whose bit is to be cleared. * @param[in] B Bit number in the word to be cleared. */ #ifndef SET_BIT #define CLR_BIT( W, B ) ( (W) &= (~( (uint32_t) 1 << (B) ) ) ) #endif //typedef unsigned char BOOLEAN; typedef unsigned char UINT8, U8, BYTE, u8, uint8_t; typedef unsigned short UINT16, U16, u16, uint16_t; typedef unsigned int UINT32, U32, DWORD, u32, uint32_t; //typedef int32_t s32; //typedef int16_t s16; //typedef int8_t s8; //typedef const int32_t sc32; /*!< Read Only */ //typedef const int16_t sc16; /*!< Read Only */ //typedef const int8_t sc8; /*!< Read Only */ //typedef __IO int32_t vs32; //typedef __IO int16_t vs16; //typedef __IO int8_t vs8; //typedef __I int32_t vsc32; /*!< Read Only */ //typedef __I int16_t vsc16; /*!< Read Only */ //typedef __I int8_t vsc8; /*!< Read Only */ //typedef uint32_t u32; //typedef uint16_t u16; //typedef uint8_t u8; //typedef const uint32_t uc32; /*!< Read Only */ //typedef const uint16_t uc16; /*!< Read Only */ //typedef const uint8_t uc8; /*!< Read Only */ //typedef __IO uint32_t vu32; //typedef __IO uint16_t vu16; //typedef __IO uint8_t vu8; //typedef __I uint32_t vuc32; /*!< Read Only */ //typedef __I uint16_t vuc16; /*!< Read Only */ //typedef __I uint8_t vuc8; /*!< Read Only */ typedef void (*pFunction)( void ); void StrToHex( BYTE *pbDest, BYTE *pbSrc, int nLen ); void HexToStr( BYTE *pbDest, BYTE *pbSrc, int nLen ); #endif