新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32管教復用與重映射關系

        STM32管教復用與重映射關系

        作者: 時間:2018-08-07 來源:網絡 收藏

        概括一下:復用就是一個引腳有幾個功能,1.做普通IO輸入輸出  2.其他外設的輸入輸出(比如I2C,TIM,SPI等等),這就是復用。

        本文引用地址:http://www.104case.com/article/201808/385578.htm

        就是將引腳功能重新定義到其他引腳,例如PA9是USART1-TX默認的管腳,但是現在PA9用做它用了,那可以將USART1-TX重新映射到PB6,當然這種映射不是隨意的想映射到哪個腳就哪個腳,芯片內部已經固定了只能映射到固定的地方

        MCU復位后PA8的默認功能是普通IO管腳,我想將它設為TIM1的PWM-CH1復用輸出,如下圖,通過設置TIM_REMAP[1:0]寄存器,可以實現(沒有)(部分)(完全重映射)三種映射。

        1 void TIM1_PWM_Init(u16 arr,u16 psc)

        2 {

        3 //

        4 RCC->APB2ENR=111; //開啟TIM1定時器

        5 GPIOA->CRH=0XFFFFFFF0; //清除PA8

        6 GPIOA->CRH|=0X0000000B; //設置PA8為頻率最大50MHZ復用推完輸出模式

        7

        8 TIM1->ARR=arr; //設置計數器自動重裝值

        9 TIM1->PSC=psc; //預分頻器設置

        10

        11 TIM1->CCMR1|=74; //CH1 PWM2模式

        12 TIM1->CCMR1|=13; //CH1預裝載使能

        13 TIM1->CCER|=10; //OC1輸出使能

        14 TIM1->BDTR|=115; //MOE主輸出使能

        15

        16 TIM1->CR1=0x0080; //ARPE使能

        17 TIM1->CR1|=0x01; //使能定時器1

        18 }

        那如果我PA8已經用作其他了。想將其重映射咋辦,看如下圖

        1 //TIM1_CH1 PWM復用重映射輸出

        2 void TIM1_PWM_Init(u16 arr,u16 psc)

        3 {

        4 RCC->APB2ENR=111; //TIM1時鐘使能

        5 RCC->APB2ENR|=16;//開啟PE時鐘(開啟待重映射管腳的時鐘)

        6 RCC->APB2ENR|=10;//開啟AFIO時鐘

        7

        8 GPIOE->CRH=0XFFFFFF0F; //PE9清除,待重映射引腳

        9 GPIOE->CRH|=0X000000B0; //PE9設置成復用推完輸出最大50MHZ

        10 AFIO->MAPR=0XFFFFFF3F; //TIM1_REMAP端口清除

        11 AFIO->MAPR|=0X000000C0; //TIM1_REMAP端口復用重映射功能開啟

        12

        13 TIM1->ARR=arr; //重裝載值

        14 TIM1->PSC=psc; //預分頻器值

        15

        16 TIM1->CCMR1|=74; //CH1 PWM2模式

        17 TIM1->CCMR1|=13; //CH1預裝載使能

        18 TIM1->CCER|=10; //OC1 輸出使能

        19 TIM1->BDTR|=115; //MOE主輸出使能

        20

        21 TIM1->CR1=0x0080; //ARPE使能

        22 TIM1->CR1|=0x01; //使能定時器1

        23 }

        按照上圖 只有兩種映射 部分映射和完全映射 如果是部分映射 改變的是BKIN,CH1N,CH2N,CH3N這幾個腳而已,所以應該選完全映射 就可以將TIM1的PWM-CH1重映射到PE9這個腳去。

        關于這個問題,我的理解是:例如上圖,假如說 連CH2 CH3 CH4也以前用了的話 那就沒辦法了 都會一起被重新映射走了,也就說CH2=PE11 CH3=PE13 CH4 =PE14沒辦法只做到只映射了一個過來而已。

        那如果說只使用了CH1的話 那就不會有影響 PE11 PE13 PE14照樣當做普通IO使用不用將這幾個管腳的復用功能打開就可以了 。

        『本文轉載自網絡,版權歸原作者所有,如有侵權請聯系刪除』

        • 單片機中文官網
        • 單片機官方開發工具
        • 單片機參考設計


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 平顶山市| 招远市| 即墨市| 建湖县| 永泰县| 刚察县| 石台县| 蕉岭县| 蒲城县| 万荣县| 邯郸县| 赣州市| 南昌县| 石狮市| 尚志市| 九台市| 余姚市| 左权县| 育儿| 剑河县| 汉寿县| 莲花县| 衡水市| 沙雅县| 金沙县| 蓬莱市| 且末县| 宁都县| 肃宁县| 武城县| 高雄县| 当阳市| 奎屯市| 合肥市| 泸水县| 河东区| 泽州县| 固阳县| 昌乐县| 微山县| 巴中市|