您好,登錄后才能下訂單哦!
本篇文章為大家展示了STM32端口復用及重映射是怎樣的,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
下面跟大家說一下STM32單片機的端口重映射,因為是以自己為實例.這里是以USART1的重映射為例..
因為我要一個TFT_LCD屏的主控板,考慮到FSMC 我選用了STM32F103VCT6 型號的CPU,一不小心串口接到USART1上了.因為在調程序時才發現錯了,沒得辦法,只能通過端口重映射來解決.但是以前沒用過端口重映射,只聞其名,未用其身,所以..呵呵 ...只能從頭去看了.
STM32上有很多I/O口,也有很多的內置外設想I2C,ADC,ISP,USART等,為了節省引出管腳,這些內置外設基本上是與I/O口共用管腳的,也就是I/O管腳的復用功能。但是STM32還有一特別之處就是:很多復用內置的外設的I/O引腳可以通過重映射功能,從不同的I/O管腳引出,即復用功能的引腳是可通過程序改變的.讀到這里相信大家都應該了解了端口重映射的一些概念了.原理上的東西不細說了,大家可以看手冊或者網上查,這方面的資料還是很多的.下面說說我的調試經歷.
不知道是什么原因 PCB制圖時把串口接到USART1上了,當時也沒在意,等我把USART測試程序寫好燒進去硬件仿真時,串口給的是亂碼,我當時就覺得奇怪.把程序檢查了好幾遍就是查不出問題來,以為是硬件有問題,但突然想到了STM有復用功能,心想會不會是這里有鬼?于是找來datasheet 一看 ,真相大白
三個紅框交匯處.STM32F103VCT6 這個CPU的USART1接的是PB6/PB7 但是上電初始化后默認功能并非是USART1.所以想要用串口功能 .必須用端口重映射..
大家知道,STM32的單片機每個功能模塊有自己的時鐘系統,所以要想要調用STM32單片機的功能模塊時 必須先配置對應時鐘,然后才能去操作相應的功能模塊.端口重映射也一樣.如圖示:
重映射步驟為:
1.打開重映射時鐘和USART重映射后的I/O口引腳時鐘,
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);
2.I/O口重映射開啟.
GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);
3.配制重映射引腳, 這里只需配置重映射后的I/O,原來的不需要去配置.
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB,&GPIO_InitStructure);
只需要這三步,串口就可以正常使用了,簡單吧? 但是我糾結了大半個小時才搞定的,好多事情都是說起來容易做起來難的,希望我以后多多進步.不要眼高手低,嗯我正朝這個方向前進.
最后總結一下:
簡單的說 STM32的 io 有3個功能一個是默認的 一個是復用 一個是重映射功能(這個其實也屬于復用)
如果配置成復用 則將使用第2個功能 如果配置成復用 同時 相應的重映射配置了 則將使用第3個功能
通常一個口的 復用+重映射有好多 不止兩個 這時候就看你使能哪個設備了(哪個被使能就用哪個)
開復用 + 使能設備+ 是否重映射就可以決定這個io口到底使用哪個功能
上述內容就是STM32端口復用及重映射是怎樣的,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。