【STM32】串口初步使用

2023-11-13

本文只作为学习笔记,对串口进行一个简单的介绍,正确的使用方式还需要进行实际的调试

通信的类型:

同步 异步
单工 双工
串行 并行

STM32的串口通信:

配置片上外设的控制寄存器,通信双方进行相同的配置,约定共同的起始位,停止位,校验位,使得UART外设能够自动处理发送和接收数据

串口通信数据包

在这里插入图片描述
这些都可以通过控制寄存器进行配置

数据寄存器

USART的数据寄存器(DR)只有低9位是有效的,并且一般使用8位数据,除非在控制寄存器CR中进行了9位的设置。

USART_DR包含了已发送的数据或者接收到的数据。USART_DR实际是包含了两个寄存器,一个专门用于发送的可写 TDR,一个专门用于接收的可读 RDR。当进行发送操作时, 往 USART_DR 写入数据会自动存储在 TDR 内;当进行读取操作时,向 USART_DR 读取数 据会自动提取 RDR 数据。

USART 支持 DMA 传输。一般需要用DMA将USART->DR中的数据拿走。

USART的一般使用

嵌套向量中断控制器 NVIC 配置;

NVIC配置

static void NVIC_Configuration(void)
{
	NVIC_InitTypeDef NVIC_InitStructure;

	/* 嵌套向量中断控制器组选择 */
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

	/* 配置 USART 为中断源 */
	NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
	/* 抢断优先级为 1 */
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
	/* 子优先级为 1 */
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
	/* 打开中断 */
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
	/* 初始化配置 NVIC */
	NVIC_Init(&NVIC_InitStructure);
}

串口配置

#UART配置
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;

// 打开串口 GPIO 的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
// 打开串口外设的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

// 将 USART Tx 的 GPIO 配置为推挽复用模
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

// 将 USART Rx 的 GPIO 配置为浮空输入模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);

// 配置串口的工作参数
// 配置波特率
USART_InitStructure.USART_BaudRate = DEBUG_USART_BAUDRATE;

// 配置 帧数据字长
USART_InitStructure.USART_WordLength = USART_WordLength_8b;

// 配置停止位
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(DEBUG_USARTx, &USART_InitStructure);

// 串口中断优先级配置 打开中断
NVIC_Configuration();

// 使能串口接收中断
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

// 使能串口
USART_Cmd(USART1, ENABLE);

串口发送

1.库函数方法

USART_SendData(USART1, (uint8_t) len);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【STM32】串口初步使用 的相关文章

  • 简说数据库事务的ACID

    事务是应用程序中一系列严密的操作 所有操作必须成功完成 否则在每个操作中所作的所有更改都会被撤消 也就是事务具有原子性 一个事务中的一系列的操作要么全部成功 要么一个都不做 原子性 Atomicity 一致性 Consistency 隔离性
  • postman 模拟请求中添加 header,post请求中传json参数

    1 GET 请求 2 Post 请求 请求参数为Json header中带有参数 问题延伸 GET请求不能够 添加 Body 吗 答案 转载于 https www cnblogs com zacky31 p 8808110 html
  • 【网络安全】——区块链安全和共识机制

    区块链安全和共识机制 摘要 区块链技术作为一种分布式去中心化的技术 在无需第三方的情况下 使得未建立信任的交易双方可以达成交易 因此 区块链技术近年来也在金融 医疗 能源等多个行业得到了快速发展 然而 区块链为无信任的网络提供保障的同时 也

