STM32中有许多内置外设的输入输出引脚都具有重映射(remap)的功用,本文对一些在运用引脚重映射时所遇到的有关问题加以阐明。咱们知道每个内置外设都有若干个输入输出引脚,一般这些引脚的输出脚位都是固定不变的,为了让规划工程师能够更好地组织引脚的走向和功用,在STM32中引入了外设引脚重映射的概念,即一个外设的引脚除了具有默许的脚位外,还能够经过设置重映射寄存器的方法,把这个外设的引脚映射到其它的脚位。
例如,USART3_TX的默许引出脚是PB10,USART3_RX的默许引出脚是PB11;但经过重映射后,能够改变USART3_TX的引出脚为PD8,改变USART3_RX的引出脚为PD9。
一起,STM32还只能够将一个功用映射到多个引脚,例如:USART3的TX和RX引脚默许的引出脚位是PB10和PB11,依据装备位的设置,能够重映射到PC10和PC11,还能够重映射到PD8和PD9。
一个模块的功用引脚不管是从默许的脚位引出仍是从重映射的脚位引出,都要经过GPIO端口模块完成,相应的GPIO端口有必要装备为输入(对应模块的输入功用,如USART的RX)或复用输出(对应模块的输出功用,如USART的TX),关于输出引脚,能够依照需求装备为推挽复用输出或开漏复用输出。
一般的GPIO端口输入功用与复用的输入功用的装备方法没有别离,这意味着在运用引脚的复用输入功用时,能够在这个引脚的输入寄存器上读出引脚上的信号。例如在使能了USART3模块时,能够读GPIOB_IDR寄存器,得到PB11信号线上的当时状况。
USART3模块共有5个信号,别离为TX、RX、CK、CTS和RTS,从上面给出的第二张图中能够看出,重映射是对一切信号一起有用。
这 5个信号中,在使能了USART3模块后,只要TX和RX是一直与对应的引出脚相连,而其它3个信号别离有独立的操控位,操控它们是否与外部引脚相连,假如程序中不运用某个信号的功用,则能够封闭这个信号的功用,对应的引脚能够做为其它功用的引出脚。例如,当封闭了USART3的CK、CTS和RTS功用而且没有重映射USART3时,PB12、PB13和PB14能够作为通用输入输出端口运用,也能够作为其它模块的复用功用引出脚。