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

📄 main.c

📁 这是几个TMS320F2812应用程序举例
💻 C
字号:
//###########################################################################
// FILE:  main.c	
// RealSYS	2003/9/16
//###########################################################################
#include "..\DSP281x_Device.h"
#include "..\def28x.h"

#define	ON_LED	GpioDataRegs.GPFCLEAR.bit.GPIOF14=1
#define	OFF_LED	GpioDataRegs.GPFSET.bit.GPIOF14=1
#define	T_LED	GpioDataRegs.GPFTOGGLE.bit.GPIOF14=1

// Prototype statements for functions found within this file.
interrupt void cpu_timer0_isr(void);
extern interrupt void scia_rx_isr(void);
extern interrupt void scia_tx_isr(void);

int	mcnt=0,tcnt0=0;

void init_gpio(void){
	EALLOW;
	GpioMuxRegs.GPAMUX.all=0x0000;
/* GPAMUX: GPIO_A function 0=IOP,1=FUN	I(0)/O(1)
	bit15	0:	C3TRIP,PA15		;IOP		1
	bit14	0:	C2TRIP,PA14		;IOP		1
	bit13	0:	C1TRIP,PA13		;IOP		1
	bit12	0:	TCLKINA,PA12	;IOP		1
	bit11	0:	TDIRA,PA11		;IOP		1
	bit10	0:	CAP3_QEPI1,PA10	;IOP		1
	bit9	0:	CAP2_QEP2,PA9	;IOP		0
	bit8	0:	CAP1_QEP1,PA8	;IOP		0
	bit7	0:	T2PWM_T2CMP,PA7	;IOP		1
	bit6	0:	T1PWM_T1CMP,PA6	;IOP		1
	bit5	0:	PWM6,PA5		;IOP		1	
	bit4	0:	PWM5,PA4		;IOP		1	
	bit3	0:	PWM4,PA3		;IOP		1	
	bit2	0:	PWM3,PA2		;IOP		1	
	bit1	0:	PWM2,PA1		;IOP		1	
	bit0	0:	PWM1,PA0		;IOP		1
	*/
    GpioMuxRegs.GPADIR.all=0xfcff;	// PA DIR: 1=output,0=input
    GpioMuxRegs.GPAQUAL.all=0x0000;	// PA Input Qualification:
    /* 0x00=No, 0x01=SYSCLK/2, 0x02=SYSCLK/4, 0x04=SYSCLK/510 */
    
    GpioMuxRegs.GPBMUX.all=0x0000;   
/* GPBMUX: GPIO_B function 0=IOP,1=FUN	I(0)/O(1)
	bit15	0:	C6TRIP,PB15		;IOP		1
	bit14	0:	C5TRIP,PB14		;IOP		1
	bit13	0:	C4TRIP,PB13		;IOP		1
	bit12	0:	TCLKINB,PB12	;IOP		1
	bit11	0:	TDIRB,PB11		;IOP		1
	bit10	0:	CAP6_QEPI2,PB10	;IOP		1
	bit9	0:	CAP5_QEP4,PB9	;IOP		1
	bit8	0:	CAP4_QEP3,PB8	;IOP		1
	bit7	0:	T4PWM_T4CMP,PB7	;IOP		1
	bit6	0:	T3PWM_T3CMP,PB6	;IOP		1
	bit5	0:	PWM12,PB5		;IOP		1	
	bit4	0:	PWM11,PB4		;IOP		1	
	bit3	0:	PWM10,PB3		;IOP		1	
	bit2	0:	PWM9,PB2		;IOP		1	
	bit1	0:	PWM8,PB1		;IOP		1	
	bit0	0:	PWM7,PB0		;IOP		1
	*/
    GpioMuxRegs.GPBDIR.all=0xffff;	// PB DIR: 1=output,0=input
    GpioMuxRegs.GPAQUAL.all=0x0000;	// PB Input Qualification:
    /* 0x00=No, 0x01=SYSCLK/2, 0x02=SYSCLK/4, 0x04=SYSCLK/510 */
  
    GpioMuxRegs.GPDMUX.all=0x0021;
/* GPDMUX: GPIO_D function 0=IOP,1=FUN
	bit6	0:	T4CTRIP,PD6			;IOP
	bit5	1:	T3CTRIP_PDPINTB,PD5	;FUN
	bit4	0:	res
	bit3	0:	res
	bit2	0:	res
	bit1	0:	T2CTRIP,PD1			;IOP		
	bit0	1:	T1CTRIP_PDPINTA,PD0	;FUN
	*/
    GpioMuxRegs.GPDDIR.all=0x5e;	// DIR: 1=output,0=input
	//	6(PD6),5(PDPINTB),4,3,2,1(PD1),0(PDPINTA)
	//     1       0      1 1 1    1       0	= 0x5e
    GpioMuxRegs.GPDQUAL.all=0x0000;	// PD Input Qualification:
    /* 0x00=No, 0x01=SYSCLK/2, 0x02=SYSCLK/4, 0x04=SYSCLK/510 */
	
    GpioMuxRegs.GPEMUX.all=0x0000; 	
/* GPEMUX: GPIO_E function 0=IOP,1=FUN		I(0)/O(1)
	bit2	0:	XNMI_XINT13,PE2		;IOP		1
	bit1	0:	XINT2_ADCSOC,PE1	;IOP		0	
	bit0	0:	XINT1_XBIO,PE0		;IOP		0
	*/
    GpioMuxRegs.GPEDIR.all=0x04;	// DIR: 1=output,0=input
    GpioMuxRegs.GPEQUAL.all=0x0000;	// PE Input Qualification:
    /* 0x00=No, 0x01=SYSCLK/2, 0x02=SYSCLK/4, 0x04=SYSCLK/510 */

    GpioMuxRegs.GPFMUX.all=0x00f0;		 
/* GPFMUX: GPIO_F function 0=IOP,1=FUN		I(0)/O(1)
	bit14	0:	XF,PF14			;IOP			1(CPU_LED)
	bit13	0:	MDR,PF13		;IOP			1
	bit12	0:	MDX,PF12		;IOP			1
	
	bit11	0:	MFSR,PF11		;IOP			1
	bit10	0:	MFSX,PF10		;IOP			1
	bit9	0:	MCLKR,PF9		;IOP			1
	bit8	0:	MCLKX,PF8		;IOP			1
	
	bit7	1:	CANRX,PF7		;FUN			0
	bit6	1:	CANTX,PF6		;FUN			1
	bit5	1:	SCIRXDA,PF5		;FUN			0
	bit4	1:	SCITXDA,PF4		;FUN			1
	
	bit3	0:	SPISTE,PF3		;IOP			1
	bit2	0:	SPICLK,PF2		;IOP			1
	bit1	0:	SPISOMI,PF1		;IOP			1
	bit0	0:	SPISIMO,PF0		;IOP			1
	*/
    GpioMuxRegs.GPFDIR.all=0xff5f;	// DIR: 1=output,0=input

    GpioMuxRegs.GPGMUX.all=0x0030;
/* GPGMUX: GPIO_G function 0=IOP,1=FUN
	bit5	1:	SCIRXDB,PG5		;FUN
	bit4	1:	SCITXDB,PG4		;FUN		
	*/
    GpioMuxRegs.GPGDIR.all=0x10;	// DIR: 1=output,0=input
	//	5(RXDB),4(TXDB),3,2,1,0
	//     0       1    0 0 0 0	= 0x10
	
	EDIS; 
}

