程序仅在调试模式下正确运行
问题描述:
我写了一个简单的Microblaze C应用程序,用一个按钮在十六进制和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
}
}
当我调试在黑板上一切正常。在FPGA上下载后,切换不起作用。
有人可以解释为什么吗?
答
已解决 以下代码正常运行。将标志定义为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
}
}
尝试将定义标志定义为Xuint32而不是int。 – EkcenierK 2014-10-17 15:59:00
我尝试使用Xuint32,但行为是一样的:在板上调试好了,下载并在FPGA上运行切换不起作用,按下按钮切换不执行 – Gian 2014-10-17 23:35:45