IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 串口发送通信---UART发送---STM32F4实现 -> 正文阅读

[嵌入式]串口发送通信---UART发送---STM32F4实现

串口发送程序配置过程(HAL库)

  1. 初始化串口相关参数,使能串口
HAL_UART_Init()
  1. 串口相关IO口配置,复用配置
在HAL_UART_MspInit中调用HAL_GPIO_Init函数
  1. 发送数据,并等待数据发送完毕
HAL_UART_Transmit()

具体代码

我们以STM32F4中的 PA9和PA10的UART1通信为例。

  1. 首先是初始化串口相关参数,使能串口,使用的函数是HAL_UART_Init(),我们定义一个函数来调用它,具体代码如下:
UART_HandleTypeDef usart_handler;

void usart1_init(void)
{
	
	
	usart_handler.Instance = USART1;						//指定用哪个串口
	usart_handler.Init.BaudRate = 115200;					//波特率设置
	usart_handler.Init.HwFlowCtl = UART_HWCONTROL_NONE;		//硬件流控制
	usart_handler.Init.Mode = UART_MODE_TX_RX;				//接收or发送or接收发送
	//usart_handler.Init.OverSampling = 
	usart_handler.Init.Parity = UART_PARITY_NONE;			//奇偶校验
	usart_handler.Init.StopBits = UART_STOPBITS_1;			//停止位
	usart_handler.Init.WordLength = UART_WORDLENGTH_8B;		//字长
	HAL_UART_Init(&usart_handler);
	
}

HAL_UART_Init函数要传入一个UART_HandleTypeDef 的指针,该指针指向一个结构体,我们要对其初始化。具体要初始化两个变量,一个变量是Instance ,指定使用哪个串口通信,另一个是Init,指明波特率、有无硬件控制流、模式、有无奇偶校验、有几个停止位以及每次传入的数据是几位。

  1. HAL_UART_Init初始完后,会自动调用HAL_UART_MspInit函数,在这个函数中,我们进行GPIO口的初始化以及使能,代码如下
//HAL_UART_Init会自动调用HAL_UART_MspInit

void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{
	if(huart->Instance == USART1)
	{
		GPIO_InitTypeDef GPIO_Initure;
		__HAL_RCC_GPIOA_CLK_ENABLE();
		__HAL_RCC_USART1_CLK_ENABLE();
		//GPIO口初始化就配置好了复用功能
		GPIO_Initure.Pin=GPIO_PIN_9;			//PA9
		GPIO_Initure.Mode=GPIO_MODE_AF_PP;		//复用推挽输出
		GPIO_Initure.Pull=GPIO_PULLUP;			//上拉
		GPIO_Initure.Speed=GPIO_SPEED_FAST;		//高速
		GPIO_Initure.Alternate=GPIO_AF7_USART1;	//复用为USART1
		HAL_GPIO_Init(GPIOA,&GPIO_Initure);	   	//初始化PA9
		GPIO_Initure.Pin=GPIO_PIN_10;			//PA10
		HAL_GPIO_Init(GPIOA,&GPIO_Initure);	   	//初始化PA10
	}
	
}

因为要复用引脚,所以在配置GPIO口时,我们要配置Alternate变量,指明要复用的引脚功能,即GPIO_AF7_USART1,PA9和PA10作为USART1的引脚。
HAL_UART_MspInit每个HAL_UART_Init都会调用,我们不知道是哪一个串口调用的,所以我们要根据Instance 来判断是哪一个串口调用的。

  1. 两个函数配置完成后,我们就可以发送数据了,我们在main函数里面调用HAL_UART_Transmit来发送数据,具体代码为
int main(void)
{
	u8 buff[] = "send to rec";
	
	HAL_Init();
	Stm32_Clock_Init(360,25,2,8);
	delay_init(180);
	usart1_init();
	while(1)                                            
	{
		HAL_UART_Transmit(&usart_handler,buff,sizeof(buff),1000);
		delay_ms(300);
	}
	
}

HAL_UART_Transmit第一个参数指明用哪个串口来发送数据,第二个参数是指向数据的指针,第三个参数是数据的大小,第四个是 Timeout duration 。

结果

在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-17 12:54:59  更:2021-11-17 12:55:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:20:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码