📄 example_28xgpio.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 + -