单片机使用printf在串口输出字符串

把字符串使用printf输出的本质

实际上调用了putchar和串口字符输出函数,参考

以51单片机中的程序为例

在主函数中使用printf函数向串口发送字符串,当然保证已经定义好串口的波特率等参数

c 复制代码
while(1)
	{
			//uart0SendString("start....\n");
		printf("2rfwetgwg\n");
		mDelaymS(1000);
	}

下面是对putchar重定向(对函数重新定义),定义串口发送字符函数

c 复制代码
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下面的一条注意

相关推荐
爱睡觉的王宇昊1 小时前
二、【ESP32开发全栈指南:ESP32 GPIO深度使用】
单片机·嵌入式硬件
三三十二7 小时前
STM32实战:数字音频播放器开发指南
stm32·单片机·嵌入式硬件
想搞嵌入式的小白9 小时前
STM32外设问题总结
单片机·嵌入式硬件
木子单片机11 小时前
基于STM32语音识别柔光台灯
stm32·单片机·嵌入式硬件·proteus·语音识别·keil
广药门徒11 小时前
澄清 STM32 NVIC 中断优先级
单片机·嵌入式硬件
小禾苗_12 小时前
32单片机——窗口看门狗
单片机·嵌入式硬件
小灰灰搞电子12 小时前
单片机0-10V电压输出电路分享
单片机·嵌入式硬件
Moonnnn.13 小时前
【单片机期末】串行口循环缓冲区发送
笔记·单片机·嵌入式硬件·学习
lingzhilab14 小时前
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
stm32·嵌入式硬件·信息可视化
小智学长 | 嵌入式18 小时前
SOC-ESP32S3部分:26-物联网MQTT连云
单片机·物联网·esp32