把字符串使用printf输出的本质
实际上调用了putchar和串口字符输出函数,参考
以51单片机中的程序为例
在主函数中使用printf函数向串口发送字符串,当然保证已经定义好串口的波特率等参数
while(1){//uart0SendString("start....\n");printf("2rfwetgwg\n");mDelaymS(1000);}
下面是对putchar重定向(对函数重新定义),定义串口发送字符函数
void UART0_SendByte(unsigned char Byte) //向串口发送字符
{SBUF = Byte; //字符放在寄存器中while (!TI); //发送完成TI = 0; //软件清零
}char putchar(char c){UART0_SendByte(c); //把字符发送到串口return '1'; //平常用不到输出字符的返回值,这里只是为了满足定义}
最终串口助手中显示的输出现象
keil中输出格式的不同
以c语言的标准来说,上图中的定义是有问题的,对字符串变量a定义了数字1。但只是从存储数据宽度来看char是8bit位,可以存0-255的无符号整型。只是在显示的时候有问题
下面是keil帮助文档中printf下面的一条注意