📄 class.cpp
字号:
#include "class.h"
class SystemObj;
SystemObj::SystemObj (void)
{
Init ();
}
//inline
void SystemObj::Init(void)
{
/*初始化系统*/
InitSysCtrl();
/*关中断*/
DINT;
IER = 0x0000;
IFR = 0x0000;
/*初始化PIE*/
InitPieCtrl();
/*初始化PIE中断矢量表*/
InitPieVectTable();
/*初始化外设*/
InitPeripherals();//DSP281x_InitPeripherals.c内的InitEv()没干活
InitEv();
InitGpio();
::InitXIntrupt();//DSP281x_XIntrupt.c内的InitXIntrupt()没干活
InitXIntrupt();
if (RamTest != 0x55aa)
{
RamTest = 0x55aa;
}
LedKeyRegs = 0;
InitWatchdog();
InitBeep();
InitSpi();
}
void SystemObj::InitEv(void)
{
EALLOW;
/*初始化EV*/
EvaRegs.EVAIMRA.all = 0;
EvaRegs.EVAIMRB.all = 0;
EvaRegs.EVAIMRC.all = 0;
EvbRegs.EVBIMRA.all = 0;
EvbRegs.EVBIMRB.all = 0;
EvbRegs.EVBIMRC.all = 0;
EDIS;
}
void SystemObj::InitXIntrupt(void)
{
EALLOW;
XIntruptRegs.XINT1CR.bit.ENABLE = 1;
XIntruptRegs.XINT1CR.bit.POLARITY =0;
XIntruptRegs.XINT2CR.bit.ENABLE = 0;
XIntruptRegs.XNMICR.bit.ENABLE = 0;
EDIS;
EALLOW;
PieVectTable.XINT1 = &ISRExtInt1;
EDIS;
/*开中断*/
IER |= M_INT1; //外部中断1所的的PIE分组
PieCtrlRegs.PIEIER1.bit.INTx4 = 1; ///外部中断1所在PIE分组1中的第4位
}
void SystemObj::InitWatchdog(void)
{
EALLOW;
// SysCtrlRegs.SCSR = BIT1;
SysCtrlRegs.SCSR = 0x0004;
SysCtrlRegs.WDKEY = 0x0055;
SysCtrlRegs.WDKEY = 0x00AA;
// SysCtrlRegs.WDCR = 0x0028;
SysCtrlRegs.WDCR = 0x002F;
EDIS;
}
void SystemObj::InitBeep(void)
{
EALLOW;
GpioMuxRegs.GPDMUX.bit.T3CTRIP_PDPB_GPIOD5 = 0;//蜂鸣器控制管脚,D5脚
GpioMuxRegs.GPDDIR.bit.GPIOD5 = 1; //D5脚配置为输出
EDIS;
}
void SystemObj::BeepOn(void)
{
GpioDataRegs.GPDSET.bit.GPIOD5 = 1;
}
void SystemObj::BeepOff(void)
{
GpioDataRegs.GPDCLEAR.bit.GPIOD5 = 1;
}
void SystemObj::BeepToggle(void)
{
GpioDataRegs.GPDTOGGLE.bit.GPIOD5 = 1;
}
void SystemObj::InitSpi(void)
{
EALLOW;
GpioMuxRegs.GPFMUX.all |= 0x000F; // Select GPIOs to be SPI pins
// Port F MUX - x000 0000 0000 1111
EDIS;
// Initialize SPI FIFO registers
SpiaRegs.SPIFFTX.all=0xE040;
SpiaRegs.SPIFFRX.all=0x204f;
SpiaRegs.SPIFFCT.all=0x0;
SpiaRegs.SPICCR.all =0x0008; // Reset on, rising edge, 8-bit char bits
SpiaRegs.SPICTL.all =0x0006; // Enable master mode, normal phase,
// enable talk, and SPI int disabled.
SpiaRegs.SPIBRR =0x007F;
SpiaRegs.SPICCR.all =0x009F; // Relinquish SPI from Reset
SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission
//01 10
SpiaRegs.SPICCR.bit.CLKPOLARITY = 1;
SpiaRegs.SPICTL.bit.CLK_PHASE = 0;
SpiRclkRegs = 0;
SpiRclkRegs = 1;
System.SpiReadWrite(0xff);
SpiRclkRegs = 0;
SpiRclkRegs = 1;
}
unsigned char SystemObj::SpiReadWrite(unsigned char cData)
{
SpiaRegs.SPITXBUF = cData;
// Wait until data is received
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1)
{
// KickDog();
}
// Check against sent data
return SpiaRegs.SPIRXBUF;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -