文章目录
一、寄存器与固件库
基于寄存器与基于固件库的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停止发送。
2、实验环境
1、开发板:野火指南者(STM32F103)
2、代码编写工具:KEIL5
3、STM32库版本:STM32F10x_StdPeriph_Lib_V3.5.0
5、使用到的串口:USART1
6、硬件原理图:
3、实验准备
(1)因为本实验用到的开发板是野火指南者(STM32F103),因此首先在野火产品资料链接:https://ebf-products.readthedocs.io/zh_CN/latest/中下载好野火STM32F103指南