2-STM32串口通信实验 PPT课件
STM32例程串口实验
实验要求∙使用开发板上的串口向PC发送信息∙PC通过串口向开发板发送数据,CPU在接收到后,确认信息,并通过串口返回数据例如:开发板先发送一个字符‘c’,然后PC发送一个字符‘a’,开发板接收到后,再发送一个字符‘b’[编辑] 实验目的∙学习和掌握STM32的USART模块的工作原理和使用方法∙学习和掌握USART固件库的使用∙掌握串口中断的使用方法[编辑] 实验分析硬件分析:USART的工作原理软件分析:USART固件库USART实例[编辑] 开发板原理图设计MAX3232与主芯片的连接[编辑] 硬件知识点详见STM32F10XXX英文版参考手册RM0008-Reference Manual[编辑] USART通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。
USART利用小数波特率发生器提供宽范围的波特率选择。
它支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。
它还允许多处理器通信。
使用多缓冲器配置的DMA方式,可以实现高速数据通信。
(表) USART模式支持[编辑] USART内部结构[编辑] 引脚定义任何USART双向通信至少需要两个引脚:接收数据输入(RX)和发送数据输出(TX)。
∙RX:接收数据输入。
通过过采样技术来区别数据和噪音,从而恢复数据。
∙TX:发送数据输出。
当发送器被禁止时,输出引脚恢复到它的I/O端口配置。
当发送器被激活,并且不发送数据时,TX引脚处于高电平。
在单线和智能卡模式里,此I/O口被同时用于数据的发送和接收。
在同步模式中需要下列引脚:∙CK:发送器时钟输出。
此引脚输出用于同步传输的时钟, (在起始位和停止位上没有时钟脉冲,软件可选地,可以在最后一个数据位送出一个时钟脉冲)。
数据可以在RX上同步被接收。
串行口通信讲解ppt课件
计数速率为fosc/12,当C/=1时,计数速率为外部输入时钟频率。
MCS-51串行口的波特率
方式1和方式3
实际上,当定时器T1做波特率发生器使用时,通常是工作在模式2 下,即作为一个自动重装载的8位定时器,此时TL1作计数用,自动
。
重装载的值在TH1内。设计数的预置值(初始值)为X,那么每过 256-X个机器周期,定时器溢出一次。为了避免溢出而产生不必要的 中断,此时应禁止T1中断。溢出周期为12×(256-X)/fosc.溢出率 为溢出周期的倒数。
。 2) 乙机接收
编程使乙机接收甲机发送过来的数据块,并存入片内50H~6FH单 元。接收过程要求判断RB8,若出错置F0标志为1,正确则置F0标志 为0,然后返回。
在进行双机通信时,两机应采用相同的工作方式和波特率。
RS-232C串行通信总线标准及其 接口
RS-232C的电气标准采用负逻辑,即: 逻辑“0”:+5V~+15V 逻辑“1”:-5V~-15V 因此,RS-232C不能和TTL电平直接相连,否则将使TTL电路烧坏, 实际应用时必须注意。RS-232C和TTL电平之间必须进行电平转换,常用 的电平转换集成电路MAX232。
接收时,REN置1,允许接收,串行口采样RXD,当采样由1到 0跳变时,确认是起始位“0”,开始接收一帧数据。当RI=0,且 停止位为1或SM2=0时,停止位进入RB8位,同时置中断标志RI; 否则信息将丢失。所以,采用方式1接收时,应先用软件清除RI 或SM2标志。
MCS-51为波特率。 波特率为每秒钟传送二进制数码的位数,也叫比特数, 单位为b/s,即位/秒。波特率用于表征数据传输的速度, 波特率越高,数据传输速度越快。通常,异步通信的波 特率为50~9600b/s。
串口通信原理及操作流程PPT(共60张).ppt
模拟 电子开
关
模拟 电子开
关
合成
频带信 号输出
1 01
1.5串行通信的错误校验
1、奇偶校验 在发送数据时,数据位尾随的1位为奇偶校验位(1或0)。 奇校验时,数据中“1”的个数与校验位“1”的个数之和应 为奇数;偶校验时,数据中“1”的个数与校验位“1”的个 数之和应为偶数。接收字符时,对“1”的个数进行校验,若 发现不一致,则说明传输数据过程中出现了差错。 2、代码和校验 代码和校验是发送方将所发数据块求和(或各字节异或), 产生一个字节的校验字符(校验和)附加到数据块末尾。接 收方接收数据同时对数据块(除校验字节外)求和(或各字 节异或),将所得结果与发送方的“校验和”进行比较,相 符则无差错,否则即认为传送过程中出现了差错。 3、循环冗余校验 这种校验是通过某种数学运算实现有效信息与校验位之间的 循环校验,常用于对磁盘信息的传输、存储区完整性校验等 。这种校验方法纠错能力强,广泛应用于同步通信中。
? 典型的面向位的同步协议如ISO的高级数据链路控制规程 HDLC和IBM的同步数据链路控制规程SDLC。
? 同步通信的特点是以特定的位组合“01111110”作为帧 的开始和结束标志,所传输的一帧数据可以是任意位。所以 传输的效率较高,但实现的硬件设备比异步通信复杂。
1.3 串行通信的传输方向
①单工
? RS-422A传输速率(90Kbps)时,传输距离可达1200米。
2.3 RS-485 接口
? RS-485是RS-422A的变型
:RS-422A用于全双工,而
RS-485则还可用于半双工。
RS-485是一种多发送器标准
,在通信线路上最多可以使用
TTL
TTL 32 对差分驱动器/接收器。
《单片机串口通信》课件
本课件将介绍单片机串口通信的概述、原理、接口和程序设计。同时还包括 实战应用、常见问题和解决方案以及参考资料。让我们一起探索这个令人着 迷的主题吧!
概述
串口通信是一种用于在计算机和设备之间传输数据的技术。本节将讨论串口通信的定义、优势以及应用领域。
串口通信原理
串口通信基于UART通信协议,通过发送和接收电平来实现数据传输。本节还 将介绍TTL电平和RS232电平之间的转换。
单片机串口通信接口
单片机的串口通信接口包括引脚定义、数据格式和波特率设置。在本节中, 我们将深入了解这些重要的概念。
单片机串口通信程序设计
学习单片机串口通信程序设计,我们需要了解串口的初始化、发送数据和接 收数据的函数。
实战应用
在这一部分,我们将探索单片机与PC串口通信以及单片机与蓝牙模块串口通信的实际应用案例。
常见问题与解决方案
在串口通信过程中,可能会遇到各种错误。本节将介绍常见问题的类型和排查解决方案,帮助大家更好地应对 串口通信问题。
总结
在本节中,我们将总结串口通信的优点和不足,并展望未来的发展方向。
参考资料
如果您对串口通信感兴趣,以下是一些相关文献、网站
stm32串口无线传输设计 课件
stm32串口无线传输设计课件
针对STM32串口无线传输设计的课件,我们可以从以下几个方
面展开讨论:
1. 介绍STM32单片机及其串口通信功能,课件可以首先介绍STM32单片机的基本特性和硬件结构,以及其强大的串口通信功能。
可以讲解STM32的串口通信模块,如USART、UART等,以及它们在
嵌入式系统中的应用。
2. 介绍无线传输技术,课件可以对无线传输技术进行介绍,包
括常见的无线通信标准和协议,如Wi-Fi、蓝牙(Bluetooth)、Zigbee等,以及它们的特点、应用场景和优缺点。
3. STM32与无线模块的接口设计,课件可以详细介绍如何在STM32单片机和无线模块之间建立通信连接,包括硬件接口设计和
软件通信协议的制定。
可以讲解如何选择合适的无线模块,以及如
何进行串口通信的配置和数据传输。
4. 实际应用案例分析,课件可以通过实际的应用案例来展示STM32串口无线传输设计的具体实现,例如基于STM32的无线传感
器网络、远程控制系统等,以及相关的设计思路、技术难点和解决方案。
5. 实验操作指导,课件可以提供相应的实验操作指导,包括硬件连接示意图、软件编程实例等,帮助学生更好地理解和掌握
STM32串口无线传输设计的实际操作技能。
通过以上多个方面的内容,可以使课件内容更加全面和丰富,有助于学生全面理解STM32串口无线传输设计的相关知识和技术。
STM32串口通信
STM32串口通信一、串口1.串口概述串口是单片机中最常用也是最简单的一种通信方式通信:两个或两个以上的设备进行数据交换串口是用于两个设备之间的异步全双工通信异步——》两个设备不需要共时钟全双工——》两个设备之间服务于数据交换的“线”有两根Tx:数据发送端,用于发送数据Rx:数据接收端,用于接收数据在使用串口进行通信时,要求通信双方必须在“同频道” “同频道” =》相同的通信协议,同时双方需要共地,也就是GND相连串口(USART)约定:通信时数据必须以“帧”的形式传递串口的一帧数据包括:起始位 + 数据位 + 校验位 + 停止位其中:1)起始位:固定是1个周期的低电平信号2)数据位:可由通信双方自行约定是 5 ~ 9 bits3)校验位:串口采用的是奇偶校验,可由通信双方自行约定4)停止位:可选的 0.5 ~ 2 个周期的高电平同时,为了同步通信双发的收发速度,还需要约定每秒钟传输的数据帧的数量,称为波特率,典型波特率有9600 115200 57600 ……2.STM32F4xx 串口控制器单片机中通常会集成有串口的控制器,用户通常只需要通过软件配置串口控制器就可以利用串口进行通信了!!SR:状态寄存器,每个比特位标志了串口控制器中不同的状态变化RXNE:接收数据寄存器非空标志1表示RDR寄存器中有数据,可以读取,0表示RDR寄存器中没有数据TXE:发送数据寄存器为空标志1表示TDR寄存器中没有数据,可以发送,0表示TDR寄存器中有数据不能发送(覆盖上一次发送的数据)3.STM32F4xx 中的串口实现以STM32F4xx USART1(串口1)与 PC通信为例串口转USB原理图串口原理图也就是说,当UART1的跳线帽接1-3 和2-4时,STM32的USART1 与 PC机就可以通过USB线通信(必须烧写或做调试串口)配置USART1作为调试串口与PC通信1)配置Rx和Tx引脚STM32中串口的Tx和Rx是由GPIO复用功能而来PA9 –>USART1_TxPA10 –> USART1_RXGPIO_InitTypeDef GPIO_InitStruct;/* 配置GPIO引脚复用为Rx Tx */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GP IOA,ENABLE); //使能GPIOA组时钟GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;//复用功能模式GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz; GPIO_Init(GPIOA,&GPIO_InitStruct);GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); //PA9 -> USART1_TxGPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);//PA10-> USART1_Rx2)配置串口初始化/* 配置USART1 */RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //使能USART1的时钟(USART1 在APB2总线上)USART_ART_BaudRate = 9600; //指定波特率USART_ART_WordLength=USART_WordLength_8b; //指定数据位长度(通常是8bits) USART_ART_Parity = USART_Parity_No; //指定校验方式(通常不校验)USART_ART_StopBits = USART_StopBits_1; //指定停止位(通常是1个停止)USART_ART_Mode = USART_Mode_Tx|USART_Mode_Rx; //指定收发模式USART_ART_HardwareFlowContr ol = USART_HardwareFlowControl_None;//指定硬件控制流(通常不要)USART_Init(USART1,&USART_InitStruct);/* 开启串口,就可以开始通信 */USART_Cmd(USART1,ENABLE);3)串口收发函数//通过USART1发送1个字节void usart1_send_byte(char data)//USART_GetFlagStatus 用来获取串口SR寄存器中的指定标志位//获取TXE标志,判断其是否被设置(SET)while(USART_GetFlagStatus(USART1,USART_F LAG_TXE) != SET);//USART_SendData 用来通过指定串口发送数据USART_SendData(USART1,data);}char usart1_recv_byte(void){char ch = 0;while(USART_GetFlagStatus(USART1,USART_F LAG_RXNE) != SET);ch = USART_ReceiveData(USART1);return ch;}测试代码:char str[] = "HELLO";int i = 0;led_init();uart1_init();/* Infinite loop */while(1){GPIO_ResetBits(GPIOF,GPIO_Pin_9);Delay(1000);GPIO_SetBits(GPIOF,GPIO_Pin_9);Delay(1000);for(i=0;i<7;i++){usart1_send_byte(str[i]);}}由于USART1的跳线帽接1-3和2-4,也就是通过USART1发送的数据经由USB线发送给了PC机此时,在PC上运行串口调试助手,则可以接收这些数据4)串口接收中断中断是指:当某件紧急的事件产生后,会打断CPU的正常执行顺序,转去执行中断处理程序,当中断处理程序执行完后,又回到原来被打断的位置继续执行的过程,被称为中断在串口应用中,我们不知道对方什么时候会发数据过来所以接收函数,并不适用 =》可能导致程序一直阻塞在while因此,我们需要借助中断来实现串口的数据接收串口中断配置:/* 配置串口1的接收中断*/ USART_ITConfig(USART1,USART_IT_RXNE,ENABL E);//USART_IT_RXNE接收数据寄存器不为空时产生中断配置了中断后,必须要配置 NVIC(中断控制器)/* 配置NVIC中断控制器 */NVIC_InitTypeDef NVIC_InitStruct;NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn; //指定中断通道 xxx_IRQnNVIC_InitStruct.NVIC_IRQChannelPreemption Priority = 2;//抢占优先级NVIC_InitStruct.NVIC_IRQChannelSubPriorit y = 2;//子优先级NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStruct);上述配置完成后,一旦对法发送数据到STM32就会触发串口1的中断此时还需要一个串口1的中断处理函数char ch = 0;void USART1_IRQHandler(void){//判断是由RXNE接收数据寄存器非空产生的中断if(USART_GetITStatus(USART1,USART_IT_RXN E) == SET) {ch = USART_ReceiveData(USART1); //接收1个字节的数据USART_ClearITPendingBit(USART1,USART_IT_ RXNE);//清除中断标志}}。
《串行通信》PPT课件
范例如图:
某 帧数据
…… …… 0 1 0 1 0 1 0 1 0 0 1
起
数据位
偶停
始
校止
位
验位
位
…… ……
精选课件ppt
23
1.4 UART的应用
UART一般可以应用到如下一些场合:
1.芯片间的近距离通信 2.与PC机之间的通信 3.模块之间的远距离通信
精选课件ppt
24
1、芯片间的近距离通信
精选课件ppt
7
1.5 串行通信分类
串行通信标准有许多,下面仅对部分常见的串行通信标
准进行简单介绍 。
串行通信标 准
引脚
引脚说明
UART
TXD、RXD、 GND
(三线)
TXD:发送端 RXD:接收端
1-Wire DQ (一线) DQ:发送/接收端
SCK:同步时钟
SCK、MISO、 MISO:主机输入,从机输
精选课件ppt
11
1.2.2 74LS164真值表
输入
Clear Clock
AB
L
X
XX
H
L
XX
H
↑
HH
H
↑
LX
H
↑
XL
精选课件ppt
输出 QA QB ···QH LLL
HHH LLL LLL
12
74LS164的时钟是由ARM处理器产生,每来1个上升 沿74LS164就接收1位数据。
假设要使QA~QH=10110011,则ARM要发送一串数 据10110011给A、B输入端,并产生相应的时钟信号。 如下图:
内核
输出数 据缓冲
器
…
串口通信原理及操作流程PPT课件
第8页/共24页
近距离传送电路
RXD TXD GND
微机
电
RXD
平
TXD
转
GND
换
较远距离传送电 路
RXD TXD
RXD
TXD
GND
GND
RXD TXD GND
微机其他 设备
电
平
RXD
转
TXD
换
GND
第9页/共24页
接 微 机口
远距离传送电路
调电 电调
制话 话制
解分 分解
调机 机调
器
器
接微 机
口
T1OUT
RST
C 1
C1
C 1
1
6 7
2
8
3 4
9 5
89C51
C 2
C2
C 2
V+ VCC
MAX232
C3
+5V C4
PC机 COM1
或
COM2
XTAL1
GND
V-
C5
XTAL2 GND
C1=C2=C3=C4=C5=1F
第12页/共24页
51单片机串行口结构
<1>51单片机串行口是可编程全双工的通信接口,能同时进行数据的发送和 接收, 也可作为同步移位寄存器使用。
第16页/共24页
SM2:多机通信控制位 主要用于方式2、3。在不同串口工作方式下,通
过控制SM2,可以实现多机通信。
SM2作用: 在方式2,3中,发送机SM2=1(程序设置). 接收机SM2=1,若RB8=1,激活RI,引起接收中断RB8=0, 不激活RI,不引起接断。SM2=0,无论RB8=1还是RB8=0 均激活RI引起接收中断。在方式 0 中, SM2应置为0。 在方式1中, 当接收时SM2=1, 则只有收到有效停止位 才激活RI。
串口通信 PPT课件共33页
~~ ~~
同步字符 数据 数据
数据 校验字符
三、数据传输速率
数据传输速率称为波特率(Baud Rate) 每秒传输的二进制位数bps 字符中每个二进制位持续的时间长度都一样,为 数据传输速率的倒数
【例】如果一个串行字符由1个起始位,7个数据位, 1个奇偶校验位和1个停止位等10个数位构成,每秒钟 传送120个字符,则数据传送的波特率为:
串行通信时的数据、控制和状态信息都使用同一根信号线 传送
收发双方必须遵守共同的通信协议(通信规程),才能解 决传送速率、信息格式、位同步、字符同步、数据校验等 问题
串行异步通信以字符为单位进行传输,其通信协议是起止 式异步通信协议
异步串行数据发送格式
起始位
字符 数据位
1 0 0/1 0/1
…
1、串行通信的基本概念
通信:计算机与外部设备交换信息 串行通信:将数据分解成二进制位用一条信号线,一位一
位顺序传送的方式 串行通信的优势:用于通信的线路少,因而在远距离通信
时可以极大地降低成本 串行通信适合于远距离数据传送,也常用于速度要求不高
的近距离数据传送 PC系列机上有两个串行异步通信接口,键盘、鼠标器与主
串行通信与并行通信相比,虽然有许多优点,但也随 之带来了数据的串/并及并/串转换、数据格式的要求以 及位计数等问题,使之比并行通信实现起来更复杂。
一、数据传送方向
1、全双工方式(full duplex)
通信双方都能在同一时刻进行发送和接收操作,这 样的传送方式就是全双工制,如图1所示。在全双 工方式下,通信系统的每一端都设置了发送器和接 收器,因此,能控制数据同时在两个方向上传送。 全双工方式无需进行方向的切换,因此,没有切换 操作所产生的时间延迟,这对那些不能有时间延误 的交互式应用(例如远程监测和控制系统)十分有 利。
STM32单片机原理及应用PPT幻灯片课件
设计模式
基础型:做好需要专业的软硬件知识 智能型:在搭建的程序框架下设计 高级型:在操作系统管理下,专注应用。 介绍特色、扩展内容,比较学习。需要大家
课下认真消化资料,掌握基础内容。 STM32F10x参考手册_cn.pdf
11
二、硬件—特色接口
I/O
低功耗模式、定时器/计数器、输入捕获
7
实际工程应用的一般步骤
了解--- 背景:工艺流程,技术发展情况论述. 掌握---原理论述、同类方案比较。 设计--- 方案:系统框图,功能描述. 实现---软件流程、功能实现。
8
实际工程应用的一般步骤
9
一、STM32微控制器系列_cn.pdf
STM32的主要优点 ■ 使用ARM最新的、先进架构的Cortex-M3内核 ■ 优异的实时性能 ■ 杰出的功耗控制 ■ 出众及创新的外设 ■ 最大程度的集成整合 ■ 易于开发,可使产品 ■ 快速进入市场
IMUST B&E LAB5 ©
第一部分
STM32单片机原理及应用
6
需要掌握
掌握单片机的一般设计方法。 目前典型接口电路原理及应用。 开发环境Keil 及编程工具的使用。 能够设计建立基于单片机的系统。 设计完成一个基于STM32单片机的应用系统。
完成:系统描述,软硬件设计,调试结果并写出 报告。
引导程序,自展程序 (=bootstrap))
12
13
14
15
通用输入输出(General
) Purpose Input/Output
16
17
通用同步异步收发机 (Universal Synchronous Asynchronous Receiver Transmitter)
第九章USART-STM32PPT课件
.
8
STM32 外设接口模块
串口设置一般可以总结为如下几个步骤: 1、串口时钟使能(USART 1用APB2时钟), GPIO 时钟使能 (APB2) 2、串口复位 USART_DeInit(USART1) 3、GPIO端口模式设置 (PA9、PA10) 4、串口参数初始化 (波特率、数据位、停止位、校验位等) 5、开启中断并且初始化 NVIC(如果需要开启中断才需要这个步 骤) 6、使能串口 USRRT_Cmd(USART1, ENABLE) 7、编写中断处理函数
通用同步异步收发器( USART)提供了一种灵活的方法来与使用工业标准NRZ 异步串行数据格式的外部设备之间进行全双工数据交换。 它支持同步一路通信和半双工的单线通信,LIN,智能卡协议,IrDA和调制解调 器操作( CTS/RTS);允许多处理器通信,可以进行高速的数据通信。
任何USART双向通信都至少需要两个引脚:接收数据输入( RX)和发送数据输 出( TX)。 RX:串行数据输入。 TX:发送数据输出。当发送器使能的时候并且没有数据要发送,TX引脚是高电 平。
第九章 STM32 外设接口模块
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Company Logo
STM32printf用法配置
在STM32中直接调用printf函数会出错,需要进行一些 配置:
而用库函数则是:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE)
Company Logo
STM32串口复位
当外设出现异常的时候可以通过复位寄存器里面的对应位设置,实 现该外设的复位,然后重新配置这个外设达到让其重新工作的目的。 一般在系统刚开始配置外设的时候都会先执行复位该外设的操作。 串口1的复位时通过配置APB2RSTR寄存器来实现的,其他的几个 串口都是通过PAB1RSTR寄存器来实现的。而用库函数则是使用 USART_DeInit(USART_TypeDef* USARTx)来实现的。USART_ DeInit函数在stm32f10x_usart.c文件中。
Company Logo
串口简介
串行通讯又分为Байду номын сангаас步通讯和同步通讯两种:
同步串行是指ISP(interface Serial Peripheral )的缩写。ISP总 线系统是一种同步串行外设接口,它可以使MCU与各种外围设 备以串行方式进行通信以交换信息,TRM450是ISP接口。
异步串行是指UART(Universal Asynchronous Receiver/Trans mitter),通用异步接收/发送。UART是一个并行输入成为串 行输出的芯片,通常集成在主板上。UART包含TTL电平的串 口和RS232电平的串口。
对于两个进行通信的端口,这些参数必须匹配:
1、波特率:这是一个衡量通信速度的参数,它表示每秒 钟传送的bit的个数。例如300波特表示每秒钟发送300个 bit。
Company Logo
STM32串口简介
2、数据位:这是衡量通信中实际数据位的参数。当计 算机发送一个信息包,实际数据不会是8位的,标准的 值是5、7或8位(如何设置取决于你想传送的信息:比 如标准的ASCII码是0~127(7位),扩展的ASCII码是 0~255(8位))。
在很多串口操作中都可以直接调用printf函数打印输出信息, 但是在STM32中还需要进行一些配置才可以。接下来我们首 先会讲解如何使用printf函数进行输出,然后再讲解输入输出 函数的使用方法。
Company Logo
STM32串口printf实现
本次试验采用UART1的查询方式实现:
Company Logo
Company Logo
STM32printf用法配置
当TXE置位时,就表示发送数据寄存器中的数据已经移到了发送
移位寄存器中,如果使能中断的话就会产生中断。当RXNE置位时 表示接受移位寄存器中的数据已经移到接受数据寄存器中了,如果 中断使能的话则产生中断。 虽然fputc函数里面用到的是查询模式,但道理是一样的。我们先调 用USART_SendData(USART1,(unsigned char) ch)将我们要发送的 数据送到TDR中,之后我们就等待TXE置位,当TXE置位时就表示 TDR中的数据转移到了发送移位寄存器中了,发送移位寄存器中的 数据会由串口硬件自动发送,如此循环,直到将我们要发送的数据 全部发送完为止。
STM32的串口与其他单片机的操作方式基本相同: 1、开启串口时钟 2、设置相应I/O模式 3、配置波特率、数据位长度、奇偶校验位等
Company Logo
STM32串口原理图
Company Logo
STM32 UART库函数
Company Logo
STM32串口时钟使能
串口作为STM32的一个外设,其时钟由外设时钟使能寄存器控制, 串口1的时钟使能在APB2ENR寄存器,其他串口的时钟使能位都在 APB1ENR。(以串口1为例)
串行接口按电气标准及协议来分包括RS-232-C、RS-422、RS485等。 RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定, 不涉及接插件、电缆或协议。
在单片机中,主要使用异步通讯方式。
Company Logo
串口简介
串口通信的概念非常简单,串口按位(bit)发送和接收字 节,尽管比按字节(byte)的并行通信慢,但是串口可以 再使用一根线发送数据的同时用另一根线接收数据。它 很简单并且能够实现远距离通信。串口通信最重要的参 数是波特率、数据位、停止位和奇偶校验。
Company Logo
前面讲解了printf函数的使用方法,接下来讲解如何使 用STM32的串口输入输出实现双向通信。
STM32串口的相关寄存器和原理在前面都有提到,这里 就不再赘述,这里主要讲解软件的实现方法。
首先我们讲解查询方式的发送和接收。
Company Logo
本实验中我们通过串口1持续等待接收数据,当接收到 回车符时将接收到的内容再通过串口发送出去。
Company Logo
STM32 printf用法配置
进行上述设置之后就可以使用printf函数了
如果设置成功,下载程序,将开发板的串口接到PC机上, 打开串口调试助手,设置好波特率等参数就可以看到 this is a uart test demo的字符。
以上例程展示了如何使用printf函数发送字符串。
Company Logo
STM32串口数据的发送和接收
STM32串口的发送和接收是通过数据寄存器USART_DR来实现的, 这是一个双寄存器,包含了发送和接收两部分。当向该寄存器写数 据时,串口就会自动发送,当收到数据的时候,也在该寄存器中。
其中只用了低9位,其他位都保留且硬件强制为0。
Company Logo
5、硬件流控制:硬件流控制常用的有RTS/CTS流控制 盒DTR/DSR流控制。硬件流控制必须将相应的电缆线 接上,用RTS/CTS流控制时,应将通讯两端的RTS、 CTS线对应相连。常用的流控制信号还有DTR/DSR。
Company Logo
STM32串口简介
STM32根据芯片型号的不同资源数量也不一样,103VC 系列最多可提供5路串口(本次着重讲解串口1和串口 2),有分数波特率发生器、支持同步单线通信和半双 工单线通讯、支持LIN 、支持调制解调器操作、智能卡 协议和IrDA SIR ENDEC规范、具有 DMA等。
3、停止位:用于表示单个包的最后一位。典型的值为1、 1.5和2位。优于数据是在传输线上定时的,并且每一个 设备有其自己的时钟,很可能在通信中两台设备间出现 了小小的不同步。因此停止位不仅仅是表示传输的结束, 并且提供计算机校正时钟同步的机会。
Company Logo
STM32串口简介
4、奇偶校验位:在串口通信中一种简单的检错方式。 有4中检错方式:偶、奇、高和低。
跟LED的操作一样,首先是将相应的I/O配置成串口模 式,本次函数名为USART1_Config();
Company Logo
STM32串口printf实现
Company Logo
STM32串口printf实现
USART1_Config()主要做了如下工作: 1、使能了串口1的时钟 2、配置了uart1的I/O
STM32串口printf实现
本次试验中我们用到了GPIO、RCC、USART这三个外 设的库文件stm32f10x_gpio.c、stm32f10x_rcc.c、 stm32f10x_usart.c,所以试验中如果你的库文件 stm32f10x_conf.h里面将相应的头文件注释了就需要将 需要用到的几个头文件的注释去掉。
第二课 串口通信
LOGO
串口简介
串行接口简称串口,也成串行通信接口,是采用串行通 信方式的扩展接口。串口的使用对于开发调试过程的作 用是非常大的,串口可以用来查看、打印及输出相关信 息,使我们在嵌入式开发中最先与中央处理器通信的接 口。
串行通讯的特点是:数据位传送,传按位顺序进行,最 少只需一根传输线即可完成,成本低但传送速度慢。串 行通讯的距离可以从几米到几千米。
发送字符串函数则是循环调用发送单个字符函数,直到 检测到空格即表明字符串已发送完。
Company Logo
查询接收函数:
接收函数首先是查询寄存器中是否有数据,如果有数据 就将数据取出,然后清除相应的标志位,如果没有数据 就一直等待数据出现。
Company Logo
接下来就是在main函数中调用发送和接收函数:
}
3、在工程属性的“Target” -> “Code Generation” 选项中勾选 “Use MicroLIB””。
Company Logo
STM32printf用法配置
在这里讲解一下fputc函数里面的代码,我们前面提到 过USART_SR寄存器的5、6、7三位,理解了这几位的 功能就可以大概理解串口是如何发送数据的了。
STM32串口数据的发送和接收
STM32串口的发送和接收在库文件中分别有对应的函数,可直接调 用,分别是:
void USART_SendData(USART_TypeDef* USARTx, u8 Data) u8 USART_ReceiveData(USART_TypeDef* USARTx)
Company Logo
STM32串口波特率设置
STM32中每个串口都有一个自己独立的波特率寄存器USART_BRR, 通过设置该寄存器达到配置不同波特率的目的,该寄存器的各位描 述如下:
该寄存器中最低4为用来存放小数部分的DIV_Fraction,[15:4]这12位 用来存放整数部分DIV_Mantissa。高16位未使用(图片上小数整数 有错误,以英文手册为准)。