main.c
来自「F2812实现电机控制源程序.rar」· C语言 代码 · 共 89 行
C
89 行
/*********************************************************************
** Module Name: Cputimer2 **
** Author: Cbq **
** Version: 1.0 **
** CreateDate: 2008-05-15 **
** Description: **
** Remark: Huozq **
** Revision History: 2008-11-10 **
**********************************************************************/
/*********************************************************************
** 实验目的:学习DSP内部定时器2的使用 **
** 实验说明:这个实验的基本配置和CPUTimer0基本相同,不同的是使用非 **
** 外围中断扩展PIE中断,它可以直接向CPU发起中断,具体可参 **
** 见课本P81 **
** 实验结果:每次定时时间到,二极管将进行全亮或则全灭一次 **
**********************************************************************/
#include "DSP28_Device.h"
unsigned int * Led8 = (unsigned int *) 0x4100;//二极管地址,由CPLD提供
unsigned int Led_Flag; //二极管全亮,全灭标志位
interrupt void ISRTimer2(void); //中断服务寄存器定时器2函数
void main(void)
{
/*初始化系统*/
InitSysCtrl();
/*关中断*/
DINT;
IER = 0x0000;
IFR = 0x0000;
Led_Flag = 0;
/*初始化PIE*/
InitPieCtrl();
/*初始化PIE中断矢量表*/
InitPieVectTable();
/*初始化外设*/
InitPeripherals();
EALLOW;
PieVectTable.TINT2 = &ISRTimer2;
EDIS;
/*设置CPU*/
ConfigCpuTimer(&CpuTimer2, 50, 1000000);
CpuTimer2Regs.TCR.bit.TSS = 0; //启动定时器2
///StartCpuTimer2();
/*开中断*/
IER |= M_INT14; //内部定时器在PIE分组中位于14
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
for(;;);
}
interrupt void ISRTimer2(void)
{
CpuTimer2.InterruptCount++; //中断计数
if(Led_Flag == 1)
{
*Led8 = 0x00; //全亮
Led_Flag = 0;
}
else
{
*Led8 = 0xff; //全灭
Led_Flag = 1;
}
}
//===========================================================================
// No more.
//===========================================================================
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?