1. 程式人生 > >STM32自學筆記——複用重對映

STM32自學筆記——複用重對映

埠複用

什麼事埠複用:
STM32有很多的內建外設,這些外設的外部引腳都是與GPIO複用的。也就是說,一個GPIO如果可以複用為內建外設的功能引腳,那麼當這個GPIO作為內建外設使用的時候,就叫做複用。
如何使用:
1.使能GPIO時鐘
2.使能複用功能的時鐘
3.依據資料手冊設定GPIO口資料
eg.

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//①IO時鐘使能

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//②外設時鐘使能

//③初始化IO為對應的模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9//複用推輓輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10 PA.10 浮空輸入 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空輸入 GPIO_Init(GPIOA, &GPIO_InitStructure);

埠重對映

什麼是埠重對映:
每個內建外設都有若干個輸入輸出引腳,一般這些引腳的輸出埠都是固定不變的,為了讓設計工程師可以更好地安排引腳的走向和功能,在STM32中引入了外設引腳重對映的概念,即一個外設的引腳除了具有預設的埠外,還可以通過設定重對映暫存器的方式,把這個外設的引腳對映到其它的埠。為了使不同器件封裝的外設IO功能數量達到最優,可以把一些複用功能重新對映到其他一些引腳上。STM32中有很多內建外設的輸入輸出引腳都具有重對映(remap)的功能
如何使用:
1.使能重對映後的IO口
2.使能功能外設時鐘
3.使能AFIO時鐘
4. 依據資料手冊設定GPIO口資料
5..開啟重對映
eg.

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//①IO時鐘使能

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//②外設時鐘使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);③複用時鐘使能

//④初始化IO為對應的模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9//複用推輓輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10 PA.10 浮空輸入
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空輸入
GPIO_Init(GPIOA, &GPIO_InitStructure);  

GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);//開啟重對映

question

AFIO時鐘什麼時候開啟:
對暫存器AFIO_MAPR,AFIO_EXTICRX和AFIO_EVCR進行讀寫操作前,應當首先開啟AFIO時鐘。
AFIO_MAPR:配置複用功能重對映
AFIO_EXTICRX:配置外部中斷線對映
AFIO_EVCR: 配置EVENTOUT事件輸出

什麼是部分重對映什麼是完全重對映:
這裡寫圖片描述
部分重對映中有部分引腳和沒有重對映重疊

為什麼這樣設計:
1.節省IO口數量
2.方便PCB減少訊號的交叉干擾
3.可以達到分時複用的目的