DSP2812相关代码和程序.docx

上传人:b****4 文档编号:24313340 上传时间:2023-05-26 格式:DOCX 页数:118 大小:31.83KB
下载 相关 举报
DSP2812相关代码和程序.docx_第1页
第1页 / 共118页
DSP2812相关代码和程序.docx_第2页
第2页 / 共118页
DSP2812相关代码和程序.docx_第3页
第3页 / 共118页
DSP2812相关代码和程序.docx_第4页
第4页 / 共118页
DSP2812相关代码和程序.docx_第5页
第5页 / 共118页
点击查看更多>>
下载资源
资源描述

DSP2812相关代码和程序.docx

《DSP2812相关代码和程序.docx》由会员分享,可在线阅读,更多相关《DSP2812相关代码和程序.docx(118页珍藏版)》请在冰豆网上搜索。

DSP2812相关代码和程序.docx

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,//

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1