为什么xil_printf导致堆栈溢出而XUartLite_SendByte没有引起堆栈溢出?谁能解释一下?带注释的部分(XUartLite_SendByte)正常工作,但最终我想在i上调用一个函数并使用xil_printf返回结果。
代码如下所示。
使用xilinx sdk进行微火
#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;
}
Run Code Online (Sandbox Code Playgroud)
您在Xilinx 论坛上发布了同样的问题。Xilinx 对此回应:
XUartLite_RecvByte() 返回 u8(或无符号字符)。不是 Xuint16。并且 xil_printf %c 不会期望 Xuint16。