STM32_USART通用同步/异步收发器

目录

背景

程序

STM32浮空输入的概念

1.基本概念

2. STM32浮空输入的特点

3. STM32浮空输入的应用场景

STM32推挽输出详解

1. 基本概念

2. 工作原理

3. 应用场景

使能外设时钟

TXE 和 TC的区别

USART_IT_TXE

USART_IT_TC

使能串口外设

中断处理函数


背景

单片机有常用的三大通信(SPI、I2C、UART(USART))。本篇文章对STM32的UART初始化进行简要的说明。

程序

void USART1_Init(u32 bound){ //串口1初始化并启动//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   PA.9GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;	//复用推挽输出GPIO_Init(GPIOA, &GPIO_InitStructure);  //USART1_RX	  PA.10GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入GPIO_Init(GPIOA, &GPIO_InitStructure); //Usart1 NVIC 配置NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;		//子优先级3NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			//IRQ通道使能NVIC_Init(&NVIC_InitStructure);	//根据指定的参数初始化VIC寄存器 //USART 初始化设置USART_InitStructure.USART_BaudRate = bound;//一般设置为9600;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); //初始化串口USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启ENABLE/关闭DISABLE中断USART_Cmd(USART1, ENABLE);                    //使能串口 
}

对于RX脚的端口模式要设置为浮空输入。对于RX脚的端口模式要设置为推挽输出

STM32浮空输入的概念

1.基本概念

STM32浮空输入(Floating Input)模式是指GPIO端口的电平状态完全由外部信号决定,该引脚既不连接到内部上拉电阻,也不连接到内部下拉电阻,处于高阻态。这种模式下,引脚对外表现为高阻抗,可以检测到微弱的信号变化。

2. STM32浮空输入的特点

  • 高阻抗‌:浮空输入时,引脚表现为高阻抗,对外部电路的影响较小。
  • 电平状态不定‌:由于电平状态完全由外部信号决定,因此在外部无信号或信号微弱时,引脚电平状态可能不稳定,容易受到外界电磁干扰。
  • 适用于特定场景‌:浮空输入通常用于需要高阻抗信号读取的场景,如按键检测、ADC(模数转换器)输入等。

3. STM32浮空输入的应用场景

  • 按键检测‌:在按键电路中,按键未按下时,通过浮空输入模式可以检测到按键的悬空状态,从而判断按键是否被按下。
  • ADC输入‌:在ADC采样输入时,使用浮空输入模式可以减少上拉或下拉电阻对采样结果的影响,提高采样精度。
  • 微弱信号检测‌:由于浮空输入具有高阻抗特性,可以检测到微弱的信号变化,适用于需要高灵敏度信号检测的场景。

STM32推挽输出详解

1. 基本概念

STM32推挽输出(Push-Pull Output)是一种GPIO(通用输入输出)引脚输出模式,能够输出高电平和低电平,并具有一定的驱动能力。在这种模式下,引脚在输出低电平时形成低阻抗,输出高电平时形成高阻抗,可以驱动外部电路。

2. 工作原理

推挽输出模式的工作原理基于两个互补的晶体管(通常是MOSFET或双极型晶体管)来控制输出电平。当输出信号为高电平时,一个晶体管导通,将输出端拉向高电平;当输出信号为低电平时,另一个晶体管导通,将输出端拉向低电平。这种互补控制方式确保了输出端在高低电平之间快速切换,同时提供足够的驱动能力。

3. 应用场景

STM32推挽输出模式广泛应用于需要驱动外部负载的场景,如:

  • 控制LED灯的亮灭。
  • 驱动继电器、电机等负载。
  • 与其他数字电路进行逻辑电平连接。

使能外设时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);

查看GPIOA(端口组A)是接在APB2总线上。

串口中断配置

TXE 和 TC的区别

USART_IT_TXE

