STM32常用管脚重定义外设

为了优化64脚或100脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。设置复用重映射和调试I/O配置寄存器(AFIO_MAPR)实现引脚的重新映射。这时,复用功能不再映射到它们的原始分配上。(注意:重定义的引脚是固定的,不是想重定义到哪个引脚就可以到哪个引脚的!重映像一般只适用于100和144脚的封装!(具体看哪个外设))
一、常用可以重定义管脚外设。
1、定时器4的通道1到通道4可以从端口B重映射到端口D。
STM32常用管脚重定义外设_第1张图片
2、TIM1复用功能重映像。
STM32常用管脚重定义外设_第2张图片
3、USART1重映像。
STM32常用管脚重定义外设_第3张图片
4、I2C1复用功能重映射。
STM32常用管脚重定义外设_第4张图片
5、SPI1重映像。
STM32常用管脚重定义外设_第5张图片
二、管脚重映射配置。
1、①事件控制寄存器(AFIO_EVCR)、②复用重映射和调试I/O 配置寄存器(AFIO_MAPR)、③外部中断配置寄存器1(AFIO_EXTICR1)、④外部中断配置寄存器2(AFIO_EXTICR2)、⑤外部中断配置寄存器3(AFIO_EXTICR3)、⑥外部中断配置寄存器4(AFIO_EXTICR4),对以上寄存器进行读写操作前,应当首先打开AFIO(备用功能I/O)的时钟。
2、举例(以配置SPI1重映射为例)。
<1>RCC->APB2ENR|=1<<0;//开启AFIO时钟
<2>RCC->APB2ENR|=1<<3;//开启PB时钟(开启待重映射管脚的时钟)
   RCC->APB2ENR|=1<<2;//开启PA时钟(开启待重映射管脚的时钟)
<3>AFIO->MAPR|=1<<0; //SPI1端口复用功能开启
<4>GPIOB->CRL&=0XFF000FFF;// PB3、4、5配置为复用功能输出
   GPIOB->CRL|=0X00BBB000;
   GPIOA->CRH&=0X0FFFFFFF;// PA15配置为复用功能输出
   GPIOA->CRH|=0XB0000000;
<5>因为JTAG占用了PB3/PB4两个引脚,而这两个引脚恰好是SPI1映射后的引脚,所以我们要关闭JTAG-DP,关闭SW-DP(系统复位后的默认状态是启用SWJ但没有跟踪功能);
STM32常用管脚重定义外设_第6张图片

   操作寄存器关闭 :AFIO->MAPR|=4<<24;
   操作库函数关闭 :GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
<6>配置完成后即可将原来的管脚功能输入输出重新映射到重映射管脚上去,使用的时候是一样的。

你可能感兴趣的:(STM32)