interrupt void cpu_timer0_isr(void){
	CpuTimer0.InterruptCount++;

	tcnt0++;
	T_LED;		// Toggle LED
		
	// Acknowledge this interrupt to recieve more interrupts from group 1
	PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;	
}

void main(void){

// Initialize System Control registers, PLL, WatchDog, Clocks to default state:
// This function is found in the DSP28_SysCtrl.c file.
	InitSysCtrl();

// Init.GPIO
	init_gpio();	

// Disable and clear all CPU interrupts:
	DINT;
	IER = 0x0000;
	IFR = 0x0000;

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

// Initialize the PIE Vector Table To a Known State:
// This function populates the PIE vector table with pointers
// to the shell ISR functions found in DSP28_DefaultIsr.c.
	InitPieVectTable();	
	
	EALLOW;	// This is needed to write to EALLOW protected registers

	PieVectTable.TINT0 = &cpu_timer0_isr;	// for TINT0
	
	EDIS;       // This is needed to disable write to EALLOW protected registers

    InitCpuTimers();
//	ConfigCpuTimer(&CpuTimer0, 100, 1000000);	// 100MHz CPU Freq, 1 second Period (in uSeconds)
//	ConfigCpuTimer(&CpuTimer0, 150, 500000);	// 150MHz CPU Freq, 0.5 sec Period (in uSeconds)
//	ConfigCpuTimer(&CpuTimer0, 150, 10);		// 150MHz CPU Freq, 10 usec Period (in uSeconds)
	ConfigCpuTimer(&CpuTimer0, 150, 100000);	// 150MHz CPU Freq, 100 msec Period (in uSeconds)
 	StartCpuTimer0();

// Interrupt Enable Register
	IER |= M_INT1;	// for TINT0
	
//	PIE : Peripheral Interrupts setting
	PieCtrlRegs.PIEIER1.bit.INTx7 = 1;		// for TINT0

// for SCI debug
	sci_debug_init();
	
// Enable global Interrupts and higher priority real-time debug events:
	EINT;	// Enable Global interrupt INTM
	ERTM;	// Enable Global realtime interrupt DBGM

	while(1){    
		mcnt++;

    }
	
} 	

⌨️ 快捷键说明

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