STM32串口通信入门

本文介绍了串口通信基础知识,包括RS-232标准、TTL电平与RS232电平的区别,以及USB/TTL转232模块的工作原理。通过实战演示如何使用STM32CubeMX和Keil配置USART1,并实现串口数据传输控制和逻辑分析。
摘要由CSDN通过智能技术生成

一 实验目的

了解串口协议和RS-232标准,以及RS232电平与TTL电平的区别:此实验的目的是让您熟悉串口通信的基本概念和RS-232标准的工作原理。您将了解串口通信协议、电气特性以及RS-232电平和TTL电平之间的差异。

了解"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理:通过这个实验,您将了解USB/TTL转232模块的工作原理。以CH340芯片模块为例,您将学习如何将USB接口转换为串口接口,并理解CH340芯片的功能和工作原理。

使用STM32CubeMX和Keil配合HAL库(或标准库)方式设置USART1:这一部分的目的是让您熟悉使用STM32CubeMX和Keil配合HAL库(或标准库)的方法来设置STM32的USART1串口。您将学习如何设置波特率、停止位、校验位等串口参数,并使用串口发送数据。

STM32系统给上位机(win10)连续发送“hello windows!”:通过这个任务,您将学会如何在STM32上设置串口并发送连续的数据到上位机。您将使用串口助手工具在Windows 10上接收来自STM32的数据。

扩展功能:当上位机发送特定字符时,STM32暂停或继续发送数据:通过这个任务,您将学会如何在STM32上实现根据上位机发送的特定字符来控制串口数据的发送。当收到字符"#“时,STM32将停止发送数据,当收到字符”*"时,STM32将继续发送数据。

使用Keil的软件仿真逻辑分析仪功能观察串口输出波形并分析时序状态正确与否,计算波特率实际值:这一部分的目的是让您了解如何使用Keil的软件仿真逻辑分析仪功能来观察串口输出的波形,并通过分析时序状态来判断波特率设置是否正确。您将能够计算实际的波特率数值并与预期的波特率进行比较,以确保通信正常。

二实验前准备
下载并安装 STM32CubeMX,这是一个用于STM32微控制器配置的图形化工具。

安装 Keil MDK-ARM,Keil是一款常用的嵌入式开发环境。

USB转TTL插线
在这里插入图片描述

三 实验任务
1 了解串口协议和RS-232标准,以及RS232电平与TTL电平的区别;了解"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理。

2 安装 stm32CubeMX,配合Keil,使用HAL库(或标准库)方式,设置USART1 波特率为115200,1位停止位,无校验位,完成下列任务:

1)STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收。

2)在完成以上任务基础,继续扩展功能:当上位机给stm32发送一个字符“#”后,stm32暂停发送“hello windows!”;发送一个字符“*”后,stm32继续发送;

3) 在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察串口输出波形,并分析时序状态正确与否,计算波特率实际为多少。

四 实验内容

1 了解串口协议和RS-232标准,以及RS232电平与TTL电平的区别;了解"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理。

打开 STM32CubeMX。

创建一个新的工程。

选择适合的 STM32 微控制器型号。

在 “Pinout & Configuration” 选项卡中,配置 USART1 的引脚。根据需求选择合适的引脚,并将其设置为 USART1。

在 “Configuration” 选项卡中,选择 “USART1”。

配置波特率为 115200,停止位为 1,无校验位。

确认配置后,生成代码。

将生成的代码导入到 Keil 中。

2 安装 stm32CubeMX,配合Keil,使用HAL库(或标准库)方式,设置USART1 波特率为115200,1位停止位,无校验位,完成下列任务:

1) STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收。
串口时钟使能,GPIO 时钟使能。
设置引脚复用器映射:调用 GPIO_PinAFConfig 函数。
GPIO 初始化设置:要设置模式为复用功能。
串口参数初始化:设置波特率,字长,奇偶校验等参数。
开启中断并且初始化 NVIC,使能中断(如果需要开启中断才需要这个步骤)。
使能串口。
编写中断处理函数:函数名格式为 USARTxIRQHandler(x 对应串口号)。
使用高速外部时钟

在这里插入图片描述

设置USART
在这里插入图片描述

时钟设置

在这里插入图片描述

之后导出Keil文件即可
在main.c文件的主函数while循环中添加以下代码
HAL_UART_Transmit(&huart1, (uint8_t *)“hello windows!\r\n”, 16 , 0xffff);
HAL_Delay(1000);
在这里插入图片描述

