STM32F1系单片机串口通信

目录

前言

串口简介

串口例程

软硬件设备要求

CUBEMX串口配置

串口相关函数解析

代码

效果

        本篇博客的主要作用是方便学校战队的低年级同学在学习培训过后能够随时将讲过的知识复习整理,故将部分内容整理为博客。除此之外,也希望与广大学习单片机的网友一起讨论进步。

前言

        在对单片机进行二次应用开发时,使用了STM32CUBEMX与KEIL5这两个软件,主要方便对于单片机某些功能的初始化。后面的内容都将基于这两个软件进行展开。 

串口简介

串行通信的分类:单工,半双工,全双工

单工:数据传输只支持数据在一个方向上传输
半双工:允许数据在两个方向上传输。但是在某一时刻只允许数据在一个方向上传输。
全双工:允许数据同时在两个方向上传输

同步通信和异步通信

同步通信:带时钟同步信号传输,比如: I2C SPI 通信接口。
异步通信:不带时钟同步信号。比如: UART

        同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流;异步通信时不要求接收端时钟和发送端时钟同步,发送端发送完一个字节后,可经过任意长的时间间隔再发送下一个字节。

        一般在使用串口的时候会选择USART,全称为Universal Synchronous/Asynchronous Receiver/Transmitter,中文名为通用同步/异步接收发送器,是一种非常强大的串行通信接口,它支持全双工的串行数据传输。

串口例程

目标:实现串口发送指定信号(比如说数特定的数字)驱动板子上LED灯的亮灭,并且在LED灯状态变化后在串口调试助手上返回一串提示字符串。

软硬件设备要求

硬件要求:STM32F103C8T6,无线串口收发器(WIFI)

软件要求:STM32CUBEMX,KEIL5,XCOM串口调试助手

CUBEMX串口配置

RCC

SYS

USART1

        Mode选择异步Asynchronous,波特率可以自己定但是要和XCOM串口调试助手保持一致才能通信。

GPIO

        配置一个连接着LED灯的输出高低电平的gpio口,用来控制LED灯的亮灭。

NVIC

        一定要记住在NVIC打开串口的全局中断。

时钟树

        配置完所有的东西之后就可以点击右上角生成代码了。

串口相关函数解析

HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

其中:

huart:UART句柄,参数需要我们填写使用的外设。

pData:指针指向数据储存缓冲区,用来储存接收到的数据。

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

其中:

huart:UART句柄,参数需要我们填写使用的外设。

pData:需要发送的数据缓冲区指针。

Size:发送数据的长度。

Timeout:发送超时的时间

代码

        代码中最重要的部分就是这个串口的回调函数,判断串口收到cmd之后将LED灯亮灭状态翻转。

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  if(huart->Instance == USART1){
		  if(cmd == 0xA1){
			  HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
			  HAL_UART_Transmit(&huart1, "Toggle!\r\n", sizeof("Toggle!\r\n"),10000);
		}
	HAL_UART_Receive_IT(&huart1, &cmd, 1);
	}
}

效果

1.LED灯的亮灭变化

2.XCOM串口调试助手在发出指定信号后窗口返回Toggle!

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值