/**************************************
通过串口0发送数据
**************************************/
void Uart0_Put(int data)
{
while(!(rUTRSTAT0 & (1<<2)));
if(data=='\n')
{
rUTXH0='\r'; //替换发送
}
else
{
rUTXH0=data; //发送数据
}
}
void Uart0_SendString(char *pt)
{
while(*pt)
Uart0_Put(*pt++);;
}
/**************************************
批量发送数据
**************************************/
void Uart0_Printf(const char *fmt,...)
{
va_list ap;
char string[256];
Led_On(1);
va_start(ap,fmt);
Led_On(2);
vsprintf(string,fmt,ap);
Led_On(3);
Uart0_SendString(string);
Led_On(4);
va_end(ap);
}
为什么执行到vspringf就直接报错了?
LED_On()是我测试的,点亮第几个Led
但是led只亮了两个,意思就是到了vspringf就报错重新执行了
什么情况?
为什么测试程序中的就能执行过?代码一样的
如果我用Uart0_SendString(string);直接发送数据是没有问题的,可以发送
vspringf用到了缓冲区,是不是得设置堆栈什么的??
启动代码中我没有做设置,请问一下启动代码中哪些是必须的代码?对于我这个程序来说 |