分享

博创串口printf函数的使用

 quasiceo 2016-07-17
当我们在调试代码时,通常需要将程序中的某个变量打印至PC机上,来判断我们的程序是否按预期的运行,printf函数很好的做到了这一点,它能直接以字符的方式输出变量名和变量的值,这样使输出的信息很直观;但printf函数在使用时,不仅仅要初始化串口,还需要其它的一些设置或者要调用其它的一些函数,否则printf函数将不能按我们想要的方式执行。

    由于不同的编译器stdio函数不一样,所以使用的方法也不一样。

下面以ADS博创实验为例说明

首先printf函数会调用底层函数fgetc

我们必须重写fgetc

int fputc(int ch, FILE *f)
{
 
 
 
 if(f == &__stdout) //for console out put e.g. printf
  CONSOLE_PUTC(ch);

 return ch;
}

然后对CONSOLE_PUTC解析,如下

#define CONSOLE_PUTC(ch) Uart_SendChar(CONSOLE, (ch))

#define CONSOLE  0

#define Uart_SendChar(nUart, ch) do{if((ch)=='\n') Uart_SendByte((nUart), '\r'); \
         Uart_SendByte((nUart), (ch)); }while(0)

 格式化部分还是使用了printf函数本身的内容。

这样可以把串口的函数做成库,整体黑盒使用。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多