STM32什麼時候需要復用IO(AFIO)

2021-09-10 13:51:35 字數 1332 閱讀 9042

afio介紹:

mcu有對外管腳,包括cpu的管腳和內建外設(pwm,tim,adc……)的管腳;

他們都需要對外介面io,但是管腳總數是有限的,有的管腳既作為普通io,也作為外設io,有時候甚至好幾個內建外設共用乙個io,這就是管腳復用現象。

比如隨便乙個管腳的原理圖上:

pa2/usart2_tx/adc123_in2/tim5_ch3/tim2_ch3

表明這個管腳除了作為普通pa2之外,還作為復用io,有usart2,adc,tim5,tim2等……

總結:普通管腳就是gpio,復用管腳(非普通管腳)就是afio;

只要用到內建外設的管腳,都需要開啟復用io(afio),比如對外輸出pwm波形,使用ad轉換等。

2.假如是掛載在apb1下的內建外設,比如下圖中,也用到了afio,也不用開啟afio語句,而是直接開啟相應內建外設就行了;

說來說去,什麼時候用到開啟afio呢?

首先要有管腳復用功能afio;

其次被復用的管腳一定是掛載在apb2上的,因為afio就是在apb2上;

最後就是內建外設一定是上述apb2表中沒有的,因為apb2有的話,直接開啟就好了,也用不到開啟afio;

根據以上條件,開啟afio的只有一種情況,那就是:

掛載在apb1下的內建外設,經過重對映功能,把管腳對映到apb2上!

其實,一旦使用重對映功能,只能對映到apb2上,因為apb2表中第二個框子裡面包括了gpioa~e,幾乎所有的管腳了。

按鍵中斷並不是apb2表中帶有的復用,沒法直接開啟,所以要宣告開啟afio復用!

重對映內建外設步驟:

使能對映到的i/o埠時鐘

rcc_apb2periphclockcmd(rcc_apb2periph_gpiod, enable);

使能被新對映的外設時鐘

rcc_apb1periphclockcmd(rcc_apb1periph_usart2, enable);

使能afio功能的時鐘(勿忘!)

rcc_apb2periphclockcmd(rcc_apb2periph_afio, enable);

開啟重對映

gpio_pinremapconfig(gpio_remap_usart2, enable);

STM32的AFIO時鐘什麼時候需要開啟

相比於普通微控制器,stm32 擁有複雜的時鐘系統,相應的控制器稱為 rcc reset clock controller,復位與時鐘控制器 每個外設都配備了外設時鐘的開關,當我們不使用某個外設時,可以把這個外設時鐘關閉,從而降低 stm32 的整體功耗。因此,在我們使用外設前,必須要開啟相應外設的...

STM32的AFIO時鐘什麼時候需要開啟

相比於普通微控制器,stm32 擁有複雜的時鐘系統,相應的控制器稱為 rcc reset clock controller,復位與時鐘控制器 每個外設都配備了外設時鐘的開關,當我們不使用某個外設時,可以把這個外設時鐘關閉,從而降低 stm32 的整體功耗。因此,在我們使用外設前,必須要開啟相應外設的...

什麼時候需要建索引,什麼時候不需要?

什麼時候要索引?1 表的主鍵 外來鍵必須有索引 2 資料量超過300必須有索引 3 經常與其他表進行連線的表,在連線欄位上建立索引 4 經常出現在where子句的字段,特別是大表字段,必須建索引 5 索引應建立在小字段上,對於大文字字段甚至超長字段,不要建索引 什麼時候不需要索引?1 建立組合索引,...