⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpu.h

📁 这是一个车用电机调速器的AVR单片机的整套C语言的源代码
💻 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 + -