2014-10-17 4 views
0

간단히 Microblaze C 애플리케이션을 작성하여 보드 디스플레이를 테스트하는 버튼으로 16 진수와 BCD 모드를 전환 할 수 있습니다.프로그램이 디버그 모드에서만 올바르게 실행됩니다.

내가 보드 모두에서 디버깅
#include <xparameters.h> 
#include <xgpio.h> 

int main() 
{ 
    XGpio display, digit, bcd, butt; // four variables are defined named display, digit, bcd, butt 
    int flag = 1; 

    XGpio_Initialize (&display, XPAR_AXI_GPIO_0_DEVICE_ID); 
    XGpio_SetDataDirection (&display,1,0); // set display as output ports 
    XGpio_Initialize (&digit,XPAR_AXI_GPIO_1_DEVICE_ID); 
    XGpio_SetDataDirection (&digit,1,0); // set digit as output ports 
    XGpio_Initialize (&bcd,XPAR_AXI_GPIO_2_DEVICE_ID); 
    XGpio_SetDataDirection (&bcd,1,0); // set bcd as output ports 
    XGpio_Initialize (&butt, XPAR_AXI_GPIO_3_DEVICE_ID); 
    XGpio_SetDataDirection (&butt,1,1); //set button as input port 

    while(1) 
    { 
     if (XGpio_DiscreteRead (&butt, 1) == 1) 
     { 
      if (flag==1) 
      { flag=0; } 
      else 
      { flag=1; } 
     } // toggle flag 

     XGpio_DiscreteWrite (&bcd, 1, flag); // set bcd to flag 
     XGpio_DiscreteWrite (&digit, 1, 7); // set n°8 digit 
     XGpio_DiscreteWrite (&display, 1, 99563243); // write to display 
    } 
} 

은 OK입니다 :

여기 내 코드입니다. FPGA에서 다운로드 한 후 토글이 작동하지 않습니다.

누군가 설명 할 수 있습니까?

+0

int가 아닌 Xuint32로 플래그를 정의 해보십시오. – EkcenierK

+0

Xuint32로 시도했지만 동작은 동일합니다. 보드에서 디버깅을 확인하고, FPGA 토글에서 다운로드 및 실행이 작동하지 않습니다. 버튼 토글을 실행하지 마십시오. 실행되지 않았습니다. – Gian

답변

1

솔브레드 다음 코드는 정상적으로 실행됩니다. 플래그를 u32로 정의하고 지연주기를 추가하십시오.

#include<xparameters.h> 
#include<xgpio.h> 

int main() 
{ 
XGpio display, digit, bcd, sw; // defined gpio variables 
long int delay;     // defined a delay variable 
u32 flag=1;      // defined a flag variable 

XGpio_Initialize(&display, XPAR_AXI_GPIO_0_DEVICE_ID); 
XGpio_SetDataDirection(&display,1,0);     // set display as output ports 
XGpio_Initialize(&digit,XPAR_AXI_GPIO_1_DEVICE_ID); 
XGpio_SetDataDirection(&digit,1,0);      // set digit as output ports 
XGpio_Initialize(&bcd,XPAR_AXI_GPIO_2_DEVICE_ID); 
XGpio_SetDataDirection(&bcd,1,0);      // set bcd as output ports 
XGpio_Initialize(&sw, XPAR_AXI_GPIO_3_DEVICE_ID); 
XGpio_SetDataDirection(&sw,1,1);      //set sw as input port 

while(1) 
{ 
    flag= XGpio_DiscreteRead(&sw, 1); 
    XGpio_DiscreteWrite(&bcd, 1, flag);   // set bcd to flag 
    XGpio_DiscreteWrite(&digit, 1, 7);   // set n°8 digit 
    XGpio_DiscreteWrite(&display, 1, 5888999); // write to display 
    for(delay=0;delay<3000000;delay++){};  // delay cycle 
} 
}  
관련 문제