网上讲的添加printf()到程序中一般都是这样的(简要提一下):
1.配置GPIO ,USART,RCC 的Configuration
2.勾选usb micro lib
3.在程序中添加:(头文件需要添加#include <stdio.h>)
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
USART_SendData(USART1, (u8) ch);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
return ch;
}
很明显这个方法使用printf()只能输出到usart1,如果需要使用多个usart呢,肯定不能都是用printf()。
方法如下是继续是用usart2的printf()功能:
1.配置usart2的串口配置,gpio,rcc enable,跟上面类似
2.勾选usb micro lib,跟上面类似
3.添加头文件#include <stdarg.h>,编写USART2的printf函数:
void USART2_printf (char *fmt, ...)
{
char buffer[CMD_BUFFER_LEN+1]; // CMD_BUFFER_LEN长度自己定义吧
u8 i = 0;
va_list arg_ptr;
va_start(arg_ptr, fmt);
vsnprintf(buffer, CMD_BUFFER_LEN+1, fmt, arg_ptr);
while ((i < CMD_BUFFER_LEN) && buffer[i])
{
USART_SendData(USART2, (u8) buffer[i++]);
while (USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);
}
va_end(arg_ptr);
}
用法与printf类似,如int i=123;USART2_printf("%d",i);
如果需要使用USART3,USART4......的printf()函数自以此类推!
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
仿人型机器人能同时流利地说15种语言
DK3200A—uPSD3200设计与应用
线控技术重构汽车电子架构,电感式位置传感器成就标杆应用
Gartner:到2030年,80%企业软件和应用将为多模态,2024年尚不足10%
电子科技大学--嵌入式系统应用开发技术29
密闭容器液面精确定位报叫电路
EW8051 V7.20D集成开发环境(免费4K版本)
电子科技大学--嵌入式系统应用开发技术32
EBDSAM7S64开发板全套资料
HBM,爆炸式增长
电子科技大学--嵌入式系统应用开发技术31
上海半导体业内人士不看好特许的中国建厂计划
俄罗斯据称正在测试由英伟达 Jetson Orin 驱动的致命下一代人工智能无人机
为探索者赋能,RIGOL发布多通道波形发生及先进计算解决方案
论坛速度好爽, 适合灌水:)
中国核心IC领域精英共探大陆IC产业腾飞之道
DSP芯片的原理与开发应用(第2版)
瑞萨获得法国嵌入式 FPGA 技术许可
据报道英伟达计划在以色列建设价值数十亿美元的园区,将成为该国最大的园区
地下金属管道走向定位报叫电路
可变量程1.2~1000V点模式声光电压计电路
电子科技大学--嵌入式系统应用开发技术33
电子科技大学--嵌入式系统应用开发技术30
百亿估值:宇树科技计划在2025年底前递交IPO申请,腾讯阿里押注
可变量程1.2~1000V线模式声光电压计电路
DSock TCP_IP程序类库
静电探测声光报讯器电路
mr-library中的GPIO是怎么封装的?完整拆解+实战思路
中国信息产业结构调整加剧 六大瓶颈亟待突破
小容儿怎么还没来?!