第五篇 STM32CubeMX创建STM32工程之串口通信实验

本文详细介绍了如何在STM32CubeMX中配置USART1进行异步串口通信,包括设置中断、编写初始化和中断处理函数。还提供了基础的通信程序示例,以及后续可能的改进方向。
摘要由CSDN通过智能技术生成

第五篇 STM32CubeMX创建STM32工程之串口通信实验

一、串口配置

1.打开创建的stm32cubemx工程,选择connectivity→选择usart1→模式选择asynchronous异步模式,其他默认即可。
在这里插入图片描述
2.打开NVIC SETTINGS,使能串口中断
在这里插入图片描述
3.导出工程即可,串口通信有很多种模式和相关的参数,这里只介绍这一种,其他相关配置可以根据需求自行学习。也可以留言给小编。

二、通信程序

1.创建uart.c,uart.h两个文件,存放用户编写的串口程序,存放路径选择在工程下的hardware目录下。
在这里插入图片描述
2.uart.h添加如下代码

#ifndef __uart_H__
#define __uart_H__

#include "stm32f1xx_hal.h"  //引入hal库

void uart_init(void);       //定义串口初始化函数
void buff1_clear(void);     //定义数据清空函数
#endif

3.uart.c添加如下代码

#include "uart.h"
#include "usart.h"
#include "string.h"


uint8_t rx1_data[1];                                       //数据接收存放数组
void buff1_clear(void)                                     //数据清空函数
{
	memset(rx1_data, 0x00, 1);                               //将接收数组内数据清空为0
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)    //串口中断回调函数
{
	if(huart == &huart1)                                     //判断产生中断的串口号
	{
		HAL_UART_Transmit(&huart1, rx1_data, 1, 10);           //将接收数据发送出去
		buff1_clear();                                         //清空数据数组
		HAL_UART_Receive_IT(&huart1, rx1_data, 1);             //重新定义数据接收存放位置及长度
	}
}
void uart_init(void)                                       //串口初始化函数
{
	HAL_UART_Receive_IT(&huart1, rx1_data, 1);               //定义数据接收存放位置及长度
}

4.编译完成后下载到单片机,使用串口调试助手进行调试发送数据会被回传回来。
在这里插入图片描述
到此,串口发送接收已经完成,本程序使用的是中断接收,直接发送,后续将不断更新不同的收发方式,如有疑问可以给小编留言,程序编写方式均是个人习惯,读者可以根据个人习惯修改。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值