【单片机】基于STM32的UART串口通信 您所在的位置:网站首页 距离传感器代码怎么写 【单片机】基于STM32的UART串口通信

【单片机】基于STM32的UART串口通信

2023-06-08 00:03| 来源: 网络整理| 查看: 265

基于STM32的UART串口通信

文章目录 基于STM32的UART串口通信一、前言1、简介2、UART简介 二、代码部分1、创建新的“.c”、“.h”文件(命名按照自己习惯)2、在“.h”文件中添加(最后需要空出一行)3、在“.c”文件中添加(最后需要空出一行)4、添加Include头文件(在需要调用到的函数中添加)5、整个main函数如下6、编译下载烧写即可实现printf函数功能

一、前言 1、简介

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

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

2、UART简介

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

二、代码部分 1、创建新的“.c”、“.h”文件(命名按照自己习惯) 2、在“.h”文件中添加(最后需要空出一行) 1 #ifndef _CORE_PRINTF_H_ 2 #define _CORE_PRINTF_H_ 3 4 #include "stdio.h" 5 #include "Usart.h" 6 7 8 9 10 11 12 #endif 3、在“.c”文件中添加(最后需要空出一行) 1 #include "Core_Printf.h" 2 3 4 5 #if 1 6 #pragma import(__use_no_semihosting) 7 /* 标准库需要的支持函数 */ 8 struct __FILE 9 { 10 int handle; 11 }; 12 13 FILE __stdout; 14 /* 定义_sys_exit()以避免使用半主机模式 */ 15 void _sys_exit(int x) 16 { 17 x = x; 18 } 19 /* 重定义fputc函数 */ 20 int fputc(int ch, FILE *f) 21 { 22 /* 选择USART1发送 */ 23 while((USART1->SR&0X40)==0);//循环发送,直到发送完毕 24 USART1->DR = (uint8_t) ch; 25 return ch; 26 } 27 #endif 4、添加Include头文件(在需要调用到的函数中添加) 1 /* USER CODE BEGIN Includes */ 2 #include "Core_Printf.h" 3 /* USER CODE END Includes */ 5、整个main函数如下 1 int main(void) 2 { 3 /* USER CODE BEGIN 1 */ 4 5 /* USER CODE END 1 */ 6 7 8 /* MCU Configuration--------------------------------------------------------*/ 9 10 /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ 11 HAL_Init(); 12 13 /* USER CODE BEGIN Init */ 14 15 /* USER CODE END Init */ 16 17 /* Configure the system clock */ 18 SystemClock_Config(); 19 20 /* USER CODE BEGIN SysInit */ 21 22 /* USER CODE END SysInit */ 23 24 /* Initialize all configured peripherals */ 25 MX_GPIO_Init(); 26 MX_USART1_UART_Init(); 27 /* USER CODE BEGIN 2 */ 28 29 /* USER CODE END 2 */ 30 31 /* Infinite loop */ 32 /* USER CODE BEGIN WHILE */ 33 while (1) 34 { 35 /* UART printf发送 */ 36 printf("\r\n欢迎来到LLLIN000的博客!!"); 37 /* 延迟1s */ 38 HAL_Delay(1000); 39 /* USER CODE END WHILE */ 40 41 /* USER CODE BEGIN 3 */ 42 } 43 /* USER CODE END 3 */ 44 } 6、编译下载烧写即可实现printf函数功能

在这里插入图片描述 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有