📄 cputimer.c
字号:
/************************************************************************************
版权(c) 2005- 清华大学精仪系 *
* 设计者: 韩丰田
*************************************************************************************/
#include "DSP28_Device.h"
unsigned int Led_Flag=1;
volatile unsigned long *TINT0=(volatile unsigned long *)0x000D4C;
#define LED1_ON GpioDataRegs.GPFDAT.bit.GPIOF11=0
#define LED1_OFF GpioDataRegs.GPFDAT.bit.GPIOF11=1
#define LED2_ON GpioDataRegs.GPFDAT.bit.GPIOF10=0
#define LED2_OFF GpioDataRegs.GPFDAT.bit.GPIOF10=1
#define KEY1 GpioDataRegs.GPFDAT.bit.GPIOF8
#define KEY2 GpioDataRegs.GPFDAT.bit.GPIOF9
interrupt void ISRTimer0(void);
void main(void)
{
unsigned long Timer0PRD1,Timer0PRD2,Timer0PRD,Timer0Old;
unsigned long Timer0=100000;
/*初始化系统*/
InitSysCtrl();
/*关中断*/
DINT;
IER = 0x0000;
IFR = 0x0000;
Led_Flag = 0;
/*初始化PIE*/
InitPieCtrl();
/*初始化PIE中断矢量表*/
InitPieVectTable();
/*初始化外设*/
InitGpio();
InitCpuTimers();
EALLOW;
//PieVectTable.TINT0 = &ISRTimer0; //中断矢量的初始化方法1
*TINT0 = (unsigned long)ISRTimer0; //中断矢量的初始化方法2
EDIS;
/*设置CPU定时器*/
Timer0Old=100000;
ConfigCpuTimer(&CpuTimer0, 150, Timer0Old);
StartCpuTimer0();
PieCtrl.PIEIER1.all = 0x40; //Enable CPU Timer0 interrupt
IER |= M_INT1;
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
for(;;)
{
Timer0PRD1=0;
Timer0PRD2=0;
Timer0PRD=0;
if(KEY1) Timer0PRD1=Timer0*2;
if(KEY2) Timer0PRD2=Timer0*2;
Timer0PRD=Timer0+Timer0PRD1+Timer0PRD2;
if (Timer0PRD!=Timer0Old) {
Timer0Old=Timer0PRD;
StopCpuTimer0();
ConfigCpuTimer(&CpuTimer0, 150, Timer0PRD);
StartCpuTimer0();
}
}
}
interrupt void ISRTimer0(void)
{
PieCtrl.PIEACK.all |= PIEACK_GROUP1;
if(Led_Flag == 1)
{
LED1_ON;
LED2_ON;
Led_Flag = 0;
}
else
{
LED1_OFF;
LED2_OFF;
Led_Flag = 1;
}
}
//===========================================================================
// No more.
//===========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -