【【STM32--28--IO引脚的复用功能】】
STM32–28–IO引脚的复用功能
STM32的IO复用功能
何为复用?
我们先了解一下何为通用
IO端口的输入或输出是由GPIO外设控制,我们称之为通用
复用:
IO端口的输入或者是输出是由其他非GPIO外设控制就像经常说的USART 由 DR寄存器进行输出
STM32的IO复用功能
1.各个IO都支持什么复用功能
2.IO复用功能的冲突问题
在同一时间IO只能用作一种复用功能,否则会发生冲突
3,遇到IO复用功能冲突
我们的解决方法是可以考虑采用重映射功能,后续课程会讲解
我们知道芯片有许多外设,而引脚的资源是很有限的,为了解决这个问题,方法就是引脚
复用,这样使得引脚除了作为普通的 IO 口之外,还会与一些外设关联起来,作为第二功能使
用,而且一个引脚不单单只有一种复用功能,而是拥有多个第二功能,但是一次只允许一个外
设的复用功能,以确保共用同一个 IO 引脚的外设之间不会产生冲突。
AFIO 寄存器的作用就是复用功能 I/O 和调试配置的,STM32F103ZET6 共有 6 个 AFIO 的
寄存器,事件控制寄存器 AFIO_EVCR、复用重映射和调试 I/O 配置寄存器 AFIO_MAPR、外部
中断配置寄存器 AFIO_EXTICR1、外部中断配置寄存器 AFIO_EXTICR2、外部中断配置寄存器
AFIO_EXTICR3 和外部中断配置寄存器 AFIO_EXTICR4。
复用重映射和调试 I/O 配置寄存器 AFIO_MAPR 寄存器描述

