STM32學習筆記(5)端口複用及重映射簡介

端口複用

端口複用介紹

STM32 有很多的內置外設,這些外設的外部引腳都是與 GPIO 複用的。也就是說,一個 GPIO如果可以複用爲內置外設的功能引腳,那麼當這個 GPIO 作爲內置外設使用的時候,就叫做複用。

具體哪些 GPIO 管腳是可以複用爲哪些內置外設的參考相關資料。(《STM32 中文參考手冊 V10》的 P109, P116~P121 )

外設: 外部設備簡稱“外設”,是指連在計算機主機以外的硬件設備。對數據和信息起着傳輸、轉送和存儲的作用,是計算機系統中的重要組成部分

複用端口初始化步驟

1.使能相應GPIO 端口時鐘。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOA

2.複用的外設時鐘使能。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); 
//爲了端口 PA9,PA10 複用爲串口,使能串口時鐘 

3.配置端口模式:GPIO_Init()函數
不同複用外設參考相應資料(《STM32 中文參考手冊 V10》 8.1.11 一節內容)

例:PA9,PA10複用爲串口1

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

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

//初始化IO爲對應模式
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_AF_PP; //模式選擇爲複用推輓輸出
 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
 GPIO_InitStructure.GPIO_Speed=  GPIO_Speed_50MHz;//速率選擇爲50M
 GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化GPIOA

 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IN_FLOATING; //模式選擇爲浮空輸入
 GPIO_Init(GPIOA,&GPIO_InitStructure);

重映射

重映射簡介

爲了使不同器件封裝的外設 IO 功能數量達到最優,可以把一些複用功能重新映射到其他一些引腳上。 (更好地安排引腳的走向與功能)

即一個外設的引腳除了具有默認的端口外,還可以通過設置重映射寄存器的方式,把這個外設的引腳映射到其它的端口。

重映射步驟

1.使能被重映射的IO端口時鐘。
2.使能被重映射的外設時鐘。
3.使能AFIO時鐘
4.開啓重映射

第三步,開啓AFIO的情況:
對寄存器AFIO_MAPR,AFIO_EXTICRX與AFIO_EVCR進行讀寫操作,則應打開AFIO時鐘
AFIO_MAPR:配置複用功能重映射
AFIO_EXTICRX:配置外部中斷線映射(X=1,2,3,4)
AFIO_EVCR:配置EVENTOUT事件輸出

例:將原PA9,PA10的複用串口1重映射到PB6,PB7

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能 GPIOB 時鐘

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //使能串口 1 時鐘

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //使能 AFIO 時鐘

GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);//開啓重映射,根據第一個參數確定部分重映射還是全部重映射

部分重映射:功能外設的部分引腳重新映射,還有一部分引腳是原來的默認引腳。
完全重映射:功能外設的所有引腳都重新映射。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章