1.串口通信,一般有UART,USART,I2C,SPI,485通信,can通信
2.UART指通用异步收发传输器,可以实现全双工传输和接收。UART通信时,数据先发低位再发高位。
3.USART指通用同步/异步串行接收/发送器。
4.UART与USART的硬件总线区别?
1.UART: Rxd—–读数据线
Txd—–写数据线
2.USART:Rxd—–读数据线
Txd—–写数据线
RTS—–接收器流控线
CTS—–发送器流控线
5.UART通信模型
6.USART通信模型
相对于UART,每个设备多两条线RTS,CTS
RTS—(发送流控线)(通知另外一个设备)——对应——CTS(接收流控线)
都有一个地线
7.UART发送和接收的可编程波特率,最高达 4.5Mbits/s
8.UART的应用场景:USART应用中大部分时候使用异步的模式,智能卡使用同步模式;
USART/UART作为调试的方法,通过串口助手打印在PC机上;
支持多种外设,例如9轴传感器、电子指南针、串口透传蓝牙、串口透传WiFi;
还可以作为485通信的基础,485可以延长通信距离。
9.UART时序:
字长可以通过编程USART_CR1寄存器中的M位,选择成8或9位。在起始位期间, TX脚处于低电平,在停止位期间处于高电平。
每个字符(每帧信息)由4部分组成:
(1)1位起始位,规定为低电平0;
(2)8~9位数据位,即要发送的有效信息;
(3)1位奇偶校验位(可选);
(4)0.5,1.5,2个停止位,规定为高电平1.
10.USART中的寄存器
一个状态寄存器(USART_SR)
数据寄存器(USART_DR)
一个波特率寄存器(USART_BBR),12位整数和4位小数
控制寄存器1(USART_CR1)
控制寄存器2(USART_CR2)
控制寄存器3(USART_CR3)
一个智能卡模式下的保护时间寄存器(USART_GTPR)
11.USART通信中断原理流程:
(1)恢复默认
(2)打开相应时钟APB
(3)GPIO口初始化
(4)USART模式初始化,波特率,字长,停止位,校验位,硬件流控
(5)使能USART中断
(6)清空USART标志位
(7)使能USART
(8)USART中嵌套向量中断控制器NVIC初始化,优先级组,抢占式优先级和响应式优先级个数
(9)编写中断服务函数
关键字:STM32F10xxx UART通信 串口通信
引用地址:
对STM32F10xxx中UART通信的一些理解
推荐阅读最新更新时间:2024-11-10 20:08
ARM学习笔记15——串口通信基本原理
计算机串口基本理论 1.什么是串口? 2,什么是RS-232? 3,什么是RS-422? 4,什么是RS-485? 5,什么是握手? 1,什么是串口? 串口是计算机上一种非常通用的设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现
[单片机]
stm8s串口通信(uart)
最近开始使用stm8s103k3单片机了。据说很好,确实不错。前几天已经试过了GPIO,Timer2,ADC的功能,都比较容易,唯独串口UART使用,破费周折,写出来,供大家借鉴。 我使用的是stm8s103k3,32脚单片机,这个使用手册上说了UART1,UART2,UART3。但是引脚的功能图上只有UART1,并且你打开stm8s103k.h的头文件,里面也只有UART1寄存器的定义说明。所以我认为只有UART1。既然有这个功能,那就用吧,我以为直接可以连接到电脑的串口(COM1),就可以使用了,其实不可以。单片机即使写着提供UART通讯功能,也要连接MAX232转接芯片,我就在这里耽误了许多时间。 1、使用st
[单片机]
STM323 USART串口通信中断实现
问题描述:利用stm32串口通信,当PC端发送字符8时,LED PB.0闪亮 第一步:配置系统时钟,这个不用多讲,代码就不贴出来了; 第二步:GPIO端口配置: 设置PA.9为复用推挽输出,PA.10为浮空输入,PB.0,PB.1,PB.2输出并初始化PB.0亮 void GPIO_Config() { GPIOA- CRH=0X04B0; GPIOB- CRL=0X0333; GPIOB- ODR=0X01; } 第三步:USART寄存器配置: void USART_Config() { USART1- BRR = 0x1D4C; U
[单片机]
STM32 串口通信(库函数操作)
1.说在前面: 清明三天小假期,放松一下无可厚非,但是,依旧要完成自己的学习任务 2.串口通信的简单介绍: 1.将串口作为一个沟通的渠道,可以和外界进行接收和发送信号 2.STM32和串口相关的寄存器: 2-1:USART_SR(状态寄存器):存储着MCU的一些状态 2-2:USART_DR(数据寄存器):暂存着一些数据信息 2-3:USART_BRR(波特率寄存器:暂存波特率信息 2-4:USART_CRI(控制寄存器):用于给usart进行使能 3.注:波特率的计算方法: 只要给出相应的时钟频率和设置usartdiv,就可以计算出波特率 3.串口通讯的简单配置和使用 1.其实基于
[单片机]
基于LabVIEW的单片机串口通信设计与实现
1.概述 在现代测控系统中,我们经常会采用上位机和下位机的开发控制模式。下位机主要是用来采集数据,可以通过嵌入式控制器、单片机控制器、PLC等来实现。上位机主要是图形界面,用来实时显示采集数据,并进行数据分析及处理,同时可以控制下位机。上位机的实现可以通过各种高级语言,比如VB、Delphi等以及NI公司的图形化虚拟仪器软件开发环境LabVIEW.由于LabVIEW采用的是图形化的编程方法,所以无论你是否有过编程经验,都可以快速、高效地设计用户界面,实现与控制硬件的通信,并进行数据分析和处理。如今LabVIEW已经渗透到工业测量的各个领域,与此同时在嵌入式、FPGA、DSP、实时控制等领域也发挥着巨大的作用。 2.本实例实
[测试测量]
单片机串口通信程序
单片机串口通信是单片机非常好用的一项功能,可以和电脑和其他的单片机进行通信和交换数据从而达到某种效果。近期我们做了个程序:利用单片机串口通信编译一个程序在打开时向电脑发送问候语 hello ,然后电脑输入一个 start ,之后单片机将电脑输入任何字符都显示出来,除非是电脑输入为 end 。起初我们是想用字符串和数组来做这个题目的,但是在开始做的时候才发现,单片机的传输使用八位的一个一个的传输数据的,然后在传输之前还得将端口软件置零、这时候我们就选用了嵌套语句一个一个字符串的来判断,但是因为嵌套的对于单片机通信说不是很适合。如:在用五个if语句检测start是,如果其中少了一个(只有四个字符),这个程序就会卡住,不执行下一条: #i
[单片机]
C51单片机 串口通信RX&TX
画图 最简单的串口通信代码 *难解释。没了解单片机内部怎么运行,可能看不懂 * #include reg52.h #include stdio.h sbit led=P1^0; void initUart()//最最最基本的 *串口通信初始化* 要熟记 { //首先来个定时器1工作方式2//0010 0000 TMOD = 0x20; TH1 = 0xfd;//波特率9600/晶振11.0592Mhz TL1 = 0xfd; TR1=1; //串口工作方式1为最常用0101 0000 SCON=0x50; //打开总中断 EA=1; //允许串口中断 E
[单片机]
stm32 串口通信
这次讲讲利用串口收发中断来进行串口通讯。STM32 上为每个串口分配了一个中断。也就是说无论是发送完成还是收到数据或是数据溢出都产生同一个中断。程序需在中断处理函数中读取状态寄存器(USART_SR)来判断当前的是什么中断。下面的中断映像图给出了这些中断源是如何汇合成最终的中断信号的。图中也给出了如何控制每一个单独的中断源是否起作用。 另外,Cortex-M3 内核中还有个NVIC,可以控制这里的中断信号是否触发中断处理函数的执行,还有这些外部中断的级别。关于NVIC 可以参考《ARM CortexM3 权威指南》,里面讲解的非常详细。 简单的说,为了开启中断,我们需要如下的代码: NVIC_InitTypeDef NV
[单片机]