基于STM32之UART串口通信协议(四)Printf发送

一、前言

1、简介

  前面在UART发送中已经讲解过如何调用HAL库的HAL_UART_Transmit函数来实现串口发送,而在调用这个函数来实现串口发送的话,但是在发送数据或者字符的时候,需要将数据或字符都先转换成字符并存在一个数组,或者分开发几次,这是会出现一些不便之处,不能像printf一样方便。

  所以这篇博客就说说如何在串口上实现用printf函数来发送,实现方法也非常简单。

2、UART简介

  嵌入式开发中,UART串口通信协议是我们常用的通信协议之一,全称叫做通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)。

3、准备工作

  按照UART详解中完成所有配置操作并生成代码,就可以开始下面操作。

二、代码部分

1、创建新的“.c”、“.h”文件(命名按照自己习惯)

基于STM32之UART串口通信协议(四)Printf发送

2、在“.h”文件中添加(最后需要空出一行)

 #ifndef _CORE_PRINTF_H_
#define _CORE_PRINTF_H_ #include "stdio.h"
#include "Usart.h" #endif

3、在“.c”文件中添加(最后需要空出一行)

 #include "Core_Printf.h"

 #if 1
#pragma import(__use_no_semihosting)
/* 标准库需要的支持函数 */
struct __FILE
{
int handle;
}; FILE __stdout;
/* 定义_sys_exit()以避免使用半主机模式 */
void _sys_exit(int x)
{
x = x;
}
/* 重定义fputc函数 */
int fputc(int ch, FILE *f)
{
/* 选择USART1发送 */
while((USART1->SR&0X40)==);//循环发送,直到发送完毕
USART1->DR = (uint8_t) ch;
return ch;
}
#endif

4、添加Include头文件(在需要调用到的函数中添加)

 /* USER CODE BEGIN Includes */
#include "Core_Printf.h"
/* USER CODE END Includes */

基于STM32之UART串口通信协议(四)Printf发送

5、整个main函数如下

 int main(void)
{
/* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */
SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART1_UART_Init();
/* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */
/* USER CODE BEGIN WHILE */
while ()
{
/* UART printf发送 */
printf("\r\n欢迎来到LLLIN000的博客!!");
/* 延迟1s */
HAL_Delay();
/* USER CODE END WHILE */ /* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}

6、编译、下载烧写

基于STM32之UART串口通信协议(四)Printf发送

7、实现效果

说明:

  按照上面的操作完成后,就可以在串口发送上实现printf的发送功能,非常方便使用。

基于STM32之UART串口通信协议(四)Printf发送

三、结尾

1、总结

  这篇博客补全了 未提及的Printf发送方式,我们可以将这两个代码文件保存下来,日后可以直接在其他项目调用即可。

2、回顾

1)UART详解

2)UART发送

3)UART接收

3、后续

待补充……

~

~

~

~

感谢阅读~

欢迎大家关注我的博客,一起分享嵌入式知识~

上一篇:语句(语句分类及if语句)


下一篇:使用bootstrap table 插件固定表头时 表头与表格内容无法对齐