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

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);
相关推荐
honey ball5 分钟前
一些优秀的硬件方案及芯片
单片机·嵌入式硬件
DOMINICHZL3 小时前
卡尔曼滤波算法从理论到实践:在STM32中的嵌入式实现
stm32·嵌入式硬件·算法
无际单片机编程3 小时前
单片机OTA升级中Bootloader怎么判断APP有没有问题?
java·stm32·单片机·嵌入式硬件·嵌入式
代码总长两年半4 小时前
STM32---FreeRTOS消息队列
stm32·单片机·嵌入式硬件
触角010100015 小时前
STM32 I2C驱动开发全解析:从理论到实战 | 零基础入门STM32第五十步
驱动开发·stm32·单片机·嵌入式硬件
赴遥6 小时前
ESP32S3N16R8驱动ST7701S屏幕(vscode+PlatfoemIO)
vscode·单片机·esp32·st7701s
沐欣工作室_lvyiyi6 小时前
基于单片机的防火防盗报警系统设计(论文+源码)
人工智能·stm32·单片机·嵌入式硬件·物联网·目标跟踪
廿二松柏木7 小时前
三级嵌入式学习ing 考点25、26
单片机·嵌入式硬件·学习
技术干货贩卖机8 小时前
0基础 | 看懂原理图Datasheet 系列1
笔记·stm32·单片机·嵌入式硬件·学习
-一杯为品-8 小时前
【51单片机】程序实验16.DS1302时钟
嵌入式硬件·mongodb·51单片机