📄 class.h
字号:
#include <LPC213xDEF.H> //ARM菜鸟HotPower创建定义文件(最新为情人节修改版)
#pragma arm
extern "C" void __swi(8) Enable_IRQ(void);
extern "C" void __SWI_8 (void) {
int tmp;
__asm
{
MRS tmp, SPSR
BIC tmp, tmp, #0x80
MSR SPSR_c, tmp
}
}
#pragma arm
extern "C" void __swi(9) Disable_IRQ(void);
extern "C" void __SWI_9 (void) {
int tmp;
__asm
{
MRS tmp, SPSR
ORR tmp, tmp, #0x80
MSR SPSR_c, tmp
}
}
class SystemObj;//系统类
class LedObj;//系统类
class LcdObj;//系统显示菜单类
class RtcObj;//系统实时钟类
class UartObj;//系统串口类
class TwiObj; //系统通讯类
class IapObj; //系统类
class SystemObj {//系统类
public:
SystemObj(void);//SystemObj的构造函数
public:
void SystemInit(void);
void VicIntSetup(void);
void Timer0Init(void);
void LedInit(void);
void BeepInit(void);
void WdtInit(void);
public:
volatile unsigned int SystemRamTest;//RAM掉电测试变量
private:
};
class LedObj {//SSP类
public:
LedObj(void);//SSPObj的构造函数
public:
void LedInit(void);
public:
void LedDisplay(unsigned char);
private:
};
class LcdObj {//系统显示菜单类
public:
LcdObj(void);//LcdObj的构造函数
public:
void LcdInit(void);
void LcdSpiInit(void);
void LcdSend(char);
void LcdSendCommand(char);
void LcdSendData(char);
void SetLcdDisplayPos(unsigned char, unsigned char);
void LcdDisplayBuffer(void);//刷新LCD显示缓冲区
private:
void LcdClearBuffer(void);
public:
unsigned char LcdRow,LcdCol;
void LcdDisplay(const char *);
public:
unsigned char LcdTimeCount;
private:
unsigned char LcdRowWriteEnable[4];
unsigned char LcdBuffer[4][17];//4行8个汉字17个字符
};
class RtcObj{//实时种类
public:
RtcObj(void);//RtcObj的构造函数
unsigned int GetDow(unsigned int, unsigned int, unsigned int);
unsigned int GetDom(unsigned int, unsigned int);
private:
void RtcInit(void);
public:
unsigned int Year, Month, Dom, Dow;
unsigned int Hour, Min, Sec;
};
class UartObj {//系统串口类
public:
UartObj(void);
public:
void UartInit(void);
void putchar(unsigned char);
void putstr(const char []);
void puts(const char []);
void Exec(void);
void LoadDataBuff(void);
public:
volatile unsigned char Status;
volatile unsigned char RxBuffer[256], TxBuffer[256];
volatile unsigned char RxCount, TxCount;
volatile unsigned char RxdCount, TxdCount;
};
class TwiObj {//系统通讯类
public:
TwiObj(void);
private:
void TwiInit(void);
public:
void TWStart(void);
void TWREStart(void);
void TWStop(void);
void TWExit(void);
void Exec(void);
void WorkExec(void);
void TWByteWrite(unsigned int, unsigned int);
void TWByteRead(unsigned int, unsigned int);
public:
volatile bool Busy;
volatile unsigned int Status;
volatile unsigned int Count;
volatile unsigned char MainCount, SubCount;
volatile unsigned char SubAddr;
volatile unsigned char MainComm, SubComm;
volatile unsigned char TxBuffer[16], RxBuffer[16];//接收数据缓冲区
};
/*
typedef struct _LPCS_FLASHBUFF {
LPC_REG DATA[30 * 1024 / 4]; //0x00008000~0x0000FFFF
LPC_REG COUNT[ 2 * 1024 / 4];//0x00008000~0x0000FFFF
}LPCS_FLASHBUFF, *LPCPS_FLASHBUFF;
#define LPC_BASE_FLASHBUFF ((LPCPS_FLASHBUFF) 0x00008000)//定义硬件结构指针(硬件地址)
const LPCPS_FLASHBUFF FLASHIAP = LPC_BASE_FLASHBUFF;//定义全局结构指针变量FLASHIAP
*/
extern "C" void iap_execute (LPCS_IAPDATA &);
class IapObj {//系统类
public:
IapObj(void);
private:
void IapInit(void);
void IapWriteTest(void);
public:
LPCS_IAPDATA IAPDR;
bool IapExec(void);
public:
unsigned int GetSecNum(void *);
bool SelSector(void *, void *);
bool EraseSector(void *, void *);
bool ProgramPage(void *, void *, unsigned int);
};
__noinit__ SystemObj Sys_;//系统类
__noinit__ LcdObj Lcd_;//系统显示菜单类
__noinit__ LedObj Led_;//系统显示菜单类
__noinit__ RtcObj Rtc_;//系统实时钟类
__noinit__ UartObj Uart;//系统串口类
__noinit__ TwiObj Twi;//系统通讯类
__noinit__ IapObj Iap;
//__noinit__ KeyObj Key; //键盘类
__noinit__ volatile unsigned int SystemRamTest;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -