AFIO---重映射功能的使用以及常见问题

H417系列采用了完全不同的IO映射设计,分开讨论:

一,CH32FV2x_V3x,X03X,00X:

重映射功能

        外设引脚重映射的概念,即一个外设的引脚除了具有默认的端口外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的端口。

        简单的讲就是把管脚的外设功能映射到另一个管脚,但不是可以随便映射的。

部分重映射 & 完全重映射

  • 部分重映射: 功能外设的部分引脚重新映射,还有一部分引脚是原来的默认引脚。
  • 完全重映射:功能外设的所有引脚都重新映射
  •     我们以V203的TIM2为例:
  •  

  •  默认映射脚位为不需要重映射配置的默认脚位,直接初始化外设时钟即可。如若使用后面几种组合,需要进行配置,配置流程如下:

  • 第一步:开启AFIO时钟:
  •  

    第二步: 调用库函数进行重映射:

     

           注意此步骤需要在第一步后再进行,同时注意此函数参数的选择,下面有三种参数选择,分别对应着上面几种映射组合,体现在手册里引脚描述如

  •        TIM2_CH2_1,TIM2_CH2_2,TIM2_CH2_3,那么后缀-1就代表着部分映射1,-2就代表着部分映射2,如此类推
  • 手册上类似描述如下:

     

    第三步:正常初始化外设时钟即可,并初始化对应通道对应引脚的GPIO时钟,和相应引脚配置。

  • 二,H417系列:

H417关于引脚映射采用了完全不同的设计理念,但总体原理类似,且更好理解一些:

image

其实通俗理解可以把H417的每个GPIO引脚内部想象成一个​​多路选择开关​​,复用相关寄存器呢就是控制这个开关的

控制器,

  • 每个引脚对应4位​​:这4位可以表示16种选择(AF0到AF15),用来决定这个引脚到底连接到哪个内部外设(比如是连接USART1还是TIM2)。
     
  • ​​信号共用​​:关键点在于,对于一个引脚,无论是作为外设的输入还是输出,都​​共用同一组AF选择信号​​。这意味着你只需要配置一次,芯片内部就会自动完成信号路径的连接。 

具体外设功能对应引脚可见DS0数据手册,我们已TIM1的通道二为例,经查看手册发现

image

 

第一步:开启AFIO,与对应GPIO端口时钟

image

 第二步:打开PE11与TIM1_CH2上的开关(通俗理解)

image

 

这样,就配置好了用PE11作为TIM1的通道二输出。

 

 

  •  

    注:重映射常见问题

     

    一,怎么重映射不成功,打印相应的寄存器发现并未被成功赋值;

       检查上述步骤一和二是否反了,需要先开启AFIO时钟才可以对相应位进行操作

     

  • 二,将PA13,PA14脚复用为普通IO不成功/怎么将PA13,PA14脚复用为普通IO

       检查是否开了AFIO时钟,对应操作如下:

    关闭SWD复用,并设置为浮空输入

  •  

     

    三,晶振脚复用为普通IO不成功/怎么将晶振脚复用为普通IO

      与三问题类似,

  •  

    四, 将PA6-PA7复用为串口一的功能脚不成功        

  • 注意手册里的说明,PA6-PA7的组合为串口一的一个特殊组合,需要配合 AFIO_PCFR2 寄存器 bit26 USART1_RM1 使用,所以需要两次调用remap函数,操作如下:

  • 需注意V208,V203RB后两组映射不存在!
  •  

     

  •  

    五,CH32L103将串口三复用到PD0,PD1不成功

  • 原因:多一个步骤,需要将晶振功能关掉映射成PD0,1才能进行串口的重映射。
  •  

  •  

  •  

     

     

     

     

     

     

posted @ 2023-04-01 14:05  WCH_CH32  阅读(1523)  评论(0)    收藏  举报