📄 cpu.h
字号:
/********************************************************************************************************
* 文 件 名 : Cpu.h
* 程 序 员 : (CaiJie) hnclcj@gmail.com
* (c) Copyright 2007-2007, CaiJie
* All Rights Reserved
* 创建日期 : 2007-07-28
* 说 明 : 1>
* 修改日期 :
* 修改版本 :
* 说 明 :
********************************************************************************************************/
#ifndef _CPU_H_
#define _CPU_H_
#ifdef CPU_GLOBALS
#define CPU_EXT
#else
#define CPU_EXT extern
#endif
/********************************************************************************************************
* MCU相关特性定义
********************************************************************************************************/
#define MCU_Fosc 16000000ul //
#define CPU_CLOCK_HZ MCU_Fosc // 16000000Hz
#define OS_TICKS_PER_SEC 100L // 处理节拍 为100Hz
/********************************************************************************************************
* 数据类型
********************************************************************************************************/
typedef unsigned char BOOL; //
typedef signed char INT8S; //
typedef unsigned char INT8U; //
typedef signed int INT16S; // 有符号基本整型
typedef unsigned int INT16U; // 无符号基本整型
typedef signed long INT32S; // 有符号长整型
typedef unsigned long INT32U; // 无符号长整型
typedef float FP32; //
typedef double FP64; //
typedef unsigned char bit; //
typedef unsigned char uchar; //
typedef unsigned int uint; //
typedef unsigned long ulong; //
typedef float fp32; //
typedef double fp64; //
typedef void (*FuncPtr)(void); // 不带参数 不带返回的 函数指针类型
/********************************************************************************************************
* 常量
********************************************************************************************************/
#ifndef FLASH
#define FLASH __ATTR_PROGMEM__
#endif
#ifndef EEPROM
#define EEPROM __attribute__((section(".eeprom")))
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
#ifndef NULL
#define NULL ((void *) 0L)
#endif
#ifndef HIGH
#define HIGH 1
#endif
#ifndef LOW
#define LOW 0
#endif
/********************************************************************************************************
* 临界宏定义
********************************************************************************************************/
#define OS_CRITICAL_SEC 1 //
#if OS_CRITICAL_SEC == 0
CPU_EXT INT8U volatile OsEnterSum;
#define OS_ENTER_CRITICAL() asm("cli");OsEnterSum++ // 进入临界
#define OS_EXIT_CRITICAL() if(--OsEnterSum==0) asm("sei"); // 退出临界
#elif OS_CRITICAL_SEC == 1
#define OS_ENTER_CRITICAL() cli()
#define OS_EXIT_CRITICAL() sei()
#elif OS_CRITICAL_SEC == 2
#define OS_ENTER_CRITICAL()
#define OS_EXIT_CRITICAL()
#endif
/********************************************************************************************************
* 位操作宏定义
********************************************************************************************************/
#define BIT(x) (1 << (x)) // 1左移x位
#define GETBIT(a, b) (((a)>>(b))&1) // 得到指定位的信息
#define SETBIT(a, b) ((a) |= BIT(b)) // 置bit位,
#define CLRBIT(a, b) ((a) &= ~BIT(b)) // 清bit位,
#define SETMASK(a, b) ((a) |= (b)) // 同时设置 SETBIT(COM_6_PORT,(BIT(1)+BIT(2)))
#define CLRMASK(a, b) ((a) &= ~(b)) // 同时清除 CLRBIT(COM_6_PORT,(BIT(1)+BIT(2)))
#define BITHIGH(a, b) (a & BIT(b)) // ((BOOL)(set & BIT(bit)))//bit位为高返回真
#define BITLOW(a, b) (!(a & BIT(b))) // (!((BOOL)(set & BIT(bit))))//bit位为低返回真
#define MASKHIGH(a, b) ((BOOL)(a&b)) // 多个位为高返回真
#define MASKLOW(a, b) (!((BOOL)(a&b))) // 多个位为低返回真
#define BITRANGE(x,y) (0xFFFFFFFF >> (x) << (x) << (31-(y)) >> (31-(y)))
#define INVERTMASK(a, b) (a ^= b) // 多个位取反
#define INVERTBIT(a, b) (a ^= BIT(b)) // bit位取反
#define MASKBIT(a,b,c) ((a)&(~(b)))|(c) // 先清set多个位再置多个位 MASKBIT(TWCR,BIT(7)|BIT(6)|BIT(5)|BIT(4),BIT(TWINT)|BIT(TWSTA));
#define SETBITFLAG(a, bit, flag) if(flag) SETBIT(a,bit); else CLRBIT(a,bit);
//#define COPYBIT(a,bit0,set1,bit1) asm("nop;")
#define _nop_() asm volatile("nop")// 空函数 对应NOP指令
#endif
/********************************************************************************************************
* End of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -