单片机学习小组
直播中

gvxiaot

13年用户 1152经验值
私信 关注

如何去实现STM32的串口重定向呢

UART是什么?

如何去实现STM32的串口重定向呢?

回帖(1)

辛太励

2022-2-18 15:37:22
简介

UART: 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称 作 UART。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信 号转成串行输出信号的芯片,UART 通常被集成于其他通讯接口的连结上。 USART:(Universal Synchronous/Asynchronous Receiver/Transmitter) 通用同步/异步串 行接收/发送器,USART 是一个全双工通用同步/异步串行收发模块,该接口是一个高度灵 活的串行通信设备
使用


BaudRate: 波特率, 波特率表示每秒钟传送的码元符号的个数,是衡量数据传送速率 的指标,它用单位时间内载波调制状态改变的次数来表示。对于串口最重要的就是波特 率, 常用的波特率为 115200 与 9600。
WrodLength: 数据长
Parity: 奇偶校验 -> 无、奇校验、偶校验
Stop: 停止位
以上的配置与需要通信双方完全配对


//发送数据
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
//接收数据
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
//发送中断
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t * pData, uint16_t Size);
//接收中断
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData , uint16_t Size);
//使用DMA发送
HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t * pData, uint16_t Size);
//使用DMA接收
HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t * pData, uint16_t Size);
//DMA暂停
HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart);
//DMA恢复
HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart);
//DMA停止
HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart);


串口重定向

可以使用printf 函数来将数据输出到PC端。

#include "stdio.h"
UART_HandleTypeDef huart1;
int fputc(int ch, FILE *f)
{
        HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 10);
        return ch;
}
MDK5 开发时若出现printf无法使用 在魔术棒里点击使用微库即可。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分