?? example_281xgpioloopback.c
字號:
Test_status[Test_var] = 0x0003;
Test_var++;
Test_status[Test_var] = 0xD0BE; // Set the default value of status
// to "PASSED"
test_count = 0;
while (test_count < 4) // repeat the tests 4 times
{
GpioDataRegs.GPBSET.all = 0xFF00;
delay_loop();
GpioDataRegs.GPACLEAR.all = 0xFF00; // Test Clear
asm (" RPT #14 || NOP"); // Delay < ( 6 * 2 ) CPUCLK cycles
Test_flag = GpioDataRegs.GPADAT.all;
if ( Test_flag == 0x0000 ) error(1);
GpioDataRegs.GPASET.all = 0x5500; // Test Set
asm(" RPT #14 ||NOP");
Test_flag = GpioDataRegs.GPADAT.all;
if ( Test_flag == 0x5555 ) error(1);
GpioDataRegs.GPATOGGLE.all = 0xFF00; // Test Toggle
asm(" RPT #14 ||NOP");
Test_flag = GpioDataRegs.GPADAT.all;
if ( Test_flag == 0xAAAA ) error(1);
test_count++;
}
Test_var++;
// Test #3B: Set delay so that the input is qualified successfully
// delay must be >= ( 6 * 2 * QUALVAL ) CPUCLK cycles
Test_status[Test_var] = 0x0004;
Test_var++;
Test_status[Test_var] = 0xD0BE; // Set the default value of status
// to "PASSED"
test_count = 0;
while (test_count < 4) // repeat the tests 4 times
{
GpioDataRegs.GPASET.all = 0xFF00;
delay_loop();
GpioDataRegs.GPACLEAR.all = 0xFF00; // Test Clear
asm (" RPT #16 || NOP"); // Delay = (6 * 2 * 1) CPUCLK cycles
Test_flag = GpioDataRegs.GPADAT.all;
if ( Test_flag != 0x0000 ) error(1);
GpioDataRegs.GPASET.all = 0x5500; // Test Set
asm(" RPT #16 ||NOP");
Test_flag = GpioDataRegs.GPADAT.all;
if ( Test_flag != 0x5555 ) error(1);
GpioDataRegs.GPATOGGLE.all = 0xFF00; // Test Toggle
asm(" RPT #16 ||NOP");
Test_flag = GpioDataRegs.GPADAT.all;
if ( Test_flag != 0xAAAA ) error(1);
test_count++;
}
Test_var++;
} // End of Test #3
void Gpio_PortB(void)
{
// GPIO Test #4:
// Configure Upper 8 bits of Port B as outputs and lower 8 bits as inputs
// Loop back bits [15:8] to bits [7:0]
// Set input qualifier to 0x0002
var1= 0x0000; // sets GPIO Muxs as I/Os
var2= 0xFF00; // sets GPIO 15-8 DIR as outputs, 7-0 as inputs.
var3= 0x0002; // Set input qualifier to 2
Gpio_select();
// Test #4A: Set delay so that the input gets rejected.
// Delay must be < ( 6 * 2 * QUALVAL ) CPUCLK cycles
Test_status[Test_var] = 0x0005;
Test_var++;
Test_status[Test_var] = 0xD0BE; // Set the default value of status
// to "PASSED"
test_count = 0;
while (test_count < 4) // repeat the tests 4 times
{
GpioDataRegs.GPBSET.all = 0xFF00;
delay_loop();
GpioDataRegs.GPBCLEAR.all = 0xFF00; // Test Clear
asm (" RPT #24 || NOP"); // Delay < (6 * 2 * 2) CPUCLK cycles
Test_flag = GpioDataRegs.GPBDAT.all;
if ( Test_flag == 0x0000 ) error(1);
GpioDataRegs.GPBSET.all = 0x5500; // Test Set
asm(" RPT #24 ||NOP");
Test_flag = GpioDataRegs.GPBDAT.all;
if ( Test_flag == 0x5555 ) error(1);
GpioDataRegs.GPBTOGGLE.all = 0xFF00; // Test Toggle
asm(" RPT #24 ||NOP");
Test_flag = GpioDataRegs.GPBDAT.all;
if ( Test_flag == 0xAAAA ) error(1);
test_count++;
}
Test_var++;
// Test #4B: Set delay so that the input is qualified successfully
// Delay must be >= ( 6 * 2 * QUALVAL ) CPUCLK cycles
Test_status[Test_var] = 0x0006;
Test_var++;
Test_status[Test_var] = 0xD0BE; // Set the default value of status
// to "PASSED"
test_count = 0;
while (test_count < 4) // repeat the tests 4 times
{
GpioDataRegs.GPBSET.all = 0xFF00;
delay_loop();
GpioDataRegs.GPBCLEAR.all = 0xFF00; // Test Clear
asm (" RPT #29 || NOP"); // Delay = (6 * 2 * 2) CPUCLK cycles
Test_flag = GpioDataRegs.GPBDAT.all;
if ( Test_flag != 0x0000 ) error(1);
GpioDataRegs.GPBSET.all = 0x5500; // Test Set
asm(" RPT #29 ||NOP");
Test_flag = GpioDataRegs.GPBDAT.all;
if ( Test_flag != 0x5555 ) error(1);
GpioDataRegs.GPBTOGGLE.all = 0xFF00; // Test Toggle
asm(" RPT #29 ||NOP");
Test_flag = GpioDataRegs.GPBDAT.all;
if ( Test_flag != 0xAAAA ) error(1);
test_count++;
}
Test_var++;
} // End of Test #4
void Gpio_PortF(void)
{
// GPIO Test #5:
// Configure Upper bits [14:8] of Port F as outputs and bits [7:0] as inputs
// Loop back bits [14:8] to bits [6:0], also loopback bit #8, to bit #7
var1= 0x0000; // sets GPIO Muxs as I/Os
var2= 0xFF00; // sets GPIO 14-8 DIR as outputs, 7-0 as inputs.
Gpio_select();
Test_status[Test_var] = 0x0007;
Test_var++;
Test_status[Test_var] = 0xD0BE; // Set the default value of status
// to "PASSED"
test_count = 0;
while (test_count < 4) // repeat the tests 4 times
{
GpioDataRegs.GPFSET.all = 0xFF00;
delay_loop();
GpioDataRegs.GPFCLEAR.all = 0xFF00; // Test Clear
asm (" RPT #6 || NOP");
Test_flag = GpioDataRegs.GPFDAT.all;
if ( Test_flag != 0x0000 ) error(1);
GpioDataRegs.GPFSET.all = 0x5500; // Test Set
asm(" RPT #6 || NOP");
Test_flag = GpioDataRegs.GPFDAT.all;
if ( Test_flag != 0x55D5 ) error(1);
GpioDataRegs.GPFTOGGLE.all = 0xFF00; // Test Toggle
asm(" RPT #6 || NOP");
Test_flag = GpioDataRegs.GPFDAT.all;
if ( Test_flag != 0x2A2A ) error(1);
test_count++;
}
Test_var++;
} // End of Test #5
void delay_loop()
{
short i;
for (i = 0; i < 1000; i++) {}
}
void Gpio_select(void)
{
EALLOW;
GpioMuxRegs.GPAMUX.all=var1; // Configure MUXs as digital I/Os or
GpioMuxRegs.GPBMUX.all=var1; // peripheral I/Os
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;
EDIS;
}
void error (int ErrorFlag)
{
PASS_flag = 0xDEAD; // Test case failed
Test_status[Test_var] = 0xDEAD; // Sub-test failed
return;
}
void program_stop()
{
//All tests are done */
if(PASS_flag !=0)
PASS_flag=0xDEAD; // Test code exit here..
else
PASS_flag=0xD0BE; // Test code exit he
// end all tests
asm(" ESTOP0"); // Done!
for(;;) { } // Dummy loop Wait forever
}
//===========================================================================
// No more.
//===========================================================================
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -