【单片机】详细解析完全重映射和部分重映射

news2024/9/17 8:31:16

1、重映射的作用

        单片机中的每个引脚通常都有多个功能,不仅仅是作为普通的输入或输出,还可以与某些外设(如定时器、串口、SPI、I2C等)关联。默认情况下,这些外设功能通常固定绑定到特定的GPIO引脚。但是,在某些情况下,默认的引脚配置可能不适合实际电路设计或项目需求,因此需要将外设功能重新映射到其他GPIO引脚,这就是GPIO重映射。

        单片机内部有一个重映射控制寄存器配置寄存器,通过设置该寄存器,可以改变外设功能与GPIO引脚之间的关联。通过特定的寄存器位,开发者可以选择某个外设功能是否重映射,以及重映射到哪个引脚。

2、部分重映射与完全重映射

        部分重映射指的是仅对某个外设的部分引脚进行重定向,将外设的某些功能从默认引脚重新映射到其他GPIO引脚上。通常情况下,部分重映射意味着只重定向部分功能引脚,其他功能引脚仍然保持默认设置。

        完全重映射是指将整个外设的所有引脚都重新映射到不同的GPIO引脚。这种方式下,外设的所有功能(如TX、RX、时钟引脚等)都将被映射到不同的引脚上,而不是只部分重映射。

        其中,REMAP=0表示为默认引脚,REMAP为1(01)和2(01)时代表部分重映射,REMAP为3(11)时表示完全重映射。

3、结合用户手册、数据手册以及代码

这里以定时器的重映射作为演示,下面是用户手册中有关定时器重映射的表格:    

我们看一下图中的TIMER1,当没有重映射时(00),定时器的四个通道默认选择的是PA0、PA1、PA2、PA3;

部分重映射(10)时,CH0和CH1还是选择的默认的PA0、PA1,而CH32与CH3选择了新的引脚,PB10与PB11,在这个时候,我们看一下数据手册中这两个引脚:

 当完全重映射(11)时,四个引脚全部选择了默认引脚以外的全部引脚,分别为PA15、PB3、PB10、PB11,我们也可以在数据手册中看一下另外两个引脚:

 最后再结合代码看一下,可以看到他们的重映射值的值

4、重映射功能配置代码(以定时器为例)

1. 使能时钟

首先我们需要使能相关的时钟,比如GPIOA的时钟和TIMER1的时钟。

rcu_periph_clock_enable(RCU_GPIOA);  // 使能GPIOA时钟
rcu_periph_clock_enable(RCU_AF);     // 使能AFIO时钟
rcu_periph_clock_enable(RCU_TIMER1); // 使能TIMER1时钟
2. 配置GPIO引脚

将GPIO引脚(如PA8)配置为复用功能模式(AF,Alternate Function)。

3. 配置TIMER1

初始化TIMER1以产生PWM信号或者用于其他定时功能。

4. 使能部分重映射功能

通过配置寄存器启用部分重映射。

gpio_pin_remap_config(GPIO_TIMER1_PARTIAL_REMAP1, ENABLE);

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matplotlib颜色透明度设置

matplotlib中的透明度设置都是通过alpha设置的,一般在能设置颜色的包括背景色、图表色、文字颜色都可以设置透明度 float类型,取值范围为[0.0,1.0],alpha取值越小越透明 import numpy as np import matplotlib.pyplot as pltx np.linspace(0, 2*np.pi, 100) y np.sin(x) y1…

Arch - 架构安全性_授权(Authorization)

