⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example_28xgpio.c

📁 TMS320F2812的外部中断程序 CCS3.1
💻 C
字号:

#include "DSP28_Device.h"
#include "DSP28_Globalprototypes.h"

// Prototype statements for functions found within this file.
// interrupt void ISRTimer2(void);
void delay_loop(void);
void Gpio_select(void);

interrupt void XINT1_ISR_A(void);


  	
unsigned int var1 = 0;
unsigned int var2 = 0;
unsigned int var3 = 0;
unsigned int var4 = 0;
unsigned int var5 = 0;
int led = 0x0000;
void main(void)
{

	//int led;
	//led = 0x0000;
	InitSysCtrl();
	
	// Disable and clear all CPU interrupts:
	DINT;
	IER = 0x0000;
	IFR = 0x0000;
	



	// Initialize Pie Control Registers To Default State:
	InitPieCtrl();

	InitPieVectTable();	
	
	

	
	IER |= M_INT1;
	
// Run GPIO test
	var1= 0x0000;		// sets GPIO Muxs as I/Os
	var2= 0xFFFF;		// sets GPIO DIR as outputs
	var3= 0x0000;		// sets the Input qualifier values
	

	// Toggle I/Os  using DATA register for ever
	
	
	
	
	
	EALLOW;	// This is needed to write to EALLOW protected registers
	PieVectTable.XINT1 = &XINT1_ISR_A;
	EDIS;   // This is needed to disable write to EALLOW protected registers
	
	/*初始化ZONE 1区*/
	//InitXintf();
	/*初始化外部中断*/
	InitXIntrupt();
	IER |= M_INT1;	
	Gpio_select();
	EINT;   // Enable Global interrupt INTM
	ERTM;	// Enable Global realtime interrupt DBGM	

	delay_loop();
	
	
	
	while(1)
	{    
		if(led == 0x0000)
		{
			GpioDataRegs.GPBDAT.all    =0xAAAA;     
	    }
	    else
	    {
	    	//GpioDataRegs.GPBDAT.all    =0x0001;     
			GpioDataRegs.GPBDAT.all    =0x5555; 
			//GpioDataRegs.GPBDAT.all    =0x0003; 
		}
    }
	
} 	

void delay_loop()
{
    short      i;
    short      ii;
    for (i = 0; i < 1000; i++) 
    {
    	for (ii = 0; ii < 1000; ii++) {}	
    }
}

void Gpio_select(void)
{
	 EALLOW;
	 
	//GpioMuxRegs.GPAMUX.all=var1;
    GpioMuxRegs.GPBMUX.all=var1;   
    //GpioMuxRegs.GPDMUX.all=var1;
    //GpioMuxRegs.GPFMUX.all=var1;		 
    //GpioMuxRegs.GPEMUX.all=var1; 
    //GpioMuxRegs.GPGMUX.all=var1;
										
    //GpioMuxRegs.GPADIR.all=var2;		// GPIO PORTs  as output
    GpioMuxRegs.GPBDIR.all=var2;   		// GPIO DIR select GPIOs as output 
    //GpioMuxRegs.GPDDIR.all=var2;
    //GpioMuxRegs.GPEDIR.all=var2;		
    //GpioMuxRegs.GPFDIR.all=var2; 
    //GpioMuxRegs.GPGDIR.all=var2;

    //GpioMuxRegs.GPAQUAL.all=var3;  		// Set GPIO input qualifier values
    GpioMuxRegs.GPBQUAL.all=var3;   
    //GpioMuxRegs.GPDQUAL.all=var3;
    //GpioMuxRegs.GPEQUAL.all=var3;



    GpioMuxRegs.GPEDIR.bit.GPIOE0=0;
    GpioMuxRegs.GPEQUAL.all=0;
    GpioMuxRegs.GPEMUX.bit.XINT1_XBIO_GPIOE0=1;
 
    EDIS;
    PieCtrl.PIEIER1.bit.INTx4=1; 
}   

interrupt void XINT1_ISR_A(void)
{
	
	if(led == 0x0000)
	{
		led = 0x0001;
	}
	else
	{
		led = 0x0000;
	}
	PieCtrl.PIEACK.bit.ACK1 = 1;
	EINT;
}     
  
//===========================================================================
// No more.
//===========================================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -