串口应用(USART)

2023-05-16

串行口应用

1、USART介绍

通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的 外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。 它支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据 组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信。
USART应用:
多处理器通信(使用多缓冲器配置的DMA方式,可以实现高速数据通信)
智能卡协议
支持同步单向通信
半双工单线通信
LIN(局部互连网)
IrDA(红外数据组织)规范
调制解调器(CTS/RTS)操作

2、USART 与 UART的区别

同步(UART)、同步/异步(USART)区别:同步与异步的显著区别在于是否具有同一时钟源

image-20220408152708497

3、通信方式:
  • 异步串行通信

异步串行通信所传输的数据格式(也称为串行帧)由1个起始位、7~9个数据位、1~2个停止位(含1.5个停止位)和1个校验位组成。

起始位约定为0,空闲位约定为1。在异步通信方式中,接收器和发送器有各自的时钟,它们的工作是非同步的。

image-20220413101520042

  • 同步串行通信

同步串行通信中,发送器和接收器由同一个时钟源控制。

image-20220413101641267

4、波特率及时钟频率

波特率BR是单位时间传输的数据位数
单位:bps 1bps = 1bit/s。
采用异步串行,互相通信甲乙双方必须具有相同的波特率,否则无法成功地完成数据通信,

同步时钟:发送和接收数据是由同步时钟触发;发送器和接收器而实现的。

注:同步通信中数据传输的波特率即为同步时钟频率;在异步通信中,时钟频率可为波特率的整数倍。

5、串口配置

串口设置步骤:

  • 串行口时钟使能,GPIO时钟使能
  • 串行口复位
  • GPIO 端口模式设置
  • 串口参数初始化
  • 开启中断并且初始化 NVIC (根据需求开启)
  • 使能端口
  • 编写中断处理函数
void uart_init(u32 bound)
{
	//GPIO端口设置
	GPIO_InitTypeDef GPIO_InitStructure;
	USART_InitTypeDef USART_InitStructure;
	NVIC_InitTypeDef NVIC_InitStructure;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);	//使能USART1,GPIOA时钟

	//USART1_TX   GPIOA.9
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;	//复用推挽输出
	GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9

	//USART1_RX	  GPIOA.10初始化
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
	GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10  

	//Usart1 NVIC 配置
	NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;		//子优先级3
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			//IRQ通道使能
	NVIC_Init(&NVIC_InitStructure);	//根据指定的参数初始化VIC寄存器

	//USART 初始化设置
	USART_InitStructure.USART_BaudRate = bound;//串口波特率
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
	USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
	USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位
	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;	//收发模式
  USART_Init(USART1, &USART_InitStructure); //初始化串口1
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启串口接受中断
  USART_Cmd(USART1, ENABLE);                    //使能串口1 
}
5、主函数
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

串口应用(USART) 的相关文章