2)在完成以上任务基础,继续扩展功能:当上位机给stm32发送一个字符“#”后,stm32暂停发送“hello windows!”;发送一个字符“*”后,stm32继续发送;
在这里插入图片描述

在实验一的基础上更改一下代码
在main中,改为一下代码:

uint8_t receivedChar;  
if (HAL_UART_Receive(&huart1, &receivedChar, 1, 0xffff) == HAL_OK) 
		{  
  switch (receivedChar) 
		{  
    case '#': // Pause sending message  
				HAL_UART_Transmit(&huart1, (uint8_t *)"stop", 16 , 0xffff);
      break;  
    case '*': // Resume sending message  
      HAL_UART_Transmit(&huart1, (uint8_t *)"hello windows!\r\n", 16 , 0xffff);  
      HAL_Delay(1000); //??1s  
      break;  
    default: // Continue sending message  
      HAL_UART_Transmit(&huart1, (uint8_t *)"hello windows!\r\n", 16 , 0xffff);  
      HAL_Delay(1000); //??1s  
      break;  
  }  
}  

2) 在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察串口输出波形,并分析时序状态正确与否,计算波特率实际为多少。

1、首先,设置options for target:
①Target页的设置:
在这里插入图片描述

Target界面中,选择跟正确的晶振大小,我使用的是8MHz的外部晶振。这个选
项在软件仿真中起到很 重要的作用,如果选择错误,那么波形一定是错误的,因
为时间不准确。此前,我增加默认为72MHz, 结果波形与预料的不一致,原本是
1s翻转一次的波形,显示出来的周期比预想的长得多。不过这个参数 只是在软件
仿真中起作用,当程序在硬件中运行并没有影响。
②Debug页的设置:
在这里插入图片描述

首先应该选择Use Simulator,其次是Run to main()选项打钩,然后分别修改上图中的 3 、4、5 、6, 注意, 3和5在STM32的单片机中应该都是固定的,但是4和6是跟你所采用的具体某一款单片机是对应的。 4和6应该是图1中STMicroelectronics 保持一致。

在这里插入图片描述

按照以上步骤设置点击OK,完成设置。
2、点击Debug,进入调试界面:

在这里插入图片描述

在这里插入图片描述

4、选择要观察的引脚:
①点击Setup Logic Analyzer

在这里插入图片描述

②添加要观察的引脚:

在这里插入图片描述

注意:图中选择的两个引脚分别是PA7,PB9 就要在文中打出PORTA.7 ,PORTB.9 PS:如果上述步骤1中的bug页中3、4 、5 、6没有正确设置,那么在添加引 脚的时候就会出现报错: Unknown Signal!
5、运行程序
在这里插入图片描述

6、观察波形,把光标移动到逻辑分析仪显示波形的区域,上下滚动滑轮,就
可以放大和缩小波形:
注意,波形出现需要时间,请耐心等待,不要认为是报错
在这里插入图片描述
在这里插入图片描述

五 实验总结
通过这次实验,我收获了以下几点心得体会:

串口通信是一种重要的数据交互方式,对于嵌入式系统和通信设备的开发非常重要。了解串口协议和标准可以帮助我们更好地理解和应用串口通信。

RS-232标准定义了串口通信的物理连接、电气特性和通信规则,而TTL电平是一种常用的逻辑电平表示方法。了解RS232电平与TTL电平的区别对于电平转换和串口连接的设计非常重要。

"USB/TTL转232"模块是一种常用的串口转USB模块,通过CH340芯片实现USB与串口之间的转换。了解这种模块的工作原理可以帮助我们更好地理解和使用串口转USB的功能。

使用stm32CubeMX和Keil配合HAL库(或标准库)进行配置和编程非常方便,能够快速实现串口通信功能。

扩展功能的实现可以增加系统的灵活性和交互性,通过接收上位机发送的特定字符来控制STM32的行为,实现更多的功能。

使用Keil的软件仿真逻辑分析仪功能可以帮助我们在没有示波器条件下观察串口输出波形,并分析时序状态的正确性。这是一种有效的调试和验证手段。

总的来说,这次实验让我更深入地了解了串口通信和相关技术,并通过实际操作验证了所学知识的正确性和实用性。我收获了很多经验和知识,在以后的嵌入式系统和通信设备开发中能够更加自信和熟练地应用串口通信。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值