




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第6章通用、復用及重映射I/O6.1通用、復用和重映射I/O的關系通用I/O:通用I/O比較容易理解,就是作為普通的輸入輸出引腳;復用I/O:有些I/O口不僅可以作為普通I/O口使用,還可以設置為ADC、SPI等引腳,當I/O設置為ADC的輸入引腳時,就是使用了I/O的復用功能。一個I/O的復用功能可以為0個,也可以為多個,具體要看M3的型號。重映射I/O:重映射就是把外設默認的對應引腳重新定義到另一個引腳上邊;下面以外設I2C1說明,I2C1的兩個引腳I2C1_SCL、I2C1_SDA默認使用的是PB6、PB7,但是如果在開發設計時,PB6、PB7已經被使用,而我們又必須使用I2C1來進行數據傳輸,這時候,我們就要使用到了重映射,重映射后,I2C1_SCL和I2C_SDA分別對應PB8和PB9;這樣,我們就可以使用PB8和PB9作為I2C1的引腳來進行通信;需要說明的是,并不是每一個外設都可以進行重映射,即使可以進行重映射,也不是可以重映射到任意引腳,這個在芯片設計時已經固定了,不同型號的芯片是不一樣的;仍以I2C1為例,I2C1的重映射功能在36引腳芯片就不能使用,在非36引腳的芯片上邊,也只能重映射到PB8和PB9這兩個固定的引腳上邊。復用和重映射功能解決了外設多,而I/O數量一定的矛盾,靈活動態使用復用和重映射功能能夠使我們在一些產品的開發上邊事半功倍,比如,我們可以在某些時刻將I2C1對應PB6、PB7,某些時刻對應PB8、PB9,這樣涉及到通信的程序就無需進行改動,硬件上邊就可以實現引腳的切換。6.2通用I/O寄存器描述6.2.1各種輸入輸出模式介紹模擬輸入:一般是作為ADC采集時使用。上拉/下拉輸入:引腳內部接上拉/下拉電阻后作為輸入引腳;浮空輸入:顧名思義,就是引腳既沒有上拉也沒有下拉,懸空作為輸入,此時引腳為高阻態模式,當外部沒有明確的高電平或者低電平輸入時,引腳讀出的0和1沒有實際意義。M3芯片引腳輸入內部結構如圖6-1圖6-1M3芯片輸入引腳內部結構圖(1)VDD_FT與VDD不同,它是容忍5V電平的特殊處理電源,不是所有的I/O都接VDD_FT開漏輸出:就是I/O不輸出電壓,在低電平時接地,在高電平時類似浮空,需要外接上拉電阻,開漏輸出一般在外接電壓高于M3芯片電壓時使用,當引腳容忍5V時,外接5V上拉,可以將輸出高電平拉到5V,不能容忍5V的引腳作為開漏輸出時意義不大,即使外接5V的上拉,輸出高電平時仍然只能輸出3.3V。推挽輸出:這種模式下,I/O引腳通過MOS管進行輸出放大,輸出高電平時為3.3V,輸出電流最大50mA,驅動能力比較強。M3芯片引腳輸出內部結構如圖6-2圖6-2M3芯片輸出引腳內部結構圖(1)VDD_FT與VDD不同,它是容忍5V電平的特殊處理電源,不是所有的I/O都接VDD_FT6.2.2端口配置低寄存器GPIOx_CRL (x=A...E)每個I/O需要4位進行輸入輸出的配置,M3芯片每個寄存器是32位,所以一個寄存器只能配置8個引腳,M3芯片每組端口一般有16個I/O,所以,端口配置分高和低寄存器,高寄存器配置8~15引腳,低寄存器配置0~7引腳。偏移地址:0x00復位值:0x4444444431302928272625242322212019181716CNF7[1:0]MODE7[1:0]CNF6[1:0]MODE6[1:0]CNF5[1:0]MODE5[1:0]CNF4[1:0]MODE4[1:0]RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW1514131211109876543210CNF3[1:0]MODE3[1:0]CNF2[1:0]MODE2[1:0]CNF1[1:0]MODE1[1:0]CNF0[1:0]MODE0[1:0]RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW位31:3027:2623:2219:1815:1411:107:63:2CNFy[1:0]:端口x配置位(y=0…7)軟件通過這些位配置相應的I/O端口在輸入模式(MODE[1:0]=00):
00:模擬輸入模式
01:浮空輸入模式(復位后的狀態)10:上拉/下拉輸入模式
11:保留
在輸出模式(MODE[1:0]>00):
00:通用推挽輸出模式
01:通用開漏輸出模式
10:復用功能推挽輸出模式
11:復用功能開漏輸出模式位29:2825:2421:2017:1613:129:85:41:0MODEy[1:0]:端口x的模式位(y=0…7)軟件通過這些位配置相應的I/O端口。00:輸入模式(復位后的狀態)01:輸出模式,最大速度10MHz10:輸出模式,最大速度2MHz11:輸出模式,最大速度50MHz6.2.3端口配置高寄存器GPIOx_CRH (x=A...E)偏移地址:0x04復位值:0x4444444431302928272625242322212019181716CNF15[1:0]MODE15[1:0]CNF14[1:0]MODE14[1:0]CNF13[1:0]MODE13[1:0]CNF12[1:0]MODE12[1:0]RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW1514131211109876543210CNF11[1:0]MODE11[1:0]CNF10[1:0]MODE10[1:0]CNF9[1:0]MODE9[1:0]CNF8[1:0]MODE8[1:0]RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW位31:3027:2623:2219:1815:1411:107:63:2CNFy[1:0]:端口x配置位(y=8…15)軟件通過這些位配置相應的I/O端口在輸入模式(MODE[1:0]=00):
00:模擬輸入模式
01:浮空輸入模式(復位后的狀態)10:上拉/下拉輸入模式
11:保留
在輸出模式(MODE[1:0]>00):
00:通用推挽輸出模式
01:通用開漏輸出模式
10:復用功能推挽輸出模式
11:復用功能開漏輸出模式位29:2825:2421:2017:1613:129:85:41:0MODEy[1:0]:端口x的模式位(y=8…15)軟件通過這些位配置相應的I/O端口。00:輸入模式(復位后的狀態)01:輸出模式,最大速度10MHz10:輸出模式,最大速度2MHz11:輸出模式,最大速度50MHz6.2.4端口輸入數據寄存器GPIOx_IDR(x=A...E)偏移地址:Ox08復位值:0x0000XXXX31302928272625242322212019181716保留1514131211109876543210RRRRRRRRRRRRRRRR位31:16保留,讀出數據始終為0位15:0端口輸入數據,這些位只讀,讀出值對應I/O狀態6.2.5端口輸出數據寄存器GPIOx_ODR(x=A...E)偏移地址:0x0C復位值:0x0000000031302928272625242322212019181716保留1514131211109876543210ODR15ODR14ODR13ODR12ODR11ODR10ODR9ODR8ODR7ODR6ODR5ODR4ODR3ODR2ODR1ODR0RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW在I/O作為輸出狀態下,設置該寄存器輸出對應電平;在I/O作為輸入狀態下,設置該寄存器對應位作為上拉/下拉輸入,1為上拉輸入,0為下拉輸入。位31:16保留,讀出始終為0位15:0這些位可讀可寫6.2.6端口位設置/清除寄存器GPIOx_BSRR(x=A...E)偏移地址:0x10復位值:0x0000000031302928272625242322212019181716BR15BR14BR13BR12BR11BR10BR9BR8BR7BR6BR5BR4BR3BR2BR1BR0WWWWWWWWWWWWWWWW1514131211109876543210BS15BS14BS13BS12BS11BS10BS9BS8BS7BS6BS5BS4BS3BS2BS1BS0WWWWWWWWWWWWWWWW位31:16BRy:清除端口x的位y(y=0…15)這些位只能寫入并只能以字(16位)的形式操作。
0:對對應的ODRy位不產生影響
1:清除對應的ODRy位為0注:如果同時設置了BSy和BRy的對應位,BSy位起作用。位15:0BSy:設置端口x的位y(y=0…15)這些位只能寫入并只能以字(16位)的形式操作。
0:對對應的ODRy位不產生影響
1:設置對應的ODRy位為1單獨操作GPIOx_ODR就可以完全控制I/O的輸出了,但是有時候我們需要單獨設置一個位來單獨操作一個引腳,而又不影響其他引腳的輸出狀態,如果用GPIOx_ODR來實現這個功能;以PA3為例,單獨設置PA3輸出低電平,我們就需要這樣寫:unsignedintoldState;oldState=GPIOA_ODR; //先讀出當前PAI/O狀態oldState=oldState&(~(1<<3));//將第3位清0GPIOA_ODR=oldState; //重新賦值給GPIOA_ODR如果用GPIOA_BSRR,那這個操作就簡單多了,實現同樣的功能,寫法如下:GPIOA_BSRR=((1<<3)<<16);//設置BR3為1,其他位都為06.2.7端口位清除寄存器GPIOx_BRR(x=A...E)偏移地址:0x14復位值:0x0000000031302928272625242322212019181716保留1514131211109876543210BR15BR14BR13BR12BR11BR10BR9BR8BR7BR6BR5BR4BR3BR2BR1BR0WWWWWWWWWWWWWWWW位31:16保留位15:0BRy:清除端口x的位y(y=0…15)這些位只能寫入并只能以字(16位)的形式操作。
0:對對應的ODRy位不產生影響
1:清除對應的ODRy位為0GPIOx_BRR的功能和GPIOx_BSRR的高16位功能完全相同。6.2.8端口配置鎖定寄存器GPIOx_LCKR(x=A...E)端口配置鎖定寄存器,顧名思義,它的作用就是鎖定I/O端口的配置,使鎖定端口在下次復位之前都不能再更改配置。鎖定I/O配置,需要先按一定時序執行LOCK序列,相當于一把鑰匙,只有鑰匙對了,才能開鎖的原理;只有LOCK序列對了,才能進行鎖定,否則鎖定是無效的。偏移地址:0x18復位值:0x0000000031302928272625242322212019181716保留LCKK(RW)1514131211109876543210LCK15LCK14LCK13LCK12LCK11LCK10LCK9LCK8LCK7LCK6LCK5LCK4LCK3LCK2LCK1LCK0RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW位31:17保留位16LCKK:鎖鍵
該位可隨時讀出,它只可通過鎖鍵寫入序列修改。
0:端口配置鎖鍵位激活
1:端口配置鎖鍵位被激活,下次系統復位前GPIOx_LCKR寄存器被鎖住。
鎖鍵的寫入序列:寫1->寫0->寫1->讀0->讀1最后一個讀可省略,但可以用來確認鎖鍵已被激活。
注:在操作鎖鍵的寫入序列時,不能改變LCK[15:0]的值。
操作鎖鍵寫入序列中的任何錯誤將不能激活鎖鍵。
位15:0LCKy:端口x的鎖位y(y=0…15)這些位可讀可寫但只能在LCKK位為0時寫入。
0:不鎖定端口的配置
1:鎖定端口的配置
6.3復用和重映射對應引腳6.3.1重映射初探引腳重映射會用到一個寄存器:復用重映射和調試I/O配置寄存器(AFIO_MAPR),注意這是一個寄存器的名字,而不是兩個寄存器。為了方便讀者理解本節內容,先簡單描述一下AFIO_MAPR寄存器,下個章節會對AFIO所有寄存器進行全面的講解。小、中、大容量芯片復用重映射和調試I/O配置寄存器(AFIO_MAPR)31302928272625242322212019181716保留SWJ_CFG[2:0]保留ADC2_ETRGREG_REMAPADC2_ETRGINJ_REMAPADC1_ETRGREG_REMAPADC1_ETRGINJ_REMAPTIM5CH4_IREMAPWWWRWRWRWRWRW1514131211109876543210PD01_REMAPCAN_REMAP[1:0]TIM4_REMAPTIM3_REMAP[1:0]TIM2_REMAP[1:0]TIM1_REMAP[1:0]USART3_REMAP[1:0]USART2_REMAPUSART1_REMAPI2C1_REMAPSPI1_REMAPRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW互聯型芯片復用重映射和調試I/O配置寄存器(AFIO_MAPR)31302928272625242322212019181716保留PTP_PPS_REMAPTIM2ITR1_REMAPSPI3_REMAP保留SWJ_CFG[2:0]MII_RMII_SELCAN2_REMAPETH_REMAP保留TIM5CH4_IREMAPRWRWRWWWWRWRWRWRW1514131211109876543210PD01_REMAPCAN1_REMAP[1:0]TIM4_REMAPTIM3_REMAP[1:0]TIM2_REMAP[1:0]TIM1_REMAP[1:0]USART3_REMAP[1:0]USART2_REMAPUSART1_REMAPI2C1_REMAPSPI1_REMAPRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW6.3.2把OSC32_IN/OSC32_OUT作為GPIO端口PC14/PC15當把LSE振蕩器關閉時,可以把OSC32_IN/OSC32_OUT用作PC14/PC15,默認狀態下,LSE打開,需要程序關掉LSE,才能配置為PC14/PC15。當關閉1.8V電壓區(進入待機模式)或后備區域使用VBAT供電(不再有VDD供電)時,不能使用PC14/PC15的GPIO口功能;注:由于PC13、PC14、PC15使用電源開關進行供電,而這個電源開關只能吸收有限的電流(3mA),因此,這三個引腳在同一時間只能有一個引腳作為輸出,且工作在2MHz模式下,不能作為電流源。6.3.3把OSC_IN/OSC_OUT作為GPIO端口PD0/PD1對于OSC_IN/OSC_OUT引腳來說,它的默認功能是作為晶振的輸入輸出引腳,復用功能才是作為GPIO;PD01_REMAP=0PD01_REMAP=1OSC_INPD0OSC_OUTPD16.3.4CAN1復用功能重映射CAN信號可以被映射到A、B、D端口,在36、48、64引腳封裝的芯片上,沒有端口D的重映射。1.在互聯型產品里是AN_RX/AN_TX;其他帶有單個CAN的產品里是CAN_RX/CAN_TX。2.重映射不適用與36引腳封裝的芯片。3.當PD0和PD1沒有被重映射到OSC_IN/OSC_OUT時,該重映射只適用于100和144引腳封裝的芯片。復用功能(1)CAN_REMAP=00CAN_REMAP=10(2)CAN_REMAP=11(3)CAN1_RX或AN_RXPA11PB8PD0CAN1_TX或AN_TXPA12PB9PD16.3.5CAN2復用功能重映射在互聯型產品中才有CAN2接口。復用功能CAN2_REMAP=0CAN2_REMAP=1CAN_RXPB12PB5CAN_TXPB13PB66.3.6JTAG/SWD復用功能重映射JTAG/SWD是調試端口,復位默認作為調試端口,要作為GPIO使用時,需要手動關閉JTAG或者SWD;調試接口如下:復用功能GPIO端口JTMS/SWDIOPA13JTCK/SWCLKPA14JTDIPA15JTDO/TRACESWOPB3JNTRSTPB4TRACECKPE2TRACED0PE3TRACED1PE4TRACED2PE5TRACED3PE6為了使用更多的I/O,就需要關掉JTAG,使用SWD,或者在產品開發結束后,要完全關掉JTAG或者SWD,就需要設置SWJ_CFG[2:0];SWJ_CFG[2:0]可能的調試端口SWJI/O引腳分配PA13/JTMS/SWDIOPA14/JTCK/SWCLKPA15/JTDIPB3/JTDO/TRACESWOPB4/NJTRST000JTAG+SWDI/O不可用I/O不可用I/O不可用I/O不可用I/O不可用001JTAG+SWD,但沒有JNTRSTI/O不可用I/O不可用I/O不可用I/O不可用I/O可用010JTAG關閉SWD啟用I/O不可用I/O不可用I/O可用I/O可用(1)I/O可用100JTAG關閉SWD關閉I/O可用I/O可用I/O可用I/O可用I/O可用其他禁用6.3.7ADC復用功能重映射此部分重映射只適用于大容量產品。ADC1外部觸發注入轉換復用功能重映射ADC1外部觸發規則轉換復用功能重映射復用功能ADC1_ETRGINJ_REMAP=0ADC1_ETRGINJ_REMAP=1ADC1外部觸發注入轉換
ADC1外部觸發注入轉換與EXTI15相連ADC1外部觸發注入轉換與TIM8_CH4相連
復用功能ADC1_ETRGREG_REMAP=0ADC1_ETRGREG_REMAP=1ADC1外部觸發規則轉換
ADC1外部觸發規則轉換與EXTI11相連ADC1外部觸發規則轉換與TIM8_TRGO相連
ADC2外部觸發注入轉換復用功能重映射ADC2外部觸發規則轉換復用功能重映射復用功能ADC2_ETRGINJ_REMAP=0ADC2_ETRGINJ_REMAP=1ADC2外部觸發注入轉換
ADC2外部觸發注入轉換與EXTI15相連ADC2外部觸發注入轉換與TIM8_CH4相連
復用功能ADC2_ETRGREG_REMAP=0ADC2_ETRGREG_REMAP=1ADC2外部觸發規則轉換
ADC2外部觸發規則轉換與EXTI11相連ADC2外部觸發規則轉換與TIM8_TRGO相連
6.3.8定時器復用功能重映射TIM5復用功能重映像(只適用于大容量和互聯型產品)TIM4復用功能重映像復用功能TIM5CH4_IREMAP=0TIM5CH4_IREMAP=1TIM5_CH4TIM5的通道4連至PA3LSI內部時鐘連至TIM5_CH4的輸入作為校準使用
復用功能0TIM4_REMAP=0TIM4_REMAP=1(1)TIM4_CH1PB6PD12TIM4_CH2PB7
PD13
TIM4_CH3PB8
PD14
TIM4_CH4PB9
PD15
TIM3復用功能重映像1.只適用于64、100、144封裝復用功能TIM3_REMAP[1:0]=00TIM3_REMAP[1:0]=10TIM3_REMAP[1:0]=11(1)TIM3_CH1PA6PB4PC6TIM3_CH2
PA7PB5PC7TIM3_CH3PB0PC8TIM3_CH4PB1PC9TIM2復用功能重映像1.不適用于36腳封裝2.TIM2_CH1和TIM2_ETR共用一個引腳,但不能同時使用(因此在此使用這樣的標記:TIM2_CH1_ETR)
復用功能TIM2_REMAP[1:0]=00TIM2_REMAP[1:0]=01TIM2_REMAP[1:0]=10TIM2_REMAP[1:0]=11(1)TIM2_CH1_ETR(2)PA0PA15
PA0PA15
TIM2_CH2PA1
PB3PA1
PB3TIM2_CH3
PA2
PB10
TIM2_CH4
PA3PB11
TIM1復用功能重映像1.只適用于100和144引腳封裝2.不適用于36引腳封裝復用功能TIM1_REMAP[1:0]=00TIM1_REMAP[1:0]=01TIM1_REMAP[1:0]=11(1)TIM1_ETRPA12PE7TIM1_CH1PA8PE9TIM1_CH2PA9PE11TIM1_CH3
PA10PE13TIM1_CH4
PA11PE14TIM1_BKINPB12(2)PA6PE15TIM1_CH1NPB13(2)PA7PE8TIM1_CH2NPB14(2)PA8PE10TIM1_CH3NPB15(2)PA9PE126.3.9USART復用功能重映射USART3重映像1.重映射只適用于64、100、144引腳2.重映射只適用于100、144引腳復用功能USART3_REMAP[1:0]=00USART3_REMAP[1:0]=01(1)USART3_REMAP[1:0]=11(2)
USART3_TXPB10PC10PD8USART3_RXPB11
PC11
PD9
USART3_CKPB12
PC12
PD10
USART3_CTSPB13
PD11
USART3_RTSPB14
PD12
USART2重映像1.重映射只適用于100、144引腳
復用功能USART2_REMAP=0USART2_REMAP=1(1)USART2_CTSPA0PD3USART2_RTSPA1
PD4
USART2_TXPA2
PD5
USART2_RXPA3
PD6
USART2_CKPA4
PD7
USART1重映像復用功能USART1_REMAP=0USART1_REMAP=1USART1_TXPA9PB6USART1_RXPA10
PB7
6.3.10I2C1復用功能重映射I2C1重映像復用功能I2C1_REMAP=0I2C1_REMAP=1(1)I2C1_SCLPB6PB8I2C1_SDAPB7
PB9
6.3.11SPI復用功能映射SPI3重映像,這個重映射只適用于互聯型產品。復用功能SPI3_REMAP=0SPI3_REMAP=1SPI3_NSSPA15PA4SPI3_SCKPB3PC10SPI3_MISOPB4
PC11
SPI3_MOSIPB5
PC12
SPI1重映像復用功能SPI1_REMAP=0SPI1_REMAP=1SPI1_NSSPA4PA15SPI1_SCKPA5
PB3SPI1_MISOPA6
PB4
SPI1_MOSIPA7
PB5
6.3.12以太網復用功能重映射ETH重映像,只適用于互聯型產品。復用功能ETH_REMAP=0ETH_REMAP=1RX_DV-CRS_DVPA7PD8RXD0PC4PD9
RXD1
PC5PD10
RXD2
PB0PD11
RXD3
PB1PD12
6.4重映射相關寄存器描述AFIO包括AFIO_EVCR(事件控制寄存器),AFIO_MAPR(復用重映射寄存器)和AFIO_EXTICRx(x=1...4)。在對AFIO寄存器進行讀寫前必須使能AFIO時鐘,所以當使用GPIO的外部中斷功能時,必須也要給AFIO提供時鐘,參考外設時鐘使能寄存器RCC_APB2ENR。6.4.1事件控制寄存器AFIO_EVCR偏移地址:0x00復位值:0x0000000031302928272625242322212019181716保留1514131211109876543210保留EVOEPORT[2:0]PIN[3:0]RWRWRWRWRWRWRWRW位31:8保留位7EVOE:允許事件輸出
該位可由軟件讀寫。當設置該位后,Cortex的EVENTOUT將連接到由PORT[2:0]和PIN[3:0]選定的I/O口。
位6:4PORT[2:0]:端口選擇
選擇用于輸出Cortex的EVENTOUT信號的端口:
000:選擇PA
001:選擇PB
010:選擇PC
011:選擇PD
100:選擇PE位3:0PIN[3:0]:引腳選擇(x=A…E)選擇用于輸出Cortex的EVENTOUT信號的引腳:
0000:選擇Px0
0001:選擇Px1
0010:選擇Px2
0011:選擇Px30100:選擇Px4
0101:選擇Px5
0110:選擇Px6
0111:選擇Px71000:選擇Px8
1001:選擇Px9
1010:選擇Px10
1011:選擇Px111100:選擇Px12
1101:選擇Px13
1110:選擇Px14
1111:選擇Px156.4.2復用功能重映射寄存器AFIO_MAPR地址偏移:0x04復位值:0x00000000小、中、大容量芯片復用重映射和調試I/O配置寄存器(AFIO_MAPR)31302928272625242322212019181716保留SWJ_CFG[2:0]保留ADC2_ETRGREG_REMAPADC2_ETRGINJ_REMAPADC1_ETRGREG_REMAPADC1_ETRGINJ_REMAPTIM5CH4_IREMAPWWWRWRWRWRWRW1514131211109876543210PD01_REMAPCAN_REMAP[1:0]TIM4_REMAPTIM3_REMAP[1:0]TIM2_REMAP[1:0]TIM1_REMAP[1:0]USART3_REMAP[1:0]USART2_REMAPUSART1_REMAPI2C1_REMAPSPI1_REMAPRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW互聯型芯片復用重映射和調試I/O配置寄存器(AFIO_MAPR)31302928272625242322212019181716保留PTP_PPS_REMAPTIM2ITR1_REMAPSPI3_REMAP保留SWJ_CFG[2:0]MII_RMII_SELCAN2_REMAPETH_REMAP保留TIM5CH4_IREMAPRWRWRWWWWRWRWRWRW1514131211109876543210PD01_REMAPCAN1_REMAP[1:0]TIM4_REMAPTIM3_REMAP[1:0]TIM2_REMAP[1:0]TIM1_REMAP[1:0]USART3_REMAP[1:0]USART2_REMAPUSART1_REMAPI2C1_REMAPSPI1_REMAPRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW6.4.3外部中斷配置寄存器AFIO_EXTICR1AFIO_EXTICR只是將GPIO的外部中斷引腳進行映射,如果要配置一個I/O口的外部中斷,這個只是配置的其中一個寄存器;一個完整的外部中斷要配置三個部分:1.中斷引腳映射,也就是本部分講解的寄存器;2.設置EXTI_IMR開啟中斷,設置EXTI_FTSR或者EXTI_RTSR來設中斷的觸發方式;參考外部中斷部分。3.設置中斷的優先級,參考NVIC寄存器部分。AFIO_EXTICR1只能設置0~3序號的引腳,因此一共需要4個這樣的寄存器才能設置0~15序號的引腳。31302928272625242322212019181716保留1514131211109876543210EXTI3[3:0]EXTI2[3:0]EXTI1[3:0]EXTI0[3:0]RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW位31:16保留位15:0EXTIx[3:0]:EXTIx配置(x=0…3)用于選擇EXTIx外部中斷的輸入源。0000:PA[x]引腳
0100:PE[x]引腳
0001:PB[x]引腳
0101:PF[x]引腳
0010:PC[x]引腳
0110:PG[x]引腳
0011:PD[x]引腳
6.4.4外部中斷配置寄存器AFIO_EXTICR231302928272625242322212019181716保留1514131211109876543210EXTI7[3:0]EXTI6[3:0]EXTI5[3:0]EXTI4[3:0]RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW位31:16保留位15:0EXTIx[3:0]:EXTIx配置(x=4…7)用于選擇EXTIx外部中斷的輸入源。0000:PA[x]引腳
0100:PE[x]引腳
0001:PB[x]引腳
0101:PF[x]引腳
0010:PC[x]引腳
0110:PG[x]引腳
0011:PD[x]引腳
6.4.5外部中斷配置寄存器AFIO_EXTICR331302928272625242322212019181716保留1514131211109876543210EXTI11[3:0]EXTI10[3:0]EXTI9[3:0]EXTI8[3:0]RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW位31:16保留位15:0EXTIx[3:0]:EXTIx配置(x=8…11)用于選擇EXTIx外部中斷的輸入源。0000:PA[x]引腳
0100:PE[x]引腳
0001:PB[x]引腳
0101:PF[x]引腳
0010:PC[x]引腳
0110:PG[x]引腳
0011:PD[x]引腳
6.4.6外部中斷配置寄存器AFIO_EXTICR431302928272625242322212019181716保留1514131211109876543210EXTI15[3:0]EXTI14[3:0]EXTI13[3:0]EXTI12[3:0]RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW位31:16保留位15:0EXTIx[3:0]:EXTIx配置(x=12…15)用于選擇EXTIx外部中斷的輸入源。0000:PA[x]引腳
0100:PE[x]引腳
0001:PB[x]引腳
0101:PF[x]引腳
0010:PC[x]引腳
0110:PG[x]引腳
0011:PD[x]引腳
6.5GPIO庫函數GPIO_TypeDef和AFIO_TypeDef,在文件“stm32f10x_map.h”中定義如下:typedefstruct{vu32CRL;vu32CRH;vu32IDR;vu32ODR;vu32BSRR;vu32BRR;vu32LCKR;}GPIO_TypeDef;typedefstruct{vu32EVCR;vu32MAPR;vu32EXTICR[4];}AFIO_TypeDef;
主要庫函數如下:1函數GPIO_DeInit功能描述:將外設GPIOx寄存器重設為缺省值2函數GPIO_AFIODeInit功能描述:將復用功能(重映射事件控制和EXTI設置)重設為缺省值3函數GPIO_Init功能描述:根據GPIO_InitStruct中指定的參數初始化外設GPIOx寄存器4函數GPIO_StructInit功能描述:把GPIO_InitStruct中的每一個參數按缺省值填入5函數GPIO_ReadInputDataBit功能描述:讀取指定端口管腳的輸入6函數GPIO_ReadInputData功能描述:讀取指定的GPIO端口輸入7函數GPIO_ReadOutputDataBit功能描述:讀取指定端
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中醫推拿期末試題及答案
- 云南省隴川縣民族中學2025屆數學高二下期末綜合測試試題含解析
- 浙江省亳州市2024-2025學年物理高二下期末學業質量監測試題含解析
- 云南省瀘水市第一中學2024-2025學年物理高二下期末檢測模擬試題含解析
- 中衛市第一中學2025年物理高二下期末預測試題含解析
- 鹽城市阜寧縣高一上學期期中考試化學試題
- 特色飲品店品牌授權與接手合同范本
- 彩票店合作伙伴雇傭與市場拓展合同
- 交通運輸基礎設施建設采購戰略合同
- 公寓式酒店管理租賃合同協議
- DL-T 5148-2021水工建筑物水泥灌漿施工技術條件-PDF解密
- JJG 377-2019放射性活度計
- 《鋼筋桁架樓承板應用技術規程》
- 家庭教育指導流程
- 整理收納師課件
- DB11-T 2205-2023 建筑垃圾再生回填材料應用技術規程
- 護工的溝通技巧
- 型材切割機安全技術操作規程范本
- 危重孕產婦和新生兒救治中心
- 學校澡堂運營方案
- 門窗展廳培訓課件
評論
0/150
提交評論