STM32的USART串口通讯

文章目录

  • 一、寄存器与固件库
    • 1、基于寄存器方式的开发特点
    • 2、基于固态库方式的开发特点
  • 二、 STM32的USART串口通讯程序
    • STM32 的 USART 简介
    • 1、实验要求
    • 2、实验环境
    • 3、实验准备
    • 4、实验代码
    • 5、程序烧录
    • 6、实验结果
  • 三、总结

一、寄存器与固件库

基于寄存器与基于固件库的stm32 LED流水灯例子的编程方式差异比较:

1、基于寄存器方式的开发特点

(1)具体参数更直观
(2)程序运行占用资源少
(3)寄存器更贴近底层,对外设的工作原理和运行机理会有更深的理解
(4)寄存器版式直接对内部寄存器进行操作,需要我们对寄存器非常熟悉

它的缺陷也不可忽视,如下:
(1)开发速度慢
(2)程序可读性差
(3) 维护复杂
上述缺陷直接影响了开发效率,程序维护成本,交流成本。通常情况下,只有在频繁调用的中断服务函数时利用直接配置寄存器的方式

2、基于固态库方式的开发特点

基于固态库方式开发,也就是直接调用库函数,特点是:
(1)外设交流方便
(2)查错简单,易于理解,资料多
(3)对主控制器STM32上手简单
(4) 库函数–是用ST提供的库函数开发,有函数的集合,不需要与寄存器直接打教导,提供用户函数调用的API

二、 STM32的USART串口通讯程序

串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。

STM32 的 USART 简介

1、通用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。有别于 USART 还有一个UART(Universal Asynchronous Receiver and Transmitter),它是在 USART 基础上裁剪掉了同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是 UART。

2、串行通信一般是以帧格式传输数据,即是一帧一帧的传输,每帧包含有起始信号、数据信息、停止信息,可能还有校验信息。USART 就是对这些传输参数有具体规定,当然也不是只有唯一一个参数值,很多参数值都可以自定义设置,只是增强它的兼容性。

3、USART 在 STM32 应用最多莫过于 “打印”程序信息,一般在硬件设计时都会预留一个USART通信接口连接电脑,用于在调试程序是可以把一些调试信息“打印”在电脑端的串口调试助手工具上,从而了解程序运行是否正确、如果出错哪具体哪里出错等等。

4、USART接发通信过程:
发送数据过程:数据先从PWDATA总线写入到发送数据寄存器(TDR),然后将数据一位一位的移到发送移位寄存器中,接着通过TX引脚发送出去。
接收数据过程:数据从RX引脚发到接收移位寄存器,接着将数据放到接收数据寄存器(ADR)中,最后CPU或者DMA进行读操作。

1、实验要求

(1)设置波特率为115200,1位停止位,无校验位。

(2)STM32系统给上位机(win10)连续发送“hello windows!”,上位机接收程序可以使用“串口调试助手“,也可自己编程。

(3)当上位机给stm32发送“stop,stm32”后,stm32停止发送。

参考:
STM32串口通信USART学习笔记

2、实验环境

1、开发板:野火指南者(STM32F103)

2、代码编写工具:KEIL5

3、STM32库版本:STM32F10x_StdPeriph_Lib_V3.5.0

5、使用到的串口:USART1

6、硬件原理图:
STM32的USART串口通讯_第1张图片

3、实验准备

(1)因为本实验用到的开发板是野火指南者(STM32F103),因此首先在野火产品资料链接:https://ebf-products.readthedocs.io/zh_CN/latest/中下载好野火STM32F103指南者开

你可能感兴趣的:(嵌入式,stm32)