stm32學習筆記 F1系列埠複用與重對映
STM32有很多的內建外設,這些外設的外部引腳都是與GPIO複用的。也就是說,一個GPIO如果可以複用為內建外設的功能引腳,那麼當這個GPIO作為內建外設使用的時候,叫做複用。
埠複用配置過程:
1>GPIO埠時鐘使能。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
2>複用外設時鐘使能。
比如你要將埠複用為串列埠,所以要使能串列埠時鐘。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
3>埠模式配置。 GPIO_Init()函式。
例:
PA9,PA10複用為串列埠1配置過程
//①IO時鐘使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
//②外設時鐘使能
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);
(2)埠重對映
每個內建外設都有若干個輸入輸出引腳,一般這些引腳的輸出埠都是固定不變的,為了讓設計工程師可以更好地安排引腳的走向和功能,在STM32中引入了外設引腳重對映的概念,即一個外設的引腳除了具有預設的埠外,還可以通過設定重對映暫存器的方式,把這個外設的引腳對映到其它的埠。
重對映的技術的要求背景:
1>I/O的複用:GPIO和內建外設公用引腳
2>I/O的重對映:複用功能(AFIO)從不同的GPIO管腳引出
3>方便了PCB的設計,潛在的減少了訊號的交叉干擾
4>分時複用某些外設,虛擬的增加了埠數目
部分重對映:功能外設的部分引腳重新對映,還有一部分引腳是原來的預設引腳。
完全重對映:功能外設的所有引腳都重新對映。
引腳重對映配置過程:
1>使能GPIO時鐘(重對映後的IO);
2>使能功能外設時鐘(例如串列埠1);
3>使能AFIO時鐘。重對映必須使能AFIO時鐘:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
4>開啟重對映。
GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);//根據第一個引數,來確定是部分重對映還是全部重對映
需要開啟AFIO輔助功能時鐘的情況:對暫存器AFIO_MAPR,AFIO_EXTICRX和AFIO_EVCR進行讀寫操作前,應當首先開啟AFIO時鐘。
AFIO_MAPR:配置複用功能重對映
AFIO_EXTICRX:配置外部中斷線對映
AFIO_EVCR: 配置EVENTOUT事件輸出