正點原子STM32探索者學習筆記4

2022-08-29 17:06:21 字數 1510 閱讀 5201

編寫者:龍詩科

2015-5-19

io引腳復用與對映

stm32有很多的內建外設,這些外設的外部引腳都是與gpio復用的。也就是說,乙個gpio如果可以復用為內建外設的功能引腳,那麼當這個gpio作為內建外設使用的時候,就叫做復用。

例如串列埠1 的傳送接收引腳是pa9,pa10,當我們把pa9,pa10不用作gpio,而用做復用功能串列埠1的傳送接收引腳的時候,叫埠復用。

stm32f4的埠復用對映原理

stm32f4系列微控制器io引腳通過乙個復用器連線到內建外設或模組。該復用器一次只允許乙個外設的復用功能(af)連線到對應的io口。這樣可以確保共用同乙個io引腳的外設之間不會發生衝突。

每個io引腳都有乙個復用器,該復用器採用16路復用功能輸入(af0到af15),可通過gpiox_afrl(針對引腳0-7)和gpiox_afrh(針對引腳8-15)暫存器對這些輸入進行配置,每四位控制一路復用。

埠復用對映示意圖

復用功能對映配置

以pa9\pa10復用為串列埠1的配置過程為例,其**如下:

rcc_ahb1periphclockcmd(rcc_ahb1periph_gpioa,enable); //

使能gpioa時鐘 ①

rcc_apb2periphclockcmd(rcc_apb2periph_usart1,enable);//

使能usart1時鐘 ② //

usart1埠配置③

gpio_initstructure.gpio_pin = gpio_pin_9 | gpio_pin_10; //

gpioa9與gpioa10

gpio_initstructure.gpio_mode = gpio_mode_af;//

復用功能

gpio_initstructure.gpio_speed = gpio_speed_50mhz; //

速度50mhz

gpio_initstructure.gpio_otype = gpio_otype_pp; //

推挽復用輸出

gpio_initstructure.gpio_pupd = gpio_pupd_up; //

上拉gpio_init(gpioa,&gpio_initstructure); //

初始化pa9,pa10

//串列埠1對應引腳復用對映 ④

gpio_pinafconfig(gpioa,gpio_pinsource9,gpio_af_usart1); //

gpioa9復用為usart1

gpio_pinafconfig(gpioa,gpio_pinsource10,gpio_af_usart1); //

gpioa10復用為usart1

正點原子的STM32記憶體管理筆記

記憶體管理指的是,軟體執行時對計算機記憶體資源的分配和使用的技術。目的是如何高效 快速的分配,並在適當的時候釋放和 記憶體資源。分塊式記憶體管理 從上圖可以看出,分塊式記憶體管理由記憶體池和記憶體管理錶兩部分組成。首先必須要有記憶體池,也就是分配的記憶體空間,然後是記憶體管理表 記憶體池被等分為 n...

stm32正點原子學習筆記(28)外部中斷

同一時間,只能有乙個io口對映到中斷線,例如,當pa0做了外部中斷0時,pb0等就不能作為外部中斷0了。3 按鍵初始化函式 4void key init void io初始化520 21 unsigned char key scan unsigned char mode 2233 else if k...

戰艦stm32 正點原子 OLED的中文顯示

問題描述 學習完正點原子的oled顯示實驗,很多人會發現只能使螢幕顯示英文,即使顯示中文也只能是2n n畫素,或是亂碼。本文將向您介紹如何解決這個問題。開發工具 正點原子戰艦開發板v3 keil 5 pctolcd2002完美版 解決方法 1 開啟 pctolcd2002完美版 軟體,開啟 選項 面...