一、常用可以重定义管脚外设。
1、定时器4的通道1到通道4可以从端口B重映射到端口D。
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但没有跟踪功能);
操作寄存器关闭 :AFIO->MAPR|=4<<24;
操作库函数关闭 :GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
<6>配置完成后即可将原来的管脚功能输入输出重新映射到重映射管脚上去,使用的时候是一样的。