【无标题】

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

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

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

2)在完成以上任务基础,继续扩展功能:当上位机给stm32发送一个字符“#”后,stm32暂停发送“hello windows!”;发送一个字符“*”后,stm32继续发送;
实验前准备
下载并安装 STM32CubeMX,这是一个用于STM32微控制器配置的图形化工具。

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

USB转TTL插线
实验内容

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);

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

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的软件仿真逻辑分析仪功能观察串口输出波形,并分析时序状态正确与否,计算波特率实际为多少。

观察波形,把光标移动到逻辑分析仪显示波形的区域,上下滚动滑轮,就
可以放大和缩小波形:
在这里插入图片描述
实验总结
本次实验了解串口协议和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的数据。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值