网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> DSP >> 代码示例 >> TI DSP代码示例 >> C2000 >> 文章正文
  通过CPU串口输出调试DSP系统         ★★★ 【字体:
通过CPU串口输出调试DSP系统
作者:小编    文章来源:本站原创    点击数:    更新时间:2007-1-26    

最近作一个项目,是基于ARM CPU + TI DSP的一个平台,由于DSP并不具备串口,只能通过仿真器调试DSP程序,非常麻烦,所以想到借助CPU的串口输出能力来完成DSP的调试信息打印,通过这种方式输出调试信息速度更快,对DSP系统影响更小,更有利于调试。为了能够方便编程,所以这个输出功能使用了printf的形式,具体就是通过了C的变长参数来实现这个功能。

下边是源代码
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>

void vaprintf(const char * format, ...)
{
    va_list arg_ptr;
    char    tmpchar;
    int    tmpint;
    float    tmpfloat;
    char*    tmpstr;
    int    len;
    int    i,j;
   
    char    tmp[50] = {0};
   
    char result[100] = {0};
    int    loc = 0;
   
    len = strlen(format);
   
    va_start(arg_ptr, format);

    for(i=0;i<len;)
    {
        if(format[i] == '%')
        {
            switch(format[i+1])
            {
                case 'd':
                case 'i':
                    tmpint = va_arg(arg_ptr, int);
                    sprintf(tmp, "%d", tmpint);
                    strcat(result, tmp);
                    break;
                case 'u':
                    tmpint = va_arg(arg_ptr, int);
                    sprintf(tmp, "%u", tmpint);
                    strcat(result, tmp);
                    break;
                case 'x':
                    tmpint = va_arg(arg_ptr, int);
                    sprintf(tmp, "0x%x", tmpint);
                    strcat(result, tmp);
                    break;
                case 'X':
                    tmpint = va_arg(arg_ptr, int);
                    sprintf(tmp, "0X%X", tmpint);
                    strcat(result, tmp);
                    break;
                case 'c':
                    tmpchar = va_arg(arg_ptr, int);
                    sprintf(tmp, "%c", tmpchar);
                    strcat(result, tmp);
                    break;
                case 's':
                    tmpstr = (char *)va_arg(arg_ptr, char *);
                    strcat(result, tmpstr);
                    break;
                case 'f':
                    tmpfloat = va_arg(arg_ptr, double);
                    sprintf(tmp, "%.4f",tmpfloat);
                    strcat(result, tmp);
                    break;
                default:
                    sprintf(tmp, "[error format: %%%c]",format[i+1]);
                    strcat(result, tmp);
                    break;
            }
            i += 2;
            loc = strlen(result);
        }
        else
        {
            result[loc] = format[i];
            i ++;
            loc ++;
        }
    }
   
    va_end(arg_ptr);
   
    //printf("vaprintf::\t%s", result);
    /*
    此处代码将result的数据传送给CPU,CPU再负责将接收到的数据输出到串口即可
    */
}

               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    没有相关文章
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号