printf在stm32中的串口重映射

本文介绍了如何在STM32单片机上实现printf函数的重定向,通过串口发送数据。重点讲解了使用回调函数处理串口信息的方法,对比了普通函数与回调函数在中断处理上的差异,并提供了参考资源。
摘要由CSDN通过智能技术生成

串口发送函数

HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)

printf函数重定向

/**** usart.h ****/
/**/

typedef struct __FILE FILE;

/**** usart.c ****/
/**/
//重映射fputc
int fputc(int ch,FILE *f)
{
	uint8_t temp[1] = {ch};
	HAL_UART_Transmit(&huart2, temp, 1, 2);
	return ch;

}

使用回调函数来处理串口收到的信息

 

普通函数与回调函数的区别:就是ST将中断封装,给使用者的API,就是标准库的中断函数

对普通函数的调用 调用程序发出对普通函数的调用后,程序执行立即转向被调用函数执行,直到被调用函数执行完毕后,再返回调用程序继续执行。从发出调用的程序的角度看,这个过程为“调用–>等待被调用函数执行完毕–>继续执行”
对回调函数调用 调用程序发出对回调函数的调用后,不等函数执行完毕,立即返回并继续执行。这样,调用程序和被调用函数同时在执行。当被调函数执行完毕后,被调函数会反过来调用某个事先指定函数࿰
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值