main.c
来自「F2812实现电机控制源程序.rar」· C语言 代码 · 共 111 行
C
111 行
/*********************************************************************
** Module Name: EXT_INT **
** Author: Cbq **
** Version: 1.0 **
** CreateDate: 2008-05-16 **
** Description: **
** Remark: Huozq **
** Revision History: 2008-11-10 **
**********************************************************************/
/*********************************************************************
** 实验目的:通过实验了解DSP内部的外部中断控制寄存器,知道怎样去实现 **
外部中断 **
** 实验说明:2812有三个独立的外部可屏蔽中断XINT1,XINT2,XINT13和一个 **
** 不可屏蔽中断XNMI(和XINT13共用一个脚),我们的电路用CPLD **
** 扩展出了5个可屏蔽中断EXINT1~5和2个不可屏蔽中断NMI1和 **
** NMI2. **
** 1、外部扩展的5个可屏蔽中断通过CPLD之后,CPLD输出一INT1 **
** 与DSP的外中断一XINT1连接在一起; **
** 2、外部扩展的2个不可屏蔽中断通过CPLD之后,CPLD输出一 **
** NMI1与DSP的XNMI连接到了一起; **
** 3、DSP的XINT2中断分配给了USB68013,/INT 68013 **
** 具体可查看原理图 **
** 实验结果:我们这里的实验只用了EXINT5,就是通过按键S3产生一中断, **
** 看在程序运行时能否跳入中断,在指定位置设置的断点停下。 **
**********************************************************************/
#include "DSP28_Device.h"
#include "DSP28_Globalprototypes.h"
unsigned int *INT1Add = (unsigned int *)0x4100;///INT1中断地址定义
unsigned int *NMIAdd = (unsigned int *)0x4200;///NMI中断地址定义
interrupt void ExtIntISR(void);
void main(void)
{
/*初始化系统*/
InitSysCtrl();
/*关中断*/
DINT;
IER = 0x0000;
IFR = 0x0000;
/*初始化PIE*/
InitPieCtrl();
/*初始化PIE中断矢量表*/
InitPieVectTable();
/*初始化外设*/
///InitPeripherals();
///InitGpio();
InitXIntrupt();
EALLOW;
PieVectTable.XINT1 = &ExtIntISR;//中断矢量表的外中断1指向中断服务寄存器函数
EDIS;
/*开中断*/
IER |= M_INT1; //外部中断1所的的PIE分组
PieCtrl.PIEIER1.bit.INTx4 = 1; //外部中断1所在PIE分组1中的第4位
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
for(;;);
}
interrupt void ExtIntISR(void)
{
Uint16 Temp; ///用此临时变量读取外部可屏蔽中断,对应关系为:
/// bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
/// Eint5 Eint4 Eint3 Eint2 Eint1
PieCtrl.PIEACK.all = 0xFFFF; //响应中断,写1清0,允许INT1~INT12向CPU发起中断
PieCtrl.PIEIFR1.bit.INTx4 = 0;//相应的中断标志寄存器清0
ERTM;
Temp = *INT1Add;
Temp |= 0xffe0; //设断点
Temp = Temp;
}
void Delay(Uint16 data)
{
Uint16 i;
for (i=0;i<data;i++) { ; }
}
//===========================================================================
// No more.
//===========================================================================
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?