DSP2812相关代码和程序.docx
- 文档编号:24313340
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:118
- 大小:31.83KB
DSP2812相关代码和程序.docx
《DSP2812相关代码和程序.docx》由会员分享,可在线阅读,更多相关《DSP2812相关代码和程序.docx(118页珍藏版)》请在冰豆网上搜索。
DSP2812相关代码和程序
/******************************************************************/
/*Copyright(C),2008-2009,力天电子,LiTianTech.Co.Ltd.*/
/*ModuleName:
XNMI*/
/*FileName:
main.c*/
/*Author:
侯长波*/
/*CreateDate:
2009/12/27*/
/*Version:
2.0*/
/*Function:
*/
/*Description:
*/
/*Support:
www.LT*/
/******************************************************************/
/*****************头文件********************/
#include"DSP281x_Device.h"
#include"System.h"
/****************端口宏定义*****************/
#defineS1GpioDataRegs.GPEDAT.bit.GPIOE2
#defineLED1_DIRGpioMuxRegs.GPBDIR.bit.GPIOB0
#defineLED1_TOGGLEGpioDataRegs.GPBTOGGLE.bit.GPIOB0
#defineLED1_DATGpioDataRegs.GPBDAT.bit.GPIOB0
/****************常量宏定义*****************/
/***************全局变量定义****************/
/****************函数声明*******************/
voidManage_S1(void);//按键1处理程序
voidInit_XNMI(void);
interruptvoidKEY(void);
/*------------------------------------------*/
/*形式参数:
void*/
/*返回值:
void*/
/*函数描述:
主函数*/
/*------------------------------------------*/
voidmain(void)
{
InitSysCtrl();//系统初始化子程序
Init_XNMI();
LED1_DAT=1;//发光二极管对应引脚初始化
EALLOW;
LED1_DIR=1;//发光二极管对应引脚输出
EDIS;
while
(1);
}
/*------------------------------------------*/
/*形式参数:
void*/
/*返回值:
void*/
/*函数描述:
按键S1的处理程序*/
/*------------------------------------------*/
voidManage_S1(void)
{
LED1_TOGGLE=1;//取反
}
/*------------------------------------------*/
/*形式参数:
void*/
/*返回值:
void*/
/*函数描述:
XINT13中断设置*/
/*------------------------------------------*/
voidInit_XNMI(void)
{
DINT;//关闭总中断
EALLOW;
GpioMuxRegs.GPEMUX.bit.XNMI_XINT13_GPIOE2=1;//引脚配置成XNMI
XIntruptRegs.XNMICR.bit.POLARITY=0;//下降沿产生中断
XIntruptRegs.XNMICR.bit.SELECT=0;//CPU_Timer1连接到XINT13
XIntruptRegs.XNMICR.bit.ENABLE=1;//使能非屏蔽中断NMI
PieVectTable.XNMI=&KEY;//中断服务程序入口地址放入中断向量表
EDIS;
EINT;
}
/*------------------------------------------*/
/*形式参数:
void*/
/*返回值:
void*/
/*函数描述:
XNMI中断处理函数*/
/*------------------------------------------*/
interruptvoidKEY(void)
{
unsignedinti;
DINT;//关闭总中断
for(i=0;i<2000;i++);//键盘消抖动
if(S1==0)
Manage_S1();
while(S1==0);//等待按键释放
EINT;//开总中断
}
/******************************************************************/
/*Copyright(C),2008-2009,力天电子,LiTianTech.Co.Ltd.*/
/*ModuleName:
system*/
/*FileName:
DSP281x_SysCtrl.c*/
/*Author:
侯长波*/
/*CreateDate:
2009/12/1*/
/*Version:
2.0*/
/*Function:
初始化系统,包括看门狗、系统时钟、外设时钟*/
/*中断积存器、中断向量表*/
/*Description:
*/
/*Support:
www.LT*/
/******************************************************************/
#include"DSP281x_Device.h"
#include"System.h"
#pragmaCODE_SECTION(InitFlash,"ramfuncs");
/*------------------------------------------*/
/*形式参数:
void*/
/*返回值:
void*/
/*函数描述:
初始化系统*/
/*------------------------------------------*/
voidInitSysCtrl(void)
{
DisableDog();//禁止看门狗
InitPll(0x2);//设置系统时钟=XCLKIN*2/2
InitPeripheralClocks();//设置外设时钟
DINT;//关闭总中断
IER=0x0000;//关闭外设中断
IFR=0x0000;//清中断标志
InitPieCtrl();//初始化PIE控制寄存器
InitPieVectTable();//使能PIE向量表
}
/*------------------------------------------*/
/*形式参数:
void*/
/*返回值:
void*/
/*函数描述:
禁止看门狗*/
/*------------------------------------------*/
voidDisableDog(void)
{
EALLOW;
SysCtrlRegs.WDCR=0x0068;
EDIS;
}
/*------------------------------------------*/
/*形式参数:
void*/
/*返回值:
void*/
/*函数描述:
喂看门狗*/
/*------------------------------------------*/
voidKickDog(void)
{
EALLOW;
SysCtrlRegs.WDKEY=0x0055;
SysCtrlRegs.WDKEY=0x00AA;
EDIS;
}
/*------------------------------------------*/
/*形式参数:
void*/
/*返回值:
void*/
/*函数描述:
设置锁相环倍频系数*/
/*------------------------------------------*/
voidInitPll(Uint16val)
{
volatileUint16iVol;
if(SysCtrlRegs.PLLCR.bit.DIV!
=val)
{
EALLOW;
SysCtrlRegs.PLLCR.bit.DIV=val;
EDIS;
for(iVol=0;iVol<4096;iVol++);
}
}
/*------------------------------------------*/
/*形式参数:
void*/
/*返回值:
void*/
/*函数描述:
初始化外设时钟*/
/*------------------------------------------*/
voidInitPeripheralClocks(void)
{
EALLOW;
SysCtrlRegs.HISPCP.all=0x0001;//设置高速时钟2分频
SysCtrlRegs.LOSPCP.all=0x0002;//设置低速时钟4分频
//使能外围模块时钟
SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;
SysCtrlRegs.PCLKCR.bit.EVBENCLK=1;
SysCtrlRegs.PCLKCR.bit.SCIAENCLK=1;
SysCtrlRegs.PCLKCR.bit.SCIBENCLK=1;
SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=1;
SysCtrlRegs.PCLKCR.bit.SPIENCLK=1;
SysCtrlRegs.PCLKCR.bit.ECANENCLK=1;
SysCtrlRegs.PCLKCR.bit.ADCENCLK=1;
EDIS;
}
/*------------------------------------------*/
/*形式参数:
void*/
/*返回值:
void*/
/*函数描述:
初始化Flash*/
/*------------------------------------------*/
voidInitFlash(void)
{
EALLOW;
FlashRegs.FPWR.bit.PWR=3;//设置Flash为正常工作状态
FlashRegs.FBANKWAIT.bit.RANDWAIT=5;//设置随机存取等待时间
FlashRegs.FBANKWAIT.bit.PAGEWAIT=5;//设置页面存取等待时间
FlashRegs.FSTDBYWAIT.bit.STDBYWAIT=0x01FF;//设置从睡眠到等待的转换时间
FlashRegs.FACTIVEWAIT.bit.ACTIVEWAIT=0x01FF;//设置从等待到激活的转换时间
FlashRegs.FOPT.bit.ENPIPE=1;//使能流水线模式
EDIS;
asm("RPT#7||NOP");//软件延时,等待流水线刷新
}
/*------------------------------------------*/
/*形式参数:
void*/
/*返回值:
状态值*/
/*函数描述:
unlockstheCSM*/
/*------------------------------------------*/
#defineSTATUS_FAIL0
#defineSTATUS_SUCCESS1
Uint16CsmUnlock()
{
volatileUint16temp;
//写入密钥,应将0xFFFF替换成密钥值
EALLOW;
CsmRegs.KEY0=0xFFFF;
CsmRegs.KEY1=0xFFFF;
CsmRegs.KEY2=0xFFFF;
CsmRegs.KEY3=0xFFFF;
CsmRegs.KEY4=0xFFFF;
CsmRegs.KEY5=0xFFFF;
CsmRegs.KEY6=0xFFFF;
CsmRegs.KEY7=0xFFFF;
EDIS;
///执行空读
temp=CsmPwl.PSWD0;
temp=CsmPwl.PSWD1;
temp=CsmPwl.PSWD2;
temp=CsmPwl.PSWD3;
temp=CsmPwl.PSWD4;
temp=CsmPwl.PSWD5;
temp=CsmPwl.PSWD6;
temp=CsmPwl.PSWD7;
if(CsmRegs.CSMSCR.bit.SECURE==0)
returnSTATUS_SUCCESS;
else
returnSTATUS_FAIL;
}
/******************************************************************/
/*Copyright(C),2008-2009,力天电子,LiTianTech.Co.Ltd.*/
/*ModuleName:
system*/
/*FileName:
DSP281x_PieCtrl.c*/
/*Author:
侯长波*/
/*CreateDate:
2009/12/1*/
/*Version:
2.0*/
/*Function:
初始化PIE控制寄存器*/
/*Description:
*/
/*Support:
www.LT*/
/******************************************************************/
#include"DSP281x_Device.h"
/*------------------------------------------*/
/*形式参数:
void*/
/*返回值:
void*/
/*函数描述:
初始化PIE控制寄存器*/
/*------------------------------------------*/
voidInitPieCtrl(void)
{
DINT;//禁止CPU级中断
PieCtrlRegs.PIECRTL.bit.ENPIE=0;//屏蔽PIE中断向量表
//清除所有PIEIER寄存器
PieCtrlRegs.PIEIER1.all=0;
PieCtrlRegs.PIEIER2.all=0;
PieCtrlRegs.PIEIER3.all=0;
PieCtrlRegs.PIEIER4.all=0;
PieCtrlRegs.PIEIER5.all=0;
PieCtrlRegs.PIEIER6.all=0;
PieCtrlRegs.PIEIER7.all=0;
PieCtrlRegs.PIEIER8.all=0;
PieCtrlRegs.PIEIER9.all=0;
PieCtrlRegs.PIEIER10.all=0;
PieCtrlRegs.PIEIER11.all=0;
PieCtrlRegs.PIEIER12.all=0;
//清除所有PIEIFR寄存器
PieCtrlRegs.PIEIFR1.all=0;
PieCtrlRegs.PIEIFR2.all=0;
PieCtrlRegs.PIEIFR3.all=0;
PieCtrlRegs.PIEIFR4.all=0;
PieCtrlRegs.PIEIFR5.all=0;
PieCtrlRegs.PIEIFR6.all=0;
PieCtrlRegs.PIEIFR7.all=0;
PieCtrlRegs.PIEIFR8.all=0;
PieCtrlRegs.PIEIFR9.all=0;
PieCtrlRegs.PIEIFR10.all=0;
PieCtrlRegs.PIEIFR11.all=0;
PieCtrlRegs.PIEIFR12.all=0;
}
/*------------------------------------------*/
/*形式参数:
void*/
/*返回值:
void*/
/*函数描述:
使能所有中断*/
/*------------------------------------------*/
voidEnableInterrupts(void)
{
//使能PIE中断向量表
PieCtrlRegs.PIECRTL.bit.ENPIE=1;
//响应所有中断
PieCtrlRegs.PIEACK.all=0xFFFF;
//使能CPU级中断
EINT;
}
/******************************************************************/
/*Copyright(C),2008-2009,力天电子,LiTianTech.Co.Ltd.*/
/*ModuleName:
system*/
/*FileName:
DSP281x_PieVect.c*/
/*Author:
侯长波*/
/*CreateDate:
2009/12/1*/
/*Version:
2.0*/
/*Function:
初始化PIE向量表*/
/*Description:
*/
/*Support:
www.LT*/
/******************************************************************/
#include"DSP281x_Device.h"
#include"DSP281x_DefaultIsr.h"
//中断向量入口值,和DSP281x_DefaultIsr文件中定义的中断函数相对应
conststructPIE_VECT_TABLEPieVectTableInit={
PIE_RESERVED,//Reservedspace
PIE_RESERVED,
PIE_RESERVED,
PIE_RESERVED,
PIE_RESERVED,
PIE_RESERVED,
PIE_RESERVED,
PIE_RESERVED,
PIE_RESERVED,
PIE_RESERVED,
PIE_RESERVED,
PIE_RESERVED,
PIE_RESERVED,
//Non-PeripheralInterrupts
INT13_ISR,//XINT13orCPU-Timer1
INT14_ISR,//CPU-Timer2
DATALOG_ISR,//Datalogginginterrupt
RTOSINT_ISR,//RTOSinterrupt
EMUINT_ISR,//Emulationinterrupt
NMI_ISR,//Non-maskableinterrupt
ILLEGAL_ISR,//IllegaloperationTRAP
USER1_ISR,//UserDefinedtrap1
USER2_ISR,//UserDefinedtrap2
USER3_ISR,//UserDefinedtrap3
USER4_ISR,//UserDefinedtrap4
USER5_ISR,//UserDefinedtrap5
USER6_ISR,//UserDefinedtrap6
USER7_ISR,//UserDefinedtrap7
USER8_ISR,//UserDefinedtrap8
USER9_ISR,//UserDefinedtrap9
USER10_ISR,//UserDefinedtrap10
USER11_ISR,//UserDefinedtrap11
USER12_ISR,//UserDefinedtrap12
//Group1PIEVectors
PDPINTA_ISR,//EV-A
PDPINTB_ISR,//EV-B
rsvd_ISR,
XINT1_ISR,
XINT2_ISR,
ADCINT_ISR,//ADC
TINT0_ISR,//Timer0
WAKEINT_ISR,//WD
//Group2PIEVectors
CMP1INT_ISR,//EV-A
CMP2INT_ISR,//EV-A
CMP3INT_ISR,//EV-A
T1PINT_ISR,//EV-A
T1CINT_ISR,//EV-A
T1UFINT_ISR,//EV-A
T1OFINT_ISR,//EV-A
rsvd_ISR,
//Group3PIEVectors
T2PINT_ISR,//EV-A
T2CINT_ISR,//EV-A
T2UFINT_ISR,//EV-A
T2OFINT_ISR,//EV-A
CAPINT1_ISR,//EV-A
CAPINT2_ISR,//
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP2812 相关 代码 程序