<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STM32 復用 與 重映射(USART Remap)

STM32 復用 與 重映射(USART Remap)

作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò ) 收藏
大家好,從今天開(kāi)始.本人將自己在工作中遇到的問(wèn)題 和學(xué)習體會(huì ) 跟大家一起分享并探討.下面跟大家說(shuō)一下STM32單片機的端口重映射,因為是以自己為實(shí)例.這里是以USART1的重映射為例..

因為我要一個(gè)TFT_LCD屏的主控板,考慮到FSMC 我選用了STM32F103VCT6 型號的CPU,一不小心串口接到USART1上了.因為在調程序時(shí)才發(fā)現錯了,沒(méi)得辦法,只能通過(guò)端口重映射來(lái)解決.但是以前沒(méi)用過(guò)端口重映射,只聞其名,未用其身,所以..呵呵 ...只能從頭去看了.

本文引用地址:http://dyxdggzs.com/article/201611/316279.htm

STM32上有很多I/O口,也有很多的內置外設想I2C,ADC,ISP,USART等 ,為了節省引出管腳,這些內置外設基本上是與I/O口共用管腳的,也就是I/O管腳的復用功能。但是STM32還有一特別之處就是:很多復用內置的外設的I/O引腳可以通過(guò)重映射功能,從不同的I/O管腳引出,即復用功能的引腳是可通過(guò)程序改變的.讀到這里相信大家都應該了解了端口重映射的一些概念了.原理上的東西不細說(shuō)了,大家可以看手冊或者網(wǎng)上查,這方面的資料還是很多的.下面說(shuō)說(shuō)我的調試經(jīng)歷.

上面說(shuō)過(guò),我用的CPU是STM32F103VCT6 ,說(shuō)到這兒跟大家提一個(gè)小插曲.當時(shí)在老板讓我換方案也就是CPU時(shí),只說(shuō)用VC的CPU,讓我把要買(mǎi)的CPU告訴負責買(mǎi)器件的人,由于我是第一次做,所以傻乎乎的寫(xiě)了張紙給了對方.內容是"STM32F103VC 10PCS"對方看了一眼就給我退了回來(lái)并加一句"型號不對,沒(méi)寫(xiě)全".我沒(méi)明白,便也不好繼續問(wèn)白癡問(wèn)題,所以跑網(wǎng)上查,原來(lái)光這個(gè)CPU就不止一種.我們選用的是T6也就是LQFP封裝的 工作環(huán)境為-40C -- 80C.所以說(shuō)大家以后小心點(diǎn)兒 ..言規正傳.不知道是什么原因 PCB制圖時(shí)把串口接到USART1上了,當時(shí)也沒(méi)在意,等我把USART測試程序寫(xiě)好燒進(jìn)去硬件仿真時(shí),串口給的是亂碼,我當時(shí)就覺(jué)得奇怪.把程序檢查了好幾遍就是查不出問(wèn)題來(lái),以為是硬件有問(wèn)題,但突然想到了STM有復用功能,心想會(huì )不會(huì )是這里有鬼?于是找來(lái)datasheet 一看 ,真相大白


三個(gè)紅框交匯處.STM32F103VCT6 這個(gè)CPU的USART1接的是PB6/PB7 但是上電初始化后 默認功能并非是USART1.所以想要用串口功能 .必須用端口重映射..

大家知道,STM32的單片機每個(gè)功能模塊有自己的時(shí)鐘系統,所以要想要調用STM32單片機的功能模塊時(shí) 必須先配置對應時(shí)鐘,然后才能去操作相應的功能模塊.端口重映射也一樣.如圖示:

重映射步驟為:

1.打開(kāi)重映射時(shí)鐘和USART重映射后的I/O口引腳時(shí)鐘,

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);

2.I/O口重映射開(kāi)啟.

GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);

3.配制重映射引腳,這里只需配置重映射后的I/O,原來(lái)的不需要去配置.

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);

只需要這三步,串口就可以正常使用了,簡(jiǎn)單吧? 但是我糾結了大半個(gè)小時(shí)才搞定的,好多事情都是說(shuō)起來(lái)容易做起來(lái)難的,希望我以后多多進(jìn)步.不要眼高手低,嗯 我正朝這個(gè)方向前進(jìn).





加點(diǎn)自己的東西

簡(jiǎn)單的說(shuō) STM32的 io 有3個(gè)功能 一個(gè)是默認的 一個(gè)是復用 一個(gè)是重映射功能(這個(gè)其實(shí)也屬于復用)

如果配置成復用 則將使用第2個(gè)功能 如果配置成復用 同時(shí) 相應的重映射配置了 則將使用第3個(gè)功能

通常一個(gè)口的 復用+重映射有好多 不止兩個(gè) 這時(shí)候就看你使能哪個(gè)設備了

開(kāi)復用 + 使能設備+ 是否重映射 就可以決定這個(gè)io口 到底使用哪個(gè)功能



關(guān)鍵詞: STM32復用重映

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>