文章目录 OverView授权(Authorization)RBAC: 概述RBAC:基于角色的访问控制RBAC:主要元素 OAuth2:面向第三方应用的认证授权协议业务场景OAuth2的工作流程OAuth2 四种不同的授权方式授权码模式(A…

Android Studio 2024最新版Hello World

Android Studio 2024最新版Hello World 1. Android Studio 2024安装视频2. 创建项目Read Timed out 问题Android Studio Build Output 控制台中文乱码问题 3. 驱动管理 本文章介绍如何通过Android Studio 2024最新版创建项目, 并成功输出Hello World。 本次教程版本…

关于QT中使用网络编程QtNetwork的问题

在此处添加network模块 在链接器中添加附加库目录(QT对应的lib)在链接器-输入中添加对应的lib库(Qt5Network.lib) 这样,就可以使用对应的下面的库文件了,比如: #include <qnetworkaccessmanager.h>

参数高效微调(PEFT)综述

人工智能咨询培训老师叶梓 转载标明出处 大模型如BERT和GPT-3的参数数量庞大&#xff0c;动辄数十亿甚至数千亿级别&#xff0c;给进一步的微调和应用带来了巨大的挑战。针对这一问题&#xff0c;Vladislav Lialin、Vijeta Deshpande、Anna Rumshisky等研究者中提出了一系列参…

Leetcode面试经典150题-69.X的平方根

相当简单的题目&#xff0c;但是出现的概率还挺高的 解法都在代码里&#xff0c;不懂就留言或者私信 class Solution {public int mySqrt(int x) {/**0的平方根是0 */if(x 0) {return 0;}/**1~3的平方根是1 */if(x < 3) {return 1;}/**其他情况我们采用二分查找&#xff…

Python 调用手机摄像头

Python 调用手机摄像头 在手机上安装软件 这里以安卓手机作为演示&#xff0c;ISO也是差不多的 软件下载地址 注意&#xff1a;要想在电脑上查看手机摄像头拍摄的内容的在一个局域网里面(没有 WIFI 可以使用 热点 ) 安装完打开IP摄像头服务器 点击分享查看IP 查看局域网的I…

Android Studio下载Gradle失败问题解决

问题说明 使用 Android Studio 构建程序报错如下 Could not install Gradle distribution from https://services.gradle.org/distributions/gradle-7.5.1-bin.zip. Reason: java.net.SocketTimeoutException: Connect timed out问题解决 下载对应版本的压缩包 gradle-7.5.1…

香橙派转换模型以及在开发板上部署

新手小白记录一下自己使用香橙派模型转换以及在开发板上运行的过程&#xff0c;防止后面忘记。 使用的开发板&#xff1a;Orange Pi 5 Plus&#xff08;rk3588&#xff09; 官方的一些资料在&#xff08;主要参考用户手册&#xff09;&#xff1a;Orange Pi - Orangepihttp:/…

价格适中超微小间距P1.8全彩LED显示屏广泛应用于COB会议一体机

随着科技的不断进步与市场需求的日益多样化&#xff0c;价格适中且具备超微小间距P1.8技术的全彩LED显示屏&#xff0c;在COB&#xff08;Chip On Board&#xff09;会议一体机领域的应用正逐步深化&#xff0c;引领着现代会议展示的新风尚。这种显示屏不仅以其细腻的画质和卓越…

单片机DMA原理及应用详解(下篇)(附工程源码)

这篇文章详细介绍单片机的DMA原理和应用范例。希望我的分享能给你带来不一样的收获&#xff01; 关于DMA的原理&#xff0c;可以看上一篇文章&#xff1a; 单片机DMA原理及应用详解&#xff08;上篇&#xff09;&#xff08;附工程源码&#xff09;-CSDN博客 目录 一、STM32单片…

黑龙江IBM Storwize v3700存储故障维修

中国黑龙江省佳木斯IBM Storwize v3700存储控制器故障维修案例&#xff1a; 报修单位&#xff1a;黑龙江佳木斯某某医院 存储型号&#xff1a;联想或IBM v3700 存储故障&#xff1a;无法正常访问存储磁盘&#xff0c;无法进存储web管理界面&#xff0c;可以进存储服务助手界…

《C++ 中的左值与右值》

在 C 的世界里&#xff0c;左值和右值是两个重要的概念&#xff0c;理解它们对于掌握 C 语言的精髓至关重要。 首先&#xff0c;我们来认识左值。左值&#xff0c;即 “locator value”&#xff0c;可以理解为有明确存储位置且可以被取地址的表达式。简单来说&#xff0c;一个可…

Linux之MySQL主从复制

概述 MySQL的主从复制&#xff08;Master-Slave Replication&#xff09;是一种数据复制解决方案&#xff0c;将主数据库的DDL&#xff08;数据定义语言&#xff09;和DML&#xff08;数据操纵语言&#xff09;操作通过二进制日志传到从库服务器中&#xff0c;然后在从库上对这…

自动驾驶ADAS算法--使用MATLBA和UE4生成测试视频

原文参考&#xff1a;金书世界 环境搭建参考&#xff1a;用MATLAB2020b和虚拟引擎&#xff08;Unreal Engine&#xff09;联合仿真输出AVM全景测试视频----Matlab环境搭建 matlab参考&#xff1a; https://ww2.mathworks.cn/help/driving/ug/simulate-a-simple-driving-sce…

Vue2电商项目(二) Home模块的开发;(还需要补充js节流和防抖的回顾链接)

文章目录 一、Home模块拆分1. 三级联动组件TypeNav2. 其余组件 二、发送请求的准备工作1. axios的二次封装2. 统一管理接口API----跨域3. nprogress进度条 三、 vuex模块开发四、TypeNav三级联动组件开发1. 动态展示三级联动数据2. 三级联动 动态背景(1)、方式一&#xff1a;CS…

CAS概念、性质、优缺点 | 乐观锁、悲观锁是什么?

前言&#xff1a; 今天在深入了解HashMap时&#xff0c;看到这句话&#xff1a;“concurrentHashMap&#xff0c;在 JDK 1.7 中采用 分段锁的方式&#xff1b;JDK 1.8 中直接采用了CAS&#xff08;无锁算法&#xff09; synchronized。” 哦~~这个CAS好像之前接触过&#xff0c…

VSCode拉取远程项目

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

2024年测评7款最佳AI论文修改润色平台

在2024年&#xff0c;AI论文修改润色平台的测评和推荐成为学术界和研究者们关注的热点。本文将详细评测并推荐7款最佳AI论文修改润色平台&#xff0c;包括千笔-AIPassPaper&#xff0c;并结合我搜索到的资料进行分析。 一、千笔-AIPassPaper 千笔-AIPassPaper是一款集论文大纲…

芯旺微,车规级32位MCU KF32A芯片简介

文章目录 1. 产品功能特点2. 行业应用3. 开发环境(IDE)4. 开发资源5. KungFu 内核参考1. 产品功能特点 2. 行业应用 汽车照明汽车车窗控制汽车空调面板汽车控制器3. 开发环境(IDE)