单片机使用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下面的一条注意

相关推荐
LuDvei2 小时前
STM32串行通信DMA的使用
stm32·单片机·嵌入式硬件
2401_854151552 小时前
STM32 I2C 通信 HAL 库踩坑记录
stm32·单片机·嵌入式硬件
蒙塔基的钢蛋儿5 小时前
记一次 STM32H723 硬件 Bug 排查:写个 ETH 寄存器,SDRAM 数据飞了
stm32·嵌入式硬件·bug
熊猫_豆豆5 小时前
STM32F103R6 PROTEUS9.0 FREERTOS实现双任务流水灯
stm32·单片机·嵌入式硬件
csg11076 小时前
电路板抗干扰:电容、电感和弧线布线的应用
单片机·嵌入式硬件·物联网·自动化
piaoyiren6 小时前
普中A6 静态数码管显示 数字
单片机·嵌入式·普中a6
Olivia051405147 小时前
共模电感在DC-DC变换器中的自谐振频率(SRF)对EMI滤波性能的影响
单片机·嵌入式硬件
Yunhoa7 小时前
51单片机(1)
单片机·嵌入式硬件·51单片机
茯苓gao10 小时前
嵌入式开发笔记:工业机器人通信协议深度解析——从现场总线到工业以太网
笔记·嵌入式硬件·学习·机器人·信息与通信
hongmai66688810 小时前
GD5F1GM7REYIG存储芯片:1Gb SPI NAND Flash助力国产设备高效运行
网络·单片机·嵌入式硬件·物联网·智能家居