5

为什么 xil_printf 会导致堆栈溢出而 XUartLite_SendByte 不会?谁能解释一下?注释部分(XUartLite_SendByte)工作正常,但最终我想在 i 上调用一个函数并使用 xil_printf 返回结果。

代码如下所示。

使用 xilinx sdk 的 microblaze

#include <stdio.h>
/*#include "xparameters.h" */
#include "xil_cache.h"
/*#include "uartlite_header.h"
#include "xbasic_types.h"
#include "xgpio.h"
#include "gpio_header.h"
#include "xspi.h"
#include "spi_header.h"*/

#include "xparameters.h"
#include "xutil.h"
#include "xuartlite_i.h"


#define UART_ADDR 0x40600000

int main()
{

   Xil_ICacheEnable();
   Xil_DCacheEnable();

   print("---Entering main---\n\r");

   Xuint16 i;


   while(1==1)
   {
       while(XUartLite_IsReceiveEmpty(UART_ADDR));
       i = XUartLite_RecvByte(UART_ADDR);
       xil_printf("%c ", i);

                   /*while(XUartLite_IsTransmitFull(UART_ADDR));*/
                   /*XUartLite_SendByte(UART_ADDR, i);*/
                       //}
   }

   print("---Exiting main---\n\r");

   Xil_DCacheDisable();
   Xil_ICacheDisable();

   return 0;
}
4

1 回答 1

2

您在Xilinx 论坛上发布了同样的问题。赛灵思回应:

XUartLite_RecvByte() 返回一个 u8(或无符号字符)。不是Xuint16。而 xil_printf %c 不会期望 Xuint16。

于 2016-07-20T08:00:35.803 回答