USART_IT_TXE‌(发送数据寄存器空标志位)表示发送数据寄存器(USART_DR)为空,即可以往USART_DR中写入下一个要发送的数据。当USART_DR中的数据被传送到移位寄存器后,TXE标志被设置,此时程序可以把下一个要发送的字节写入USART_DR。需要注意的是,在初始化USART时,即使没有发送任何数据,TXE标志也会被设置,因为此时发送数据寄存器是空的‌12。

USART_IT_TC

USART_IT_TC‌(传输完成标志位)表示移位寄存器中的所有数据都已发送完毕。当移位寄存器中的所有数据都移出后,硬件会设置TC标志。TC标志是在发送结束时触发,通常用于发送结束后处理‌。

使能串口外设

中断处理函数

void USART1_IRQHandler(void){ //串口1中断服务程序(固定的函数名不能修改)	u8 Res;if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET){ 	Res =USART_ReceiveData(USART1);//(USART1->DR);	//读取接收到的数据printf("%c",Res); //把收到的数据以 a符号变量 发送回电脑		} 
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/16095.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka的消费消息是如何传递的?

大家好,我是锋哥。今天分享关于【Kafka的消费消息是如何传递的?】面试题。希望对大家有帮助; Kafka的消费消息是如何传递的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Kafka 的消息传递机制是基于 发布-订阅 模型…

活动预告 | Power Hour: Copilot 引领商业应用的未来

课程介绍 智能化时代,商业应用如何实现突破?微软全球副总裁 Charles Lamanna 将为您深度解析,剖析其中关键因素。 在本次线上研讨会中,Charles Lamanna 将分享他在增强商业运营方面的独到见解与实战策略,深度解读商业…

IPD项目管理是什么?

IPD项目管理,即整合项目交付管理,是一种创新的管理方式、强调团队协作、优化设计和施工过程的方法。这种管理模式的核心是整合所有项目参与者的专业技能和知识,从项目初始阶段就开始共同合作,以实现项目目标。它特别强调所有参与者…

支付宝安全发全套解决方案

产品价值 ● 通过支付宝的资金能力,让服务商机构通过信息流驱动资金流,在不碰触客户企业资金的同时,为客户企业完成转账。账目清晰,无合规和资质风险。 ● 为服务商提供全链路的资金流动明细信息,服务商可以将这些信息…

关于FANUC机器人示教器型号的说明

关于FANUC机器人示教器型号的说明 如下图所示, 示教器的型号为:A05B-2255-C102#ESW, 如果需要对示教器进行更换或维修测试,只需保证前面8位的型号保持一致即可, 例如下图中的型号, 只需保证A05B-2255-x…

计算机毕业设计SpringBoot校园二手交易小程序 校园二手交易平台(websocket消息推送+云存储+双端+数据统计)(源码+文档+运行视频+讲解视频)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

11vue3实战-----封装缓存工具

11vue3实战-----封装缓存工具 1.背景2.pinia的持久化思路3.以localStorage为例解决问题4.封装缓存工具 1.背景 在上一章节,实现登录功能时候,当账号密码正确,身份验证成功之后,把用户信息保存起来,是用的pinia。然而p…

2.Excel:滨海市重点中学的物理统考考试情况❗(15)

目录 NO12​ 1.数据透视表​ 2. 3.sum函数 4.sumifs客观/主观平均分​ 5.sumifs得分率​ 6.数字格式修改​ NO3/4/5​ sumifs某一组数据相加,某一范围,某一范围的具体点向下拖拉,锁定列;向左右,锁定行F4&#x…

基于YoloV11和驱动级鼠标模拟实现Ai自瞄

本文将围绕基于 YoloV11 和驱动级鼠标实现 FPS 游戏 AI 自瞄展开阐述。 需要着重强调的是,本文内容仅用于学术研究和技术学习目的。严禁任何个人或组织将文中所提及的技术、方法及思路应用于违法行为,包括但不限于在各类游戏中实施作弊等违规操作。若因违…

期权帮 | 聊一聊股指期货交割是什么意思?

锦鲤三三每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 聊一聊股指期货交割是什么意思? 股指期货交割,就是股指期货合约到期时,咱们得按照合约的规定来结束这笔交易。大多数时候,我们都…

【Java】Object类中的equals()和hashCode()

一、Object类简介 Java中,Object类是Java的 java.lang 包内的核心类,Object类是所有类的祖先类,每个类都直接或间接地继承Object类,一个类如果没有使用extends关键字明确地继承一个类的时候,那它就是Object的子类。 刚…

DEEPSEEK与GPT等AI技术在机床数据采集与数字化转型中的应用与影响

随着人工智能(AI)技术的迅猛发展,深度学习、自然语言处理等先进技术开始广泛应用于各行各业。在制造业尤其是机床行业,AI技术的融合带来了巨大的变革,尤其在机床数据采集与机床数字化方面的应用。本文将探讨DEEPSEEK、…

网络工程师 (31)VLAN

前言 VLAN(Virtual Local Area Network)即虚拟局域网,是一种将物理局域网划分成多个逻辑上独立的虚拟网络的技术。 一、定义与特点 定义:VLAN是对连接到的第二层交换机端口的网络用户的逻辑分段,不受网络用户的物理位置…

【Qt之·类QTextCursor】

系列文章目录 文章目录 前言一、概述1.1 QTextCursor类的作用和用途 二、QTextCursor类的常用方法2.1 setPosition()方法:设置光标的位置2.2 insertText()方法:在光标位置插入文本。2.3 deleteChar()方法:删除光标位置处的字符。2.4 movePosi…

Visual Studio 中的键盘快捷方式

可打印快捷方式备忘单 Visual Studio 的常用键盘快捷方式 本部分中的所有快捷方式都将全局应用(除非另有指定)。 “全局”上下文表示该快捷方式适用于 Visual Studio 中的任何工具窗口。 生成:常用快捷方式 命令键盘快捷键命令 ID生成解决…

如何免费白嫖 Deepseek API 接口

今天我将教大家如何利用网络空间测绘搜索引擎「Fofa」来寻找已经部署并开放 Deepseek 接口的服务。以下是详细步骤: 1. 访问 Fofa 搜索引擎 首先,打开 Fofa 搜索引擎的网站:https://fofa.info 2. 搜索开放的 Deepseek 接口 在搜索框中输入…

如何评估云原生GenAI应用开发中的安全风险(下)

以上就是如何评估云原生GenAI应用开发中的安全风险系列中的上篇内容,在本篇中我们介绍了在云原生AI应用开发中不同层级的风险,并了解了如何定义AI系统的风险。在本系列下篇中我们会继续探索我们为我们的云原生AI应用评估风险的背景和意义,并且…

Mybatis源码02 - 初始化基本过程(引导层部分)

初始化基本过程(引导层部分) 文章目录 初始化基本过程(引导层部分)一:初始化的方式及引入二:初始化方式-XML配置文件1:MyBatis初始化基本过程2:创建Configuration对象的过程2.1&…

Baumer工业相机堡盟工业相机如何实现一次图像采集同时检测产品的5个面甚至多个面(C#)(NEOAPI SDK)

Baumer工业相机堡盟工业相机如何实现一次图像采集同时检测产品的5个面甚至多个面(C#)(NEOAPI SDK) Baumer工业相机光学棱镜反射图像的技术背景工业相机ROI功能的技术背景图像处理多线程功能的技术背景Baumer工业相机通过棱镜同时检…

ASP.NET Core 如何使用 C# 从端点发出 GET 请求

使用 C#,从 REST API 端点获取 JSON;如何从 REST API 接收 JSON 数据。 本文需要 ASP .NET Core,并兼容 .NET Core 3.1、.NET 6和.NET 8。 要将数据发布到端点,请参阅本文。 使用 . 从端点发布 GET 数据非常容易HttpClient&…