实现AD_EN输入控制中断,初学者,请问哪里错了(28335)
时间:10-02
整理:3721RD
点击:
#include "DSP28x_Project.h"
#define AD_EN GpioDataRegs.GPADAT.bit.GPIO16 //GPIO0作为启动中断信号,上升沿有效
interrupt void cpu_timer0_isr(); //定时器0中断服务子程序
void main()
{
// Uint16 i;
InitSysCtrl(); //系统初始化
DINT; //关闭全局中断
InitPieCtrl(); //初始化PIE
IER=0x0000; //关闭CPU中断
IFR=0x0000; //清除CPU中断信号
InitPieVectTable(); //初始化中断向量列表
//adc_init(); //初始化ADC模块
EALLOW;
PieVectTable.TINT0=&cpu_timer0_isr;
EDIS;
InitCpuTimers(); //初始化定时器
#if(CPU_FRQ_150MHZ) //如果系统时钟频率为150MHz
ConfigCpuTimer(&CpuTimer0,150,1000000);
#endif
#if(CPU_FRQ_100MHZ) //如果系统时钟频率为100MHz
ConfigCpuTimer(&CpuTimer0,100,1000000);
#endif
if(AD_EN) //AD_EN上升沿到来启动中断,并且触发ADC转换开始
{
CpuTimer0Regs.TCR.all=0x4001;//启动定时器0开始运行
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO5 = 1;
EDIS;
IER|=M_INT1; //使能CPU的中断信号
PieCtrlRegs.PIEIER1.bit.INTx7=1;//TINT0为与PIE组中的第7位
EINT;//使能全局中断
ERTM;
}
for(;;);
}
interrupt void cpu_timer0_isr()
{
CpuTimer0.InterruptCount++;
//GpioDataRegs.GPATOGGLE.bit.GPIO5 = 1;
PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;
}
#define AD_EN GpioDataRegs.GPADAT.bit.GPIO16 //GPIO0作为启动中断信号,上升沿有效
interrupt void cpu_timer0_isr(); //定时器0中断服务子程序
void main()
{
// Uint16 i;
InitSysCtrl(); //系统初始化
DINT; //关闭全局中断
InitPieCtrl(); //初始化PIE
IER=0x0000; //关闭CPU中断
IFR=0x0000; //清除CPU中断信号
InitPieVectTable(); //初始化中断向量列表
//adc_init(); //初始化ADC模块
EALLOW;
PieVectTable.TINT0=&cpu_timer0_isr;
EDIS;
InitCpuTimers(); //初始化定时器
#if(CPU_FRQ_150MHZ) //如果系统时钟频率为150MHz
ConfigCpuTimer(&CpuTimer0,150,1000000);
#endif
#if(CPU_FRQ_100MHZ) //如果系统时钟频率为100MHz
ConfigCpuTimer(&CpuTimer0,100,1000000);
#endif
if(AD_EN) //AD_EN上升沿到来启动中断,并且触发ADC转换开始
{
CpuTimer0Regs.TCR.all=0x4001;//启动定时器0开始运行
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO5 = 1;
EDIS;
IER|=M_INT1; //使能CPU的中断信号
PieCtrlRegs.PIEIER1.bit.INTx7=1;//TINT0为与PIE组中的第7位
EINT;//使能全局中断
ERTM;
}
for(;;);
}
interrupt void cpu_timer0_isr()
{
CpuTimer0.InterruptCount++;
//GpioDataRegs.GPATOGGLE.bit.GPIO5 = 1;
PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;
}