在对 AFIO_MAPR 寄存器某些位进行写入实现引脚的重新映射,这时候,复用功能不再映射到它们原始分配上。例如 AFIO_MAPR 寄存器位 2 是对 USART1 的重映射,置 0: 没有重映像(TX/PA9,RX/PA10);置 1: 重映像(TX/PB6,RX/PB7)。默认情况下,PA9 和 PA10 是作为串口 1 的引脚使用,假如 PA9 和 PA10 被用作其他地方,但还是需要用到串口 1,那么就可以在 AFIO_MAPR 的位 2 置 1,把串口 1 的引脚重映射到 PB6 和 PB7。这个串口初始化的过程,就有点变化,需要初始化 AFIO 时钟,和对 AFIO_MAPR 的第 2 位进行置 1 操作,其他与普通串口配置没有区别。HAL 库已经把这些配置工作都定义好了,我们只需要去寻找这些复用的宏定义,这些关于端口复用相关的代码在 stm32f1xx_hal_gpio_ex.h 文件中可以找到。
相关文章:
【【STM32--28--IO引脚的复用功能】】
STM32–28–IO引脚的复用功能 STM32的IO复用功能 何为复用? 我们先了解一下何为通用 IO端口的输入或输出是由GPIO外设控制,我们称之为通用 复用: IO端口的输入或者是输出是由其他非GPIO外设控制就像经常说的USART 由 DR寄存器进行输出 STM32的IO复用功…...
CodeJock Active-X / COM v22.1.0 Crack
CodeJock Active-X / COM v22.1.0--这个支持 Unicode 啦, Unicode Unicode 创建专业应用程序,其中包含一整套高度可定制的用户界面组件,包括 Visual Studio 风格的对接窗格和 Office 风格的功能区、工具栏和菜单,为您的应用程序…...
mac通过docker搭建elasticsearch:8.9.2以及kibana:8.9.2
1.elasticsearch.yml配置修改: cluster.name: "docker-cluster" network.host: 0.0.0.0 http.port: 9200 #discovery.seed_hosts: ["172.17.0.2"]#----------------------- BEGIN SECURITY AUTO CONFIGURATION ----------------------- # # T…...
python实现排列组合代码
def combination(n, c, com1, limit0, per[]):for pos in range(limit, n):t per [pos]if len(set(t)) len(t):if len(t) c:yield [pos, ]else:for result in combination(n, c, com, com * pos, per [pos, ]):yield [pos, ] resultprint("排列:") …...
盲盒小程序开发方案
盲盒游戏作为一种富有趣味性和收藏价的虚拟盲盒产品,近年来在游戏市场中备受关注。本文将深入探讨盲盒游戏的开发方案,从市场趋势分析、用户体验设计、商业模式选择等多个维度,为开发者提供业且有深度的思考,以帮助他们在盲盒游戏…...
Mysql锁
文章目录 1. 概述2. 分类3. 全局锁4. 表级锁5. 行级锁 1. 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并…...
Kubernetes(k8s)安装NFS动态供给存储类并安装KubeSphere
Kubernetes安装NFS动态供给存储类并安装KubeSphere KubeSphere介绍环境准备KubeSphereNFS动态供给 安装NFS动态供给搭建NFS下载动态供给驱动修改驱动文件安装动态供给 安装KubeSphere下载KubeSphere的yaml资源清单文件安装KubeSphere 使用KubeSphere部署应用创建项目部署MySQL …...
机器学习笔记 - 【机器学习案例】基于KerasCV的预训练模型自定义多头+多标签预测
一、KerasCV KerasCV 是一个模块化计算机视觉组件库,可与 TensorFlow、JAX 或 PyTorch 原生配合使用。这些模型、层、指标、回调等基于Keras Core构建,可以在任何框架中进行训练和序列化,并在另一个框架中重复使用,而无需进行昂贵的迁 KerasCV 可以理解为 Keras API 的水平…...
Linux Debian常用70条经典运维命令和使用案例
一、前言 今天分享一些Linux Debian运维方法以及常用命令 二、运维方法 Linux Debian系统的运维涉及到各种任务,包括系统安装、配置、更新和维护,以及故障排查和性能优化等。下面是一些常用的运维命令: 1、以下是部分命令注释 1. apt-ge…...
【涵子来信】——步入中学,日积跬步,以致千里
大家好: 我是涵子,好久没有发文,今天发个文。 如果说,给你一次再入中学的机会,你会怎么想?对于刚刚步入中学的我,目前状况尚好,洛谷最近刷得紧,看看我的洛谷。 好的&…...
【sgCreateAPI】自定义小工具:敏捷开发→自动化生成API接口脚本(接口代码生成工具)
<template><div :class"$options.name"><div class"sg-head">接口代码生成工具</div><div class"sg-container"><div class"sg-start "><div style"margin-bottom: 10px;">接口地…...
数据库相关基础知识
第一章 概念 1、数据:描述事物的符号记录称为数据。特点:数据和关于数据的解释不可分。 2、数据库:长期存储在计算机内、有组织、可共享的大量的数据的集合。数据库中的数据按照一定的数据模型组织、描述和存储,具有较小的冗余度、…...
LeetCode刷题笔记【23】:贪心算法专题-1(分发饼干、摆动序列、最大子序和)
文章目录 前置知识贪心算法的本质什么时候用贪心算法?什么时候不能用贪心?贪心算法的解题步骤 455.分发饼干题目描述解题思路代码 376. 摆动序列题目描述解题思路代码 53. 最大子序和题目描述暴力解法动态规划贪心算法 总结 前置知识 贪心算法的本质 贪心的本质是选择每一阶…...
C++算法 —— 分治(2)归并
文章目录 1、排序数组2、数组中的逆序对3、计算右侧小于当前元素的个数4、翻转对 本篇前提条件是已学会归并排序 1、排序数组 912. 排序数组 排序数组也可以用归并排序来做。 vector<int> tmp;//写成全局是因为如果在每一次小的排序中都创建一次,更消耗时间和…...
Hadoop YARN HA 集群安装部署详细图文教程
目录 一、YARN 集群角色、部署规划 1.1 集群角色--概述 1.2 集群角色--ResourceManager(RM) 1.3 集群角色--NodeManager(NM) 1.4 HA 集群部署规划 二、YARN RM 重启机制 2.1 概述 2.2 演示 2.2.1 不开启 RM 重启机制…...
BBS+商城项目的数据库表设计
本文章是对于BBS商城项目的数据库的初步设计,仅供参考! -- 创建用户表 CREATE TABLE Users (id bigint(20) PRIMARY KEY COMMENT 用户ID,username varchar(255) NOT NULL COMMENT 用户名,password varchar(255) NOT NULL COMMENT 密码,status int(1) DE…...
如何使用Savitzky-Golay滤波器进行轨迹平滑
一、Savitzky-Golay滤波器介绍 Savitzky-Golay滤波器是一种数字滤波器,用于平滑数据,特别是在信号处理中。它基于最小二乘法的思想,通过拟合数据到一个滑动窗口内的低阶多项式来实现平滑。这种滤波器的优点是它可以保留数据的高频信息&#…...
Nomad系列-Nomad网络模式
系列文章 Nomad 系列文章 概述 Nomad 的网络和 Docker 的也有很大不同, 和 K8s 的有很大不同. 另外, Nomad 不同版本(Nomad 1.3 版本前后)或是否集成 Consul 及 CNI 等不同组件也会导致网络模式各不相同. 本文详细梳理一下 Nomad 的主要几种网络模式 在Nomad 1.3发布之前&a…...
OpenCV项目开发实战--实现面部情绪识别对情绪进行识别和分类及详细讲解及完整代码实现
文末提供免费的完整代码下载链接 面部情绪识别(FER)是指根据面部表情对人类情绪进行识别和分类的过程。通过分析面部特征和模式,机器可以对一个人的情绪状态做出有根据的猜测。面部识别的这个子领域是高度跨学科的,借鉴了计算机视觉、机器学习和心理学的见解。 在这篇研究…...
Validate表单组件的封装
之前一直是直接去使用别人现成的组件库,也没有具体去了解人家的组件是怎么封装的,造轮子才会更好地提高自己,所以尝试开始从封装Form表单组件开始 一:组件需求分析 本次封装组件,主要是摸索封装组件的流程,…...
Modbus RTU 与 Modbus TCP 深入指南-结束语
结束语本指南涵盖了Modbus RTU和Modbus TCP的物理层、数据链路层、报文格式、CRC算法、通信模型、功能码详解、性能优化、安全加固、故障排查、工程实践、过渡策略及现代替代方案。核心要点回顾:RTU:串口,远距离,简单可靠…...
告别混乱XML:Notepad++插件一键美化与智能纠错实战
1. 为什么我们需要XML格式化工具? 作为一个常年和XML打交道的开发者,我太清楚那种打开一个几千行XML文件时的绝望了——所有标签挤在一起,缩进混乱得像被猫抓过的毛线球,想找个节点得用CtrlF来回搜三遍。更可怕的是,有…...
BG3ModManager:博德之门3模组管理终极指南,告别模组冲突烦恼![特殊字符]
BG3ModManager:博德之门3模组管理终极指南,告别模组冲突烦恼!🚀 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModMa…...
摄像头驱动调试避坑指南:用示波器快速定位I2C不通、MIPI无信号问题
摄像头驱动调试避坑指南:用示波器快速定位I2C不通、MIPI无信号问题 当摄像头模组在硬件调试阶段出现异常时,软件工程师往往会陷入"配置检查-重新烧录-再检查"的死循环。实际上,80%的摄像头初始化失败问题源于硬件信号层面的异常。本…...
构建毫秒级实时传输系统:基于flv.js的低延迟架构优化方案
构建毫秒级实时传输系统:基于flv.js的低延迟架构优化方案 【免费下载链接】flv.js HTML5 FLV Player 项目地址: https://gitcode.com/gh_mirrors/fl/flv.js flv.js作为HTML5 FLV播放器的核心技术方案,通过Media Source Extensions实现浏览器端FLV…...
跨境直播里,为什么很多团队设备很强,画面却依旧不稳定?
做跨境直播的人,基本都会经历一个阶段:疯狂升级设备。更贵的相机更强的显卡更高规格的采集卡更多灯光但实际开播后:直播依旧掉帧OBS 占用异常推流延迟增加画面偶发模糊音视频不同步很多时候,问题并不是设备性能不够。而是…...
搜极星破局:拆解企业 “看不见、控不住、比不过” 困局
引言:AI 时代,企业陷入三重信息绝境2026 年,生成式 AI 全面主导用户决策链路,品牌竞争从搜索排名转向 AI 认知权重。但多数企业正深陷看不见、控不住、比不过的三重困局:看不见自身在 AI 平台的真实曝光状态࿰…...
如何快速实现NCM文件批量转换:ncmdumpGUI完整使用指南
如何快速实现NCM文件批量转换:ncmdumpGUI完整使用指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否下载了网易云音乐却发现文件是NCM格式…...
Anaconda 安装与配置 的所有核心步骤
下载:去官网或靠谱的镜像源(如清华镜像)下载 2025.06版 Windows x64 安装包(约950MB)。安装:运行 .exe 文件。关键选项1:勾选 Add Anaconda to my PATH (添加到环境变量)…...
Win10台式机没蓝牙?手把手教你用USB适配器搞定BLE设备通信(附驱动避坑指南)
Win10台式机蓝牙适配器实战指南:从硬件选型到BLE通信全解析 当台式机遇到蓝牙设备通信需求时,许多开发者首先面临的不是代码问题,而是硬件基础建设。本文将带你系统解决从零搭建蓝牙开发环境的完整流程,特别针对低功耗蓝牙&#x…...