随机推荐

  • 解决IDEA报错:Ambiguous handler methods mapped for ‘……‘路径冲突

    IDEA报错 xff1a Ambiguous handler methods mapped for 39 funds E5 9B BD 39 这是因为controller层的两个不同方法的访问路径设置得一样 xff0c 虽然 后面的传入参数
  • 前端控制台怎么打开

    去点击右上角三个点 更多工具 开发者工具 成功打开控制台 xff1a
  • 数据库的某个字段在前端表格里没显示出来

    当前卖出费率一栏全部为空 那问题肯定是出在数据库这方面 vue文件里的表格字段必须跟数据库的对应字段一致才行 vue里的NowRate必须修改为sellRate xff0c 跟数据库的字段名一致 修改之后记得重启 xff0c 正常显示
  • 2023年3月计算机三级网络技术备考

    一 专项练习 网络系统结构与设计的基本原则 1 1基础知识 1 1 1 广域网技术的发展 下列关于光以太网技术特征的描述中 xff0c 错误 的是 A 能够根据用户的需求分配宽带 B 以信元为单位传输数据 C 具有保护用户和网络资源安全的认
  • Vue3项目使用 wow.js 让页面滚动更有趣~

    wow js是一个可以在页面滚动的过程中逐渐释放动画效果 xff0c 让页面滚动更有趣的一个插件库 官网 xff1a wow js Reveal Animations When Scrolling 本文就演示一下如何在Vue3项目使用 wo
  • Failed to start bean ‘documentationPluginsBootstrapper ‘; nested exception is java.lang.NullPointer

    在配置使用swagger的时候启动报错 xff0c 如下 xff1a 原因在于我在swagger配置里加上了 64 EnableSwagger2注解 xff0c 在加上它之前可以正常启动 解决方法 xff1a 在配置文件里加上 spring
  • 串口发送float类型数据

    STM32串口发送float类型数据 一 代码 1 发送 span class token keyword void span span class token function send gyro span span class toke
  • STM32 F4串口空闲中断 + DMA实现数据发送

    STM32 F4串口空闲中断 43 DMA实现数据发送 前言文章目录一 空闲中断二 DMA三 代码部分1 串口配置2 DMA配置 前言 最近在做 STM32 43 ROS车的项目 xff0c STM32与ROS之间通信由于数据量大 xff0
  • Darknet YoloV4编译+训练(避免踩坑)

    AlexAB darknet yolov4编译 43 训练 时间间隔好几天今天来更新一下yolov4的训练 训练篇 在训练之前需要对大佬的源码进行编译本本机编译 xff0c 编译过程可查看下述链接 xff1a https blog csdn
  • ubuntu下如何创建ros工作空间、创建ros功能包、创建ros节点

    1 打开终端进入存放ros工作空间的目录 xff08 比如我这里将它放在home目录下的test文件夹中 xff09 cd test 2 开始创建ros工作空间 mkdir p catkin ws src cd catkin ws src
  • STM32串口通信 (采用链表接收不定长数据帧)

    STM32串口通信 链表接收不定长数据帧 数据帧说明不太恰当的比方 数据缓冲链表结构效果展示工程文件 数据帧说明 STM32数据寄存器为USARTx gt DR寄存器 可以看到DR寄存器只有 8 0 位可以使用 xff0c 第8位用于奇偶校
  • A*寻路算法

    目录 1 动画演示2 游戏中的自动寻路A 算法3 A 寻路算法原理4 调试代码分析代码5 代码 1 动画演示 2 游戏中的自动寻路A 算法 随着3D游戏的日趋流行 在复杂的3D游戏环境中如何能使非玩家控制角色准确实现自动寻路功能成为了3D游
  • 2022数学建模国赛B题和C题高质量论文代码数据

    目录 B题论文 5 1 问题一的建模与求解 5 1 1 使用极坐标求解具体位置 C题论文 1 1 研究背景 1 2 问题的提 5 1 问题一的建模与求解 5 1 1 数据的预处理 B题论文 5 1 问题一的建模与求解 5 1 1 使用极坐标
  • stm32小白学习之寄存器名称

    IDR输入只读寄存器 xff0c ODR输出可读可写寄存器 BSRR xff08 置位寄存器 xff09 与BRR xff08 复位寄存器 xff09 CRL xff08 端口配置低位寄存器 xff09 与CRH xff08 端口配置高位寄
  • 使用Vite创建Vue3+TS项目并整合Element Plus框架等一条龙服务

    记录一下使用Vite创建Vue3 43 TS项目以及整合Element Plus框架 xff0c 还有Less Pinia Vue router monaco editor等插件或组件 一 使用Vite创建Vue3 43 TS项目 第一步
  • Qt学习 第37节:QString

    在阅读QString文档时 xff0c 出了一个词 implicit sharing copy on write xff0c 不是很懂 xff0c 下面链接解释的表明白 QT的隐式共享 Implicit Sharing 道路与梦想 CSDN
  • 下载Postman并且汉化使用

    下载Postman并且汉化使用 一 下载postman postman有不同的版本 xff0c 如果要汉化就要下载的版本与汉化包一致 下载地址 xff1a postman官网下载地址 xff1a https www postman com
  • 【Vue】postman汉化教程 保姆级教程 包教会

    下载链接 xff1a Win64 Win32 历史版本下载 请把下面链接的 34 版本号 34 替换为指定的版本号 xff0c 例如 xff1a 8 8 0 版本链接Windows32位https dl pstmn io download
  • 操作系统实验——进程与线程

    目录 1 使用GCC xff08 1 xff09 参数 xff08 2 xff09 自定义头文件 xff08 3 xff09 makefile脚本 xff08 4 xff09 gdb调试 2 进程 xff08 1 xff09 新建进程 xf
  • 串口应用(USART)

    串行口应用 1 USART介绍 通用同步异步收发器 USART 提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的 外部设备之间进行全双工数据交换 USART利用分数波特率发生器提供宽范围的波特率选择 它支持同步单向通信和半双工单线