当前位置: 首页 > news >正文

复用时钟 重映射(Remap)

在GD32微控制器中,**Remap(重映射)**是指通过重新配置某些引脚的功能,将它们从默认功能切换到其他备用功能。例如,某些GPIO引脚可以被配置为SPI、USART、I2C等外设的信号引脚,或者作为普通IO使用。

### **Remap的用途**
1. **解决引脚冲突**:当默认的外设引脚被其他功能占用时,可以通过Remap将外设映射到其他可用的GPIO引脚上。
2. **灵活配置**:根据实际需求,将引脚配置为不同的功能,例如将JTAG引脚重新映射为普通IO。

### **Remap的配置步骤**
1. **使能相关时钟**:
   - 必须使能复用功能(AF)的时钟,这是Remap功能的基础。例如:
     ```c
     rcu_periph_clock_enable(RCU_AF);
     ```
     这行代码用于启用复用功能的时钟。

2. **配置Remap**:
   - 使用`gpio_pin_remap_config`函数配置Remap。例如,将SPI0的引脚重新映射到备用引脚:
     ```c
     gpio_pin_remap_config(GPIO_SPI0_REMAP, ENABLE);
     ```
     这行代码将SPI0的引脚从默认位置切换到备用位置。

3. **配置GPIO引脚**:
   - 在完成Remap后,需要根据新的引脚配置,将GPIO引脚初始化为对应的模式(如复用推挽输出、浮空输入等)。

### **示例**
以下是一个将SPI0引脚重新映射到备用引脚的完整代码示例:
```c
void spi_flash_init(void)
{
    // 使能相关GPIO和AF的时钟
    rcu_periph_clock_enable(RCU_GPIOA);
    rcu_periph_clock_enable(RCU_GPIOB);
    rcu_periph_clock_enable(RCU_AF);

    // 关闭默认的JTAG功能,启用SW-DP
    gpio_pin_remap_config(GPIO_SWJ_SWDPENABLE_REMAP, ENABLE);

    // 将SPI0引脚重新映射到备用引脚
    gpio_pin_remap_config(GPIO_SPI0_REMAP, ENABLE);

    // 配置SPI0的引脚
    gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_3 | GPIO_PIN_5); // SCK和MOSI
    gpio_init(GPIOB, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_4);        // MISO
    gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_15);            // CS
}
```
在这个例子中:
- `GPIO_SPI0_REMAP`用于将SPI0的引脚从默认位置切换到备用位置。
- `GPIO_SWJ_SWDPENABLE_REMAP`用于禁用默认的JTAG功能,以便将某些引脚释放为普通IO。

### **总结**
Remap功能允许开发者根据需求重新配置GPIO引脚的功能,以解决引脚冲突或实现更灵活的硬件设计。使用Remap功能时,必须先使能AF时钟,然后通过`gpio_pin_remap_config`函数进行配置。

相关文章:

  • DeepSeek 助力 Vue3 开发:打造丝滑的页眉(Header)
  • C++ Qt常见面试题(4):Qt事件过滤器
  • RIP-AV:使用上下文感知网络进行视网膜动脉/静脉分割的联合代表性实例预训练
  • docker-compose方式启动Kafka Sasl加密认证(无zk)
  • “AI安全与治理:构建可信赖的人工智能生态系统”论坛将亮相CES Asia 2025
  • 【QT问题】Ubantu环境下解决已经下载好的qt怎么添加或卸载其他组件
  • OpenCV计算摄影学(7)HDR成像之多帧图像对齐的类cv::AlignMTB
  • 【MySQL | 四、 表的基本查询(增删查改)】
  • 【自学嵌入式(11)闪存文件系统的应用】
  • es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?底层的 lucene 介绍一下呗?倒排索引了解吗?
  • FastAPI 学习笔记
  • 论文阅读:A comprehensive survey on model compression and acceleration
  • 在VsCode中选择conda编译器环境
  • 实时语义分割之Deep Dual-resolution Networks(DDRNet2021)原理解析及建筑物提取实践
  • leetcode_34 在排序数组中查找元素的第一个和最后一个位置
  • 2025年度福建省职业院校技能大赛高职组“信息安全管理与评估”赛项样题模块一
  • MySQL 用户权限管理深度解析:从基础到高阶实践(2000字指南)
  • c++ 多个.cpp文件运行
  • 基于人工智能/机器学习的SPICE建模与参数提取基准
  • Java中使用FFmpeg拉取RTSP流
  • 江门网站建设费用/出售网站平台
  • 李沧做网站/下载百度app免费下载安装
  • 图片做旧网站/山东今日热搜
  • 湖北网站建设路/搜索引擎优化的作用是什么
  • 东莞网站设计建设公司/沈阳关键词优化报价
  • 做废旧金属的网站/整站seo优化公司