📄 hal_types.h
字号:
/*******************************************************************************
Filename: hal_types.h
Description: HAL type definitions
*******************************************************************************/
#ifndef HAL_TYPES_H
#define HAL_TYPES_H
#ifdef __cplusplus
extern "C" {
#endif
/*******************************************************************************
* TYPEDEFS
*/
typedef signed char int8;
typedef unsigned char uint8;
typedef signed short int16;
typedef unsigned short uint16;
typedef signed long int32;
typedef unsigned long uint32;
typedef void (*ISR_FUNC_PTR)(void);
typedef void (*VFPTR)(void);
/*******************************************************************************
* Compiler abstraction
*/
/*****************************************************
* IAR MSP430
*/
#ifdef __IAR_SYSTEMS_ICC__
#define _PRAGMA(x) _Pragma(#x)
#if defined __ICC430__
#ifndef CODE
#define CODE
#endif
#ifndef XDATA
#define XDATA
#endif
#define FAR
#define NOP() asm("NOP")
#define HAL_ISR_FUNC_DECLARATION(f,v) \
_PRAGMA(vector=v##_VECTOR) __interrupt void f(void)
#define HAL_ISR_FUNC_PROTOTYPE(f,v) \
_PRAGMA(vector=v##_VECTOR) __interrupt void f(void)
#define HAL_ISR_FUNCTION(f,v) \
HAL_ISR_FUNC_PROTOTYPE(f,v); HAL_ISR_FUNC_DECLARATION(f,v)
/*****************************************************
* IAR 8051
*/
#elif defined __ICC8051__
#ifndef BSP_H
#define CODE __code
#define XDATA __xdata
#endif
#define FAR
#define NOP() asm("NOP")
#define HAL_MCU_LITTLE_ENDIAN() __LITTLE_ENDIAN__
#define HAL_ISR_FUNC_DECLARATION(f,v) \
_PRAGMA(vector=v) __near_func __interrupt void f(void)
#define HAL_ISR_FUNC_PROTOTYPE(f,v) \
_PRAGMA(vector=v) __near_func __interrupt void f(void)
#define HAL_ISR_FUNCTION(f,v) \
HAL_ISR_FUNC_PROTOTYPE(f,v); HAL_ISR_FUNC_DECLARATION(f,v)
#else
#error "Unsupported architecture"
#endif
/*****************************************************
* KEIL 8051
*/
#elif defined __KEIL__
#include <intrins.h>
#define BIG_ENDIAN
#define CODE code
#define XDATA xdata
#define FAR
#define NOP() _nop_()
#define HAL_ISR_FUNC_DECLARATION(f,v) \
void f(void) interrupt v
#define HAL_ISR_FUNC_PROTOTYPE(f,v) \
void f(void)
#define HAL_ISR_FUNCTION(f,v) \
HAL_ISR_FUNC_PROTOTYPE(f,v); HAL_ISR_FUNC_DECLARATION(f,v)
typedef unsigned short istate_t;
// Keil workaround
#define __code code
#define __xdata xdata
/*****************************************************
* WIN32
*/
#elif defined WIN32
#define CODE
#define XDATA
#include "windows.h"
#define FAR far
#pragma warning (disable :4761)
/*****************************************************
* Code Composer Essential
*/
#elif __TI_COMPILER_VERSION__
#define CODE
#define XDATA
#define FAR
#define NOP() _nop()
#define _PRAGMA(x) _Pragma(#x)
#define HAL_ISR_FUNC_DECLARATION(f,v) \
_PRAGMA(vector=v##_VECTOR) __interrupt void f(void)
#define HAL_ISR_FUNC_PROTOTYPE(f,v) \
_PRAGMA(vector=v##_VECTOR) __interrupt void f(void)
#define HAL_ISR_FUNCTION(f,v) HAL_ISR_FUNC_DECLARATION(f,v)
/*
* Control bits in the processor status register, SR.
*/
#define __SR_GIE (1<<3)
#define __SR_CPU_OFF (1<<4)
#define __SR_OSC_OFF (1<<5)
#define __SR_SCG0 (1<<6)
#define __SR_SCG1 (1<<7)
/*
* Functions for controlling the processor operation modes.
*/
#define __low_power_mode_0() (__bis_SR_register( __SR_GIE \
| __SR_CPU_OFF))
#define __low_power_mode_1() (__bis_SR_register( __SR_GIE \
| __SR_CPU_OFF \
| __SR_SCG0))
#define __low_power_mode_2() (__bis_SR_register( __SR_GIE \
| __SR_CPU_OFF \
| __SR_SCG1))
#define __low_power_mode_3() \
(_bis_SR_register( __SR_GIE \
| __SR_CPU_OFF \
| __SR_SCG0 \
| __SR_SCG1))
#define __low_power_mode_4() \
(_bis_SR_register( __SR_GIE \
| __SR_CPU_OFF \
| __SR_SCG0 \
| __SR_SCG1 \
| __SR_OSC_OFF))
#define __low_power_mode_off_on_exit() \
(_bic_SR_register_on_exit( __SR_CPU_OFF \
| __SR_SCG0 \
| __SR_SCG1 \
| __SR_OSC_OFF))
typedef unsigned short istate_t;
/*****************************************************
* Other compilers
*/
#else
#error "Unsupported compiler"
#endif
/*******************************************************************************
* Deprecated Types (included for backwards compatibility)
*/
#ifndef WIN32
typedef unsigned char BOOL;
#endif
// Data
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
// Unsigned numbers
typedef unsigned char UINT8;
typedef unsigned short UINT16;
#ifndef WIN32
typedef unsigned long UINT32;
#endif
// Signed numbers
typedef signed char INT8;
typedef signed short INT16;
#ifndef WIN32
typedef signed long INT32;
#endif
typedef union {
WORD w;
struct {
BYTE b0;
BYTE b1;
} b;
} EWORD;
typedef union {
DWORD dw;
struct {
BYTE b0;
BYTE b1;
BYTE b2;
BYTE b3;
} b;
} EDWORD;
#ifdef __cplusplus
}
#endif
/*********************************************************************************/
/*********************************************************************************/
#endif
/*------------------------------------------------------------------------------
0ooo
ooo0 ( )
( ) ) /
\ ( (_/
\_) Modify By:cuiqingwei [gary]
------------------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -