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

相关推荐
weixin_460783871 天前
STM32CubeMX配置ST25R3911B外设指南
stm32·单片机·嵌入式硬件
m0_555762901 天前
STM32H743 USB FS 内部 IP DMA 问题分析
stm32·嵌入式硬件·tcp/ip
学嵌入式的小杨同学1 天前
STM32 进阶封神之路(十八):RTC 实战全攻略 —— 时间设置 + 秒中断 + 串口更新 + 闹钟功能(库函数 + 代码落地)
c++·stm32·单片机·嵌入式硬件·mcu·架构·硬件架构
学嵌入式的小杨同学1 天前
STM32 进阶封神之路(十七):RTC 实时时钟深度解析 —— 从时钟源到寄存器配置(底层原理 + 面试重点)
c++·stm32·单片机·嵌入式硬件·mcu·硬件架构·pcb
炸膛坦客1 天前
单片机/C语言八股:(十四)const 关键字的作用(和 define 比呢?)
c语言·单片机
进击的横打1 天前
【车载开发系列】TAU定时器
单片机·嵌入式硬件
我是海飞1 天前
TinyUSB 移植到 STM32F407实现Audio+Midi+Cdc复合设备
stm32·单片机·嵌入式硬件
若风的雨1 天前
【deepseek】PCIe上电时序的详细
嵌入式硬件
’长谷深风‘1 天前
51单片机入门
c语言·单片机·嵌入式硬件·51单片机
张海森-1688201 天前
cv608_aac_8k_16bit_mono编码较慢,所以存为MP4,音频数据会对不齐视频数据?
单片机