失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > STM32的USART串口通信小程序

STM32的USART串口通信小程序

时间:2019-05-18 23:21:08

相关推荐

STM32的USART串口通信小程序

文章目录

前言一、串口协议和RS-232、485标准1.串口通信协议的概念2.常用协议2.1 RS-2322.2 RS-485 3.RS232、485电平与TTL电平的区别 二、STM32的USART串口通讯程序1.USART介绍2.操作连线3. STM32CubeMX配置环境4.串口代码5.烧录6.串口通讯 三、串口发送波形分析

前言

实验环境及仪器

1、stm32核心板103f一块2、usb转串口一块3、面包板一块,导线若干4、Keil5 5、STM32CubeMx6.野火多功能调试助手7.mcuisp

一、串口协议和RS-232、485标准

1.串口通信协议的概念

串口在嵌入式系统当中是一类重要的数据通信接口,其本质功能是作为 CPU 和串行设备间的编码转换器。当数据从 CPU 经过串行端口发送出去时,字节数据转换为串行的位;在接收数据时,串行的位被转换为字节数据。应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。典型地,串口用于 ASCII 码字符的传输。通信使用3根线完成:(1)地线,(2)发送数据线,(3)接收数据线。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:波特率是一个衡量通信速度的参数,它表示每秒钟传送的 bit 的个数;数据位是衡量通信中实际数据位的参数,当计算机发送一个信息包,标准的值是 5,7 和 8 位。奇偶校验位是串口通信中一种简单的检错方式,有四种检错方式——偶、奇、高和低,也可以没有校验位。

2.常用协议

2.1 RS-232

RS-232(ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。用于驱动和连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准的值。RS-232只限于PC串口和设备间点对点的通信。RS-232串口通信最远距离是50英尺。

从计算机串口截面图。RS-232针脚的功能:

数据:

TXD(pin 3):串口数据输出(Transmit Data)RXD(pin 2):串口数据输入(Receive Data)

握手:RTS(pin 7):发送数据请求(Request to Send)CTS(pin 8):清除发送(Clear to Send)DSR(pin 6):数据发送就绪(Data Send Ready)DCD(pin 1):数据载波检测(Data Carrier Detect)DTR(pin 4):数据终端就绪(Data Terminal Ready)

地线:GND(pin 5):地线

其它RI(pin 9):铃声指示

2.2 RS-485

RS-485(EIA-485标准)是RS-422的改进,因为它增加了设备的个数,从10个增加到32个,同时定义了在最大设备个数情况下的电气特性,以保证足够的信号电压。有了多个设备的能力,你可以使用一个单个RS-485口建立设备网络。出色抗噪和多设备能力,在工业应用中建立连向PC机的分布式设备网络、其他数据收集控制器、HMI或者其他操作时,串行连接会选择RS-485。RS-485是RS-422的超集,因此所有的RS-422设备可以被RS-485控制。RS-485可以用超过4000英尺的线进行串行通行。

DB-9 引脚连接

\ 1 2 3 4 5 /

\ 6 7 8 9 /

从计算机连出的线的截面。

RS-485的引脚的功能

数据:1(DATA-)2(DATA+)

地线:5

3.RS232、485电平与TTL电平的区别

二、STM32的USART串口通讯程序

1.USART介绍

用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。有别于 USART 还有一个UART(Universal Asynchronous Receiver and Transmitter),它是在 USART 基础上裁剪掉了同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是 UART。串行通信一般是以帧格式传输数据,即是一帧一帧的传输,每帧包含有起始信号、数据信息、停止信息,可能还有校验信息。USART 就是对这些传输参数有具体规定,当然也不是只有唯一一个参数值,很多参数值都可以自定义设置,只是增强它的兼容性。

USART功能框图

2.操作连线

USB转串口原理图:

选取接口为GND、RXD、TXD、3V3

STM32核心板选取端口

G、3.3、A9、A10

TXD:发送数据输出引脚

RXD:接收数据输出引脚

对应连线:

RXD-A9

TXD-A10

3V3-3.3v

GND-GND

3. STM32CubeMX配置环境

双击选择使用STM32F103C8芯片

选择USART1

Mode选择异步通信(Asynchronous) 波特率为115200,1位停止位,无校验位

中断设置

创建项目

生成独立的.c和.h文件

右上角GENERATE CODE创建工程文件

4.串口代码

在main函数中添加函数

int main(void){int i=0;uint8_t hello[20]="hello windows\n";/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 *//* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (i<2){HAL_UART_Transmit(&huart1,hello,20,100000);i++;//发两遍hello windows/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */}

我们要使用的是查询方式来进行串口通讯,我们需要使用HAL库中HAL_UART_Transmit()函数

5.烧录

注意烧录时芯片BOOTO置于1

6.串口通讯

打开串口调试助手,调试时芯片BOOTO要置0,也需要按RESET键

将参数配置好后,查看结果

三、串口发送波形分析

(1)Debug配置

(2)设置晶振频率

(3)选择查看的寄存器

(4)开始调试

点击run或者直接点击F5执行代码观察波形

如果觉得《STM32的USART串口通信小程序》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。