




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务9
用串口与计算机交换数据任务要求STM32的串口1作异步通信口,与计算机进行串行通信,计算机中用串口调试助手向STM32发送数据,STM32接收到数据后再将此数据用串口1发送至计算机中显示。其中,串口的波特率BR=115200bps,数据位8位,停止位1位。知识储备
1.串行通信的基本知识(1)串行通信中的数据传输方式1)串行通信的特点是,通信数据按数位的顺序一位一位地传输,每次只传输一位。2)串行通信中的数据传输方式有单工方式、半双工方式和全双工方式3种。如图所示。
1.串行通信的基本知识(2)串行通信中的通信方式1)同步通信其特点是,由同一个时钟信号控制发送器与接收器的工作,数据传输时,发送器与接收器同步工作。同步传送时,字符与字符之间没有间隙,也不用起始位和停止位,仅在要传送的数据块开始传送前,用同步字符SYNC来指示。如图所示。串行通信中有同步通信和异步通信2种通信方式。
1.串行通信的基本知识(2)串行通信中的通信方式2)异步通信其特点是,发送器与接收器用各自的时钟控制,数据是一帧一帧地传送的。且单片机与单片机、单片机与其他计算机之间一般是采用异步方式进行串行通信。
1.串行通信的基本知识(3)波特率BR数据传输时,每秒钟传输多少位二进制位叫波特率。波特率的单位是位/秒或者bps,它表示数据传输的快慢。在异步通信中,发送端与接收端的波特率误差一般要控制在3.5%以内,否则将会出现接收错位的现象。2.STM32F103中通用串行口的结构STM32F103单片机集成了USART1~USART3、UART4、UART5共5个通用的串行口。其中,USART1~USART3为通用的同步异步收发器;UART4、UART5为通用的异步发收器。在这5个通用的串行口中,USART1挂载在高速总线APB2上,其他4个挂载在APB1上,他们作异步收发器时的功能、结构、用法相同,在实际应用中通用串口主要是作异步发收器使用。其结构如右图所示:2.STM32F103中通用串行口的结构(1)外部引脚:通用串口的引脚主要有TX、RX、SW_RX、nRTS、nCTS、SCLK等6个引脚(2)数据接收与发送部分位于图的上部,由接收移位寄存器、接收数据寄存器(RDR)、发送数据寄存器(TDR)、发送移位寄存器等几部分组成系统管理总线)。(3)波特率控制器部分位于图的下部,主要由发送器波特率控制、接收器波特率控制、波特率寄存器BRR等几部分组成。3.通用串行口的引脚在STM32中,每个USART对外主要有5个引脚,分别为TX、RX、SCLK、nCTS、nRTS。STM32F103各串口的引脚分布:引脚USART1USART2USART3UART4UART5TXPA9/PB6PA2/PD5PB10/PD8/PC10PA0/PC10PC12RXPA10/PB7PA3/PD6PB11/PD9/PC11PA1/PC11PD2SCLKPA8PA4/PD7PB12/PD10/PC12--nCTSPA11PA0/PD3PB13/PD11--nRTSPA12PA1/PD4PB14/PD12--4.双机通电路TTL电平的双机通信电路是一种基本的串行通信电路。其特点是,单片机的串口不作电平转换,通信线路上传输信号的电平为单片机串口输出的TTL电平,通信传输距离最多不超过1.5m。当两个单片机应用系统相距很近常用这种通信电路,TTL电平的双机通信电路如右图所示。(1)TTL电平的双机通信电路4.双机通电路(2)RS-232C规范的双机通信RS-232C规范的主要特点是,串行通信的距离可达到15m,通信线上的电压为负逻辑关系,-5V~-15V为逻辑“1”,+5V~+15V为逻辑“0”,设备的串口一般用DB-9型连接器与外部通信线相接,其中DB-9型连接器的引脚排列如图所示,各引脚的定义如表所示。引脚电气符号传输方向功能1DCD输入载波检测2RXD输入接收数据3TXD输出发送数据4DTR输出数据终端准备好5GND
信号地线6DSR输入数据设备准备好7RTS输出请求发送8CTS输入清除发送9RI输入振铃指示4.双机通电路(2)RS-232C规范的双机通信电路两设备之间采用RS-232C规范进行简单的串行通信时,一般只需使用DB-9型连接器上的②脚(接收数据RXD)、③脚(发送数据TXD)和⑤脚(信号地GND)这3个引脚,串行通信的连接电路如图所示。4.双机通电路(2)RS-232C规范的双机通信电路单片机串行口的输入、输出电平为TTL电平,并不是RS-232C规范的电平,单片机与RS-232规范的串口进行串行通信时,需要将单片机的串口对外也设计成RS-232规范的串口。其方法是,在单片机的串口与串行连接线之间增加一个TTL电平与RS-232C电平的转换电路,其电路图如图所示。4.双机通电路(3)USB接口的双机通信电路USB口是目前计算机中标准的外设扩展口。它用一个4针的插头作为标准的插头,常用的USB连接器及其引脚分布如图所示以及各引脚的定义如表所示。引脚电气符号功能1VCC+5V电源2D-数据-3D+数据+4GND电源地4.双机通电路(3)USB接口的双机通信电路STM32的通用串行口不能直接挂接在计算机的USB口上与计算机进行串行通信。STM32与计算机的USB口进行串行通信的一般方法是,用USB线与计算机的USB口相接,USB线的另一端接CH340等USB转串口芯片,将计算机的USB口转换成TTL电平的串口,然后再按TTL电平的双机通信电路连接CH340与单片机的串口,单片机与计算机的USB口进行串行通信的连接电路如图所示。4.双机通电路(3)USB接口的双机通信电路CH340N是南京沁恒电子有限公司生产的USB口转串口芯片,其引脚分布如图所示,各引脚的功能如表所示。引脚号符号类型功能1UD+USB信号USB信号引脚,直接接USB总线的D+数据线2UD-USB信号USB信号引脚,直接接USB总线的D-数据线3GND电源电源地,直接与USB总线的地相接4输出MODEM联络输出信号,请求发送,低电平有效5VCC电源正电源端,需外接0.1µF的退耦电容6TXD输出串行数据输出端7RXD输入串行数据输入端8V3电源VCC接5V电源时此引脚外接0.01µF的退耦电容函数的用法(1)HAL_UART_Transmit()函数5.HAL库中串行通信的常用函数原型HAL_StatusTypeDefHAL_UART_Transmit(UART_HandleTypeDef*huart,uint8_t*pData,uint16_tSize,uint32_tTimeout);功能用查询方式发送数据。参数1huart:串口句柄。取值为huartx,x为串口的编号,取值为1~5。参数2pData:发送数据缓冲区的地址。参数3Size:发送数据的长度。参数4Timeout:最长的发送时间,单位为ms。返回值HAL的状态。5.HAL库中串行通信的常用函数原型HAL_StatusTypeDefHAL_UART_Receive(UART_HandleTypeDef*huart,uint8_t*pData,uint16_tSize,uint32_tTimeout);功能用查询方式接收若干数据并存放至指定的缓冲区中。参数1huart:串口句柄。取值为huartx,x为串口的编号,取值为1~5。参数2pData:数据接收缓冲区的地址。参数3Size:接收数据的长度。参数4Timeout:查询等待的最长时间,单位为ms。返回值HAL的状态。(2)HAL_UART_Receive()函数函数的用法函数的用法(3)HAL_UART_Receive_IT()函数5.HAL库中串行通信的常用函数原型HAL_StatusTypeDefHAL_UART_Receive_IT(UART_HandleTypeDef*huart,uint8_t*pData,uint16_tSize);功能指定串口接收缓冲区、接收数据的长度,并使能串口接收中断。参数1huart:串口句柄。取值为huartx,x为串口的编号,取值为1~5。参数2pData:数据接收缓冲区的地址。参数3Size:接收数据的长度。返回值HAL的状态。5.HAL库中串行通信的常用函数原型__weakvoidHAL_UART_RxCpltCallback(UART_HandleTypeDef*huart);功能串口接收中断的回调函数。若使能了串行接中断,则当TX引脚有数据输入时,STM32就会执行此函数。该函数的定义位于stm32f1xx_hal_uart.c文件中。参数huart:串口句柄。取值为huartx,x为串口的编号,取值为1~5。返回值无。(4)HAL_UART_RxCpltCallback()函数函数的用法5.HAL库中串行通信的常用函数在HAL中,HAL_UART_RxCpltCallback()函数为弱函数,内部无操作,需用户重新定义。重定义的内容为串口接收到数据后STM32所要处理的工作,重定义函数的框架结构如下:(4)HAL_UART_RxCpltCallback()函数1234567
8void HAL_UART_RxCpltCallback(UART_HandleTypeDef*huart){ if(huart==&huartx) //判断是否为串口x接收到数据 { /*串口x接收到数据的处理*/ } HAL_UART_Receive_IT(&huartx,pBuf,n); /*重新定义串口接收缓冲区、接收数据的个数,并再次使能接收中断*/}实现方法与步骤任务9的硬件电路:
1.搭建电路
2.生成串口1的初始化代码步骤(1)在“D:\ex”文件夹中新建Task9子文件夹。(2)启动STM32CubeMX,然后新建STM32CubeMX工程、配置SYS、RCC,其中,Debug模式选择SerialWire,HSE选择外部晶振。(3)配置通用串口1(USART1)第1步:显示串口配置窗口第2步:选择串口的模式第3步:设置串口的参数2.生成串口1的初始化代码
2.生成I2C接口的初始化代码步骤(4)开启串行接收中断第1步:使能串行中断第2步:设置USART1的中断优先级2.生成I2C接口的初始化代码步骤(5)配置时钟(6)配置工程(7)保存工程,然后生成Keil工程代码。
3.编写串行通信程序步骤(1)在main.c文件的“USERCODEBEGINPV”处定义用户全局变量aRxBuf,该变量用来保存串口所接收到的数据。
3.编写串行通信程序步骤(2)在main.c文件的USERCODEBEGIN2与USERCODEEND2之间(main()函数的初始化部分)添加串口接收中断初始化代码。3.编写串行通信程序【说明】图中的huart1是用STM32CubeMX生成Keil工程时系统自动定义的全局变量,它代表串口USART1,其定义位于usart.c文件中,如下图所示。
3.编写串行通信程序步骤(3)在main.c文件的USERCODEBEGIN4与USERCODEEND4之间(用户自定义函数区)重新定义串口接收回调函数。(4)配置Keil工程、并对程序进行编译、调试。
4.调试与下载程序步骤(1)用10P排线连接开发板与仿真器,再将仿真器插入计算机的USB口。(2)用一根USB线将开发板上的USB口与计算机的USB口相接。(3)按下电源开关SW1,给开板上电。(4)按照任务1中所介绍的方法查看USB转换串口所映射的串口号,如右图所示。(5)打开串口调试助手软件,然后在串口号下拉列表框中选择USB口所映射的串口号COM3,将波特率设置115200,数据位设置成8位,停止位设为1位,校验位设为None,流控制设为None
4.调试与下载程序步骤(6)在Keil中点击按钮,将程序下载至开发板上,并全速运行程序(7)在串口调试助手的“字符输入框”中输入所要发送的字符串“STM32”,再点击“发送”按钮,计算机就会以115200bps的波特率将字符串“STM32”发送至STM32中,STM32接收到计算机发来的数据后就会将所接收到的数据再发送到计算机中,并在串口调试助手的接收框中显示。本任务中串口调试助手中显示的接收的数据如图所示。实践总结与拓展
用printf()函数格式化串口输出printf()函数是C语言中常用的数据输出函数,其含义是向
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 垃圾分类试点协议书
- 企业清洁承包协议书
- 婚俗改革巡演协议书
- 申请暂缓就业协议书
- 运营车位转让协议书
- 民间协议书时效多久
- 客房转包协议书范本
- 自愿补偿修车协议书
- 装修验收申请协议书
- 老公外出喝酒协议书
- 土方回填施工记录表
- 旋挖钻机基坑支护工程施工隐患排查治理清单
- 空调维保质量保障体系及措施方案
- 平面向量在三角函数中的应用(学案)
- 中药的道地药材课件
- 幼儿园《3-6岁儿童学习与发展指南》健康领域知识试题及答案
- 国家职业技能标准 (2021年版) 婴幼儿发展引导员
- 幼儿园小班科学:《小鸡和小鸭》 PPT课件
- 伯努利方程-ppt课件
- 年产20吨阿齐沙坦原料药生产车间的设计和实现材料学专业
- 电子公章模板
评论
0/150
提交评论