自己写了个printf函数 如下
void Printf(const char* fmt,...)
{
va_list ap;
char string[100];
va_start(ap,fmt);
vsprintf(string,fmt,ap);
va_end(ap);
NPI_WriteTransport(string,strlen(string));
}
例程里面的串口发送函数如下
void SerialPrintValue(char *title, uint16 value, uint8 format)
{
uint8 tmpLen;
uint8 buf[256];
uint32 err;
tmpLen = (uint8)osal_strlen( (char*)title );
osal_memcpy( buf, title, tmpLen );
buf[tmpLen] = ' ';
err = (uint32)(value);
_ltoa( err, &buf[tmpLen+1], format );
SerialPrintString(buf);
}
正常调用没问题。
现在想实现在串口回调 里面给任务发送消息 然后去事件里面的消息里面解析 将数据打印出来,
1:串口回调函数
uartMsg_t *p_uartMsg;
p_uartMsg=(uartMsg_t *)osal_msg_allocate(sizeof(uartMsg_t));
if(p_uartMsg)
{
p_uartMsg->hdr.event=king_come;
p_uartMsg->hdr.len=(uint8)numBytes;
memcpy(p_uartMsg->hdr.data,pktBuffer,numBytes);
osal_msg_send(11,(uint8 *)p_uartMsg);
}
2:在消息接收处理里面
static void SimpleOsal_ProcessOSALMsg(osal_event_hdr_t *pMsg)
{
//
switch ( pMsg->event )
{
case KEY_CHANGE:
simpleOsal_HandleKeys( ((keyChange_t *)pMsg)->state, ((keyChange_t *)pMsg)->keys );
break;
case 0xfc:
{
//Printf("len=%d\r\n",pMsg->len);
SerialPrintValue("22", pMsg->len, 10);
问题1:调用Printf的时候 打印出来的数字不对 总是0x94
但是调用SerialPrintValue 函数没问题 求解? 难度是堆栈太小导致出错?