STM32(keil5)使用printf串口收发(微库法)、usb_printf实现USB虚拟串口输出

目录

步骤:

1.在Keil5中点击上侧的魔法棒,勾选 Use MicroLIB 使用微库。

2.在代码中添加 如下代码

3.在程序中即可通过指定的串口使用printf函数进行串口数据发送!


一、USART串口重定向:

1.在Keil5中点击上侧的魔法棒,勾选 Use MicroLIB 使用微库。

不打开编译会报错的!!!

2.在代码中添加 如下代码

#include "stdio.h"
int fputc(int ch, FILE *f)//printf
{
	HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1,0xffff);  //发送一个字节的数据到你希望的串口
	return (ch);
}

int fgetc(FILE * f)
{
  uint8_t ch = 0;
  HAL_UART_Receive(&huart1,&ch, 1, 0xffff);
  return ch;
}

更改代码中的&huart后的数字即可更改所需要输出的串口!例如&huart1、&huart2、&huart3……

3.在程序中即可通过指定的串口使用printf函数进行串口数据发送!

二、USB虚拟串口重定向:

Win10系统下不需要装任何驱动就能使用USB虚拟串口,但更低版本的系统如:Win7、Win8须要安装ST官方提供的VCP驱动:

https://www.st.com/en/development-tools/stsw-stm32102.html

 CubeMX配置:

程序:

#include "stdarg.h"
void usb_printf(const char *format, ...)                                             // usb_printf()重定向 
{
    va_list args;
    uint32_t length;

    va_start(args, format);
    length = vsnprintf((char *)UserTxBufferFS, APP_TX_DATA_SIZE, (char *)format, args);
    va_end(args);
    CDC_Transmit_FS(UserTxBufferFS, length);
}

使用时: 

CDC_Transmit_FS("hello\r\n",sizeof("hello\r\n"));
//或
usb_printf("hello\r\n");

可加入此句实现回环发送:

  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值