随机推荐

  • 《算法导论》总结与分析

    算法导论总结与分析 分治 strassen算法 介绍 步骤 正确性证明 复杂度分析 排序 堆排序 介绍 步骤 构建 排序 优先队列 复杂度分析 快速排序 介绍 步骤 复杂度分析 最坏情况 最好情况 线性时间排序 介绍 步骤 复杂度分析 数据
  • 课堂小作业之3位水仙花数计算

    3位水仙花数计算 描述 3位水仙花数 是指一个三位整数 其各位数字的3次方和等于该数本身 例如 ABC是一个 3位水仙花数 则 A的3次方 B的3次方 C的3次方 ABC
  • 组合优化技术

    组合优化是指在离散领域内 寻找最优解的问题 在通信工程中 组合优化的应用非常广泛 例如在无线通信系统中 可以使用组合优化算法来优化信道资源分配 功率控制 调制方式等问题 组合优化问题通常包含以下要素 决策变量 表示问题的解 通常是一个离散的
  • spring cloud版本由1.5.x升级到2.x所遇到的坑

    众所知周 spring cloud 1 5版本与2 x版本差异很大 官方没有做向下兼容 导致大家对于升级spring cloud版本都非常慎重 此处 首先推荐阅读官方给出的迁移手册 Spring Boot 2 0 Migration Gui
  • ChatGPT学习相关资料整理

    ChatGPT学习相关资料整理 关于ChatGPT的相关咨询和新闻 ChatGPT能力起源 https mp weixin qq com s 4l0ADjdsCxSVvBeVKxSqWA ChatGPT的发展历程 https zhuanla
  • 生产数据采集MDC的总体思路

    一 数控机床通过网口连到局域网 MDC服务器与数控机床通讯 定时取得所需数据 将数据写入数据库 二 MES对数据库中的数据进行分析 展示到大屏上 我这里是机械制造型企业 以上步骤已经完成 有相同需求的朋友 欢迎一起交流细节
  • SQL INSERT INTO 语句

    INSERT INTO 语句用于向表中插入新记录 语法 指定列插入数据 INSERT INTO table name colnum1 colnum2 column3 VLAUES value1 value2 value3 不指定列插入数据
  • java - JVM CPU100%,问题排查

    前段时间我们新上了一个新的应用 因为流量一直不大 集群QPS大概只有5左右 写接口的rt在30ms左右 因为最近接入了新的业务 业务方给出的数据是日常QPS可以达到2000 大促峰值QPS可能会达到1万 所以 为了评估水位 我们进行了一次压
  • FormData实现文件上传

    应用场景 FormData Ajax技术实现文件上传 1 FormData使用 FormData是一个构造函数 首先new FormData 得到一个FormData对象 可以直接使用 直接console会是一个空白的对象 有append方
  • 未解决-联想拯救者r7000 CTRL+C复制键无法使用

    情况描述 突然不能使用 不知道是什么操作导致不能使用 也不知道什么操作解决了问题 发生次数 四次以上 判断过程 鼠标右键复制可以使用 外接键盘复制可以使用 无QQ 微信等热键冲突 网页 记事本都无法使用 ctrlA ctrlX ctrlV可
  • 手把手教你画活动图,再无难搞的流程分析

    上次介绍了 用例图这样画 3步让你做需求分析有理有据 这次聊聊活动图 也许你对活动图并不了解 不过 说起流程图 想必你不会陌生 你可以暂且把活动图 看成 UML 中的流程图 都知道 做产品要分析流程 可怎么把流程理清楚呢 当然不能凭空想象
  • ANN神经网络入门——分类问题(MATLAB)

    写在前面 本篇博客的鸢尾花分类程序来源于博客http www cnblogs com heaad archive 2011 03 07 1976443 html 在上述博客中 作者主要介绍了以下三部分内容 1 神经网络基本原理 2 AFor
  • Angular和RxJS:添加REST API后端

    本文是SitePoint Angular 2 教程的第3部分 该教程有关如何使用Angular CLI创建CRUD应用程序 在本文中 我们将更新我们的应用程序以与REST API后端进行通信 更喜欢使用分步视频课程学习Angular 退房
  • 上传本地新项目到SVN服务器

    1 在一个已有检出的项目文件夹 如下的文件夹 1 就是我从svn检出的项目 中 在空白处 右键 gt TortoiseSVN gt Repo browser 这样就到了svn服务器的目录了 打开远程地址目录 2 创建一个文件夹给即将上传的项
  • 一文拿下弱网测试:3大弱网模拟工具的配置、场景弱网原因分析、面试题目……

    软件质量不是口头说说 要实际做起来 正文开始 如果app没有对各种网络异常进行兼容处理 那么用户可能在日常生活中遇到APP闪退 ANR 数据丢失等问题 因此 app网络测试 特别是弱网测试尤为重要 本文梳理了app网络测试要点和弱网测试常用
  • 2023年1月16日--2023年1月22日(osg+glsl+socket+ue, 本周20小时,合计1879小时,剩余8121小时)

    目前 ue视频教程进行到了zccs 预1 mysql 7 1 tf1 4 11 o s s 12 2 蓝图反射 1 9 moba 1 5 webapp 2 4 mmoarpg 00A 04 socket 2 57 Opengl 5 9 GL
  • 十三、传智书城项目设计

    项目源代码及sql脚本 一 项目概述 近年来 随着Internet的迅速崛起 互联网已成为收集信息的最佳渠道并逐步进入传统的流通领域 于是电子商务开始流行起来 越来越多的商家在网上建起在线商店 向消费者展示出一种新颖的购物理念 网上购物系统
  • yolo中iou_thres的含义及作用

    yolo中iou thres的含义及作用 iou thres 参数用于控制非极大值抑制 NMS 中的边界框合并阈值 较大的 iou thres 值会导致更多的边界框被合并 从而减少最终输出的边界框数量 是否将 iou thres 设置得更大
  • 图论进阶指南-银河(差分约束/DAG/tarjan)

    测评地址 题目大意 第一行给出两个整数N和M 之后M行 每行三个整数T A B 表示一对恒星 A B 之间的亮度关系 恒星的编号从1开始 如果T 1 说明A和B亮度相等 如果T 2 说明A的亮度小于B的亮度 如果T 3 说明A的亮度不小于B
  • 【STM32】串口初步使用

    本文只作为学习笔记 对串口进行一个简单的介绍 正确的使用方式还需要进行实际的调试 通信的类型 同步 异步 单工 双工 串行 并行 STM32的串口通信 配置片上外设的控制寄存器 通信双方进行相同的配置 约定共同的起始位 停止位 校验位 使得