STM32F10系列的管腳復用功能和AFIO

2021-06-20 23:45:29 字數 873 閱讀 5181

最近用stm32的spi介面和ti的cc3000通訊,首先配置spi介面,按照網路關於spi介面的配置例程配置好以後,發現spi不工作,用while迴圈傳送資料時,clk和mosi管腳沒有輸出訊號,然後各種找問題:首先檢查時鐘,然後看看各個管腳能不能被置位,復位,發現其gpio功能都是正常的。後來認真看手冊,找出了原因,就是管腳的復用功能沒有注意。僅僅看人家的歷程,不理解為何這麼做是行不通的。

spi的配置下,要開啟gpio口的時鐘,外設spi的時鐘,例如spi1的話:rcc_apb2periphclockcmd(rcc_apb2periph_spi1 |rcc_apb2periph_gpioa,enable);

由於spi功能是gpio的乙個復用功能,所以在定義管腳時,要選擇復用模式的下的輸入輸出模式。一般情況下的io口在復位後變成預設的gpio功能,其復用的功能要對它進行配置才能工作,如stm32f10xx系列的pa5其復位以後是普通io口,其復用功能才是spi口clk管腳,所以在配置pa5為clk管腳時要選擇復用下的模式,就是gpio_mode_af_pp和gpio_mode_af_od中的一種。不能選擇其它的輸出模式。這一點在資料手冊中也有相關的說明。當時就是沒有注意這個細節,浪費了3個小時的時間。

查閱了一些資料,對管腳復用和管腳對映方面的概念做一下總結。管腳復用和管腳對映都是為了實現stm32外設功能而提出的概念,將預設的實現外設功能的引腳用其它可選的引腳來實現外設功能較管腳對映。管腳對映時要開啟afio時鐘,在下面的三種情況下要開啟afio時鐘:管腳重對映、外部中斷exti、事件。要使用復用功能時,要開啟外設(相對於m3核心而言st自己加入的外設,如spi介面,iis介面,ad等)的gpio口時鐘,同時開啟外設的時鐘,輸出管腳選擇gpio_mode_af_pp和gpio_mode_af_od中的一種,使能外設模組。

嵌入式STM32F10學習 跑馬燈實驗

使用藍橋杯ct117e板子 庫函式版本 gpio輸出方式 推挽輸出 io口輸出高電平,led滅,輸出低電平,led點亮。鎖存器高電平開啟,低電平關閉 電路圖對應 鎖存口 le n le m pd2 led燈 d1 d8 h d0 h d7 m pc8 m pc15 define led0 pcout...

STM32F10x系列 中斷

概念問題 中斷與事件有什麼聯絡與區別?stm32之中斷與事件 中斷與事件的區別 簡單概括下。中斷 cpu單執行緒情況下只能處理單一任務,在有零時任務需要處理時,可以暫時放下當前任務,優先處理零時任務,再回過來處理之前的任務。多個中斷可以進行巢狀,比如產生了多個零時任務,那麼就可以按照優先順序處理這多...

STM32F105 USB管腳Vbus的處理

源 stm32f105 usb管腳vbus的處理 對於stm32f105 107來說,為了監測usb的連線問題,程式預設是通過vbus管腳進行檢查的。但是vbus管腳和uart1的txd復用,導致我們在使用uart1傳送資料時候,usb重啟的問題。為了解決這個問題,本人查了大量的資料和諮詢了不太靠譜...