溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

STM32端口復(fù)用及重映射是怎樣的

發(fā)布時(shí)間:2022-01-05 19:08:47 來(lái)源:億速云 閱讀:217 作者:柒染 欄目:互聯(lián)網(wǎng)科技

本篇文章為大家展示了STM32端口復(fù)用及重映射是怎樣的,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

下面跟大家說一下STM32單片機(jī)的端口重映射,因?yàn)槭且宰约簽閷?shí)例.這里是以USART1的重映射為例..

        因?yàn)槲乙粋€(gè)TFT_LCD屏的主控板,考慮到FSMC 我選用了STM32F103VCT6 型號(hào)的CPU,一不小心串口接到USART1上了.因?yàn)樵谡{(diào)程序時(shí)才發(fā)現(xiàn)錯(cuò)了,沒得辦法,只能通過端口重映射來(lái)解決.但是以前沒用過端口重映射,只聞其名,未用其身,所以..呵呵 ...只能從頭去看了.

         STM32上有很多I/O口,也有很多的內(nèi)置外設(shè)想I2C,ADC,ISP,USART等,為了節(jié)省引出管腳,這些內(nèi)置外設(shè)基本上是與I/O口共用管腳的,也就是I/O管腳的復(fù)用功能。但是STM32還有一特別之處就是:很多復(fù)用內(nèi)置的外設(shè)的I/O引腳可以通過重映射功能,從不同的I/O管腳引出,即復(fù)用功能的引腳是可通過程序改變的.讀到這里相信大家都應(yīng)該了解了端口重映射的一些概念了.原理上的東西不細(xì)說了,大家可以看手冊(cè)或者網(wǎng)上查,這方面的資料還是很多的.下面說說我的調(diào)試經(jīng)歷.

        不知道是什么原因 PCB制圖時(shí)把串口接到USART1上了,當(dāng)時(shí)也沒在意,等我把USART測(cè)試程序?qū)懞脽M(jìn)去硬件仿真時(shí),串口給的是亂碼,我當(dāng)時(shí)就覺得奇怪.把程序檢查了好幾遍就是查不出問題來(lái),以為是硬件有問題,但突然想到了STM有復(fù)用功能,心想會(huì)不會(huì)是這里有鬼?于是找來(lái)datasheet 一看 ,真相大白


三個(gè)紅框交匯處.STM32F103VCT6 這個(gè)CPU的USART1接的是PB6/PB7 但是上電初始化后默認(rèn)功能并非是USART1.所以想要用串口功能 .必須用端口重映射..

   大家知道,STM32的單片機(jī)每個(gè)功能模塊有自己的時(shí)鐘系統(tǒng),所以要想要調(diào)用STM32單片機(jī)的功能模塊時(shí) 必須先配置對(duì)應(yīng)時(shí)鐘,然后才能去操作相應(yīng)的功能模塊.端口重映射也一樣.如圖示:

重映射步驟為:

1.打開重映射時(shí)鐘和USART重映射后的I/O口引腳時(shí)鐘, 

          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);

2.I/O口重映射開啟.

                   GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);

3.配制重映射引腳, 這里只需配置重映射后的I/O,原來(lái)的不需要去配置.

                             GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
                             GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
                             GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
                             GPIO_Init(GPIOB, &GPIO_InitStructure);


                              GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
                              GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
                               GPIO_Init(GPIOB,&GPIO_InitStructure);

      只需要這三步,串口就可以正常使用了,簡(jiǎn)單吧?  但是我糾結(jié)了大半個(gè)小時(shí)才搞定的,好多事情都是說起來(lái)容易做起來(lái)難的,希望我以后多多進(jìn)步.不要眼高手低,嗯我正朝這個(gè)方向前進(jìn).



最后總結(jié)一下:

簡(jiǎn)單的說 STM32的 io 有3個(gè)功能一個(gè)是默認(rèn)的 一個(gè)是復(fù)用 一個(gè)是重映射功能(這個(gè)其實(shí)也屬于復(fù)用)

如果配置成復(fù)用 則將使用第2個(gè)功能 如果配置成復(fù)用 同時(shí) 相應(yīng)的重映射配置了 則將使用第3個(gè)功能

通常一個(gè)口的 復(fù)用+重映射有好多 不止兩個(gè) 這時(shí)候就看你使能哪個(gè)設(shè)備了(哪個(gè)被使能就用哪個(gè)) 

開復(fù)用 + 使能設(shè)備+ 是否重映射就可以決定這個(gè)io口到底使用哪個(gè)功能

上述內(nèi)容就是STM32端口復(fù)用及重映射是怎樣的,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI