stm32中使用printf打印串口数据的实现原理
在c库中,printf()等输出流函数都是通过fputc()这个函数实现的,所以我们通过重映射的方式,修改这个函数的定义使它输出在stm32的寄存器中,便可以实现使用printf()函数在stm32串口上输出数据的功能。
盘点一下实现printf()函数打印字符串重定义到usart1的方法
方法一
1添加包含printf()函数的头文件:#include “stdio.h”
2.重写 stdio.h 头文件中的 int fputc(int ch, file *f) 函数
3.将该函数” int fputc(int ch, file *f) “放在main()函数能够调用到的文件中,keil-》options for target’xxx’-》target-》code generation,勾选use microlib
方法二
//加入以下代码,支持printf函数,而不需要选择use microlib
#if 1
#pragma import(__use_no_semihosting)
//标准库需要的支持函数
struct __file
{
int handle;
};
file __stdout;
//定义_sys_exit()以避免使用半主机模式
_sys_exit(int x)
{
x = x;
}
//重定义fputc函数
int fputc(int ch, file *f)
{
while( !(usart1-》sr & (1 《《 7)) );
usart_senddata(usart1,(uint8_t)ch);
return ch;
}
#endif
整合自:csdn尘埃世界、foresights
5g引助力物联网人工智能行业发展,产业产值将破10亿美元
单相二倍压整流电路图
变频器常见故障及其处理方法
电信云原生圆桌讨论 业界共议NFV未来演进方向
美国贸易代表办公室公布对华征税清单对电子板块影响有限
STM32中使用printf打印串口数据的实现原理及方法
企业级区块链解决方案的应用介绍
3D打印技术在医疗行业里取得了重大突破
英特尔宣布和阿里巴巴达成奥运战略合作,并推出Nervana神经网络推理处理器
LTC3810:高效率开关浪涌抑制器
为你的扬声器系统量身订做“近视眼镜”
深圳国际半导体展会:GMT高名铁
大数据改变企业的6种方式及应用综述
英飞凌如何助力中国数字化转型
荣耀Magic承载华为未来3-5年的科技检索,“致未来”主题为发布呐喊?
食品营养成分分析仪器的详细介绍
英创信息技术ARM9工控板远程抓拍图像应用介绍
TWS耳机与有线耳机相比,它的技术优势是什么
欧普照明欲收购老牌德国同业TRILUX 估值达5亿欧元
关于硬件仿真的OS类似于计算机系统的分析和介绍