編寫者:龍詩科
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完美版 軟體,開啟 選項 面...