STM32學習筆記 AFIO時鐘的配置問題

2021-07-04 01:48:55 字數 737 閱讀 9500

最近在寫程式時發現設定外部中斷出了問題,之前的程式好好的怎麼就不能用了呢?經過了一晚上的折騰發現問題出在afio

時鐘的配置上,我沒有使能

afio

時鐘。

說的很明白,操作afio的三類暫存器時需要開啟: 

1.事件控制暫存器(afio_evcr)

2.復用重對映和除錯i/o配置暫存器(afio_mapr)

3.外部中斷配置暫存器x(afio_exticrx)

這三類其實是afio的全部暫存器, afio_evcr是事件相關的,afio_mapr是與重對映和除錯i/o相關的,afio_exticrx是與外部中斷相關的。因此管腳重對映和除錯i/o配置、外部中斷、事件時需開啟afio。

再回頭來看之前的程式能用就能理解了,在之前的程式中,我的主函式初始化區有這樣兩行**:

rcc->apb2enr |= 0x00000001;  //禁用jtag,開啟swd

afio->mapr = (0x00ffffff & afio->mapr)|0x02000000;   

這段**配置了jtag和swd引腳,同時配置了afio時鐘。所以在後面的外部中斷配置**中沒有操作afio也能實現功能。最終我在程式中加了這句話,問題完美解決。rcc_apb2periphclockcmd(rcc_apb2periph_afio,enable);  

stm32何時使用AFIO時鐘

afio 英文解釋為 alternate function i o?alternate 備用的 可替代的,因此,afio可譯為 備用功能i o 以備不時之需。但是我們一般都理解為復用時鐘,因為使用復用功能常常開啟這個時鐘,但是 串列埠也是復用,但是不需要開啟這個時鐘,為什麼spi相關的引腳也配置為復...

STM32的AFIO時鐘何時開啟

首先為什麼要開啟時鐘?答 因為要對暫存器進行讀寫!而在stm32中對暫存器的讀寫都是要開啟暫存器對應的時鐘才可以的 就像人一樣,有了跳動的脈搏手臂才能有能量才能進行各種動作 然後就什麼時候 afio 時鐘開啟 所有時鐘都是這樣 就清楚了 當需要對 afio 時鐘管理的暫存器 進行讀寫時 afio 時...

STM32學習 時鐘系統

眾所周知,時鐘系統是 cpu 的脈搏,就像人的心跳一樣。所以時鐘系統的重要性就不言而 喻了。stm32 的時鐘系統 stm32 的時鐘系統比較複雜,不像簡單的 51 微控制器乙個系統時鐘就可以解決一切。於 是有人要問,採用乙個系統時鐘不是很簡單嗎?為什麼 stm32 要有多個時鐘源呢?因為首先 st...