微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > 实现AD_EN输入控制中断,初学者,请问哪里错了(28335)

实现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;
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top