一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

STM32L

 步靈飛 2014-02-12
分類: STM32L 2013-09-09 00:00 298人閱讀 評(píng)論(0) 收藏 舉報(bào)

STM32L GPIO 


1. 每個(gè)GPIO均有以下寄存器:
  • 4個(gè)32位配置寄存器:GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR和GPIOx_PUPDR
GPIOx_MODER :配置IO端口方向?yàn)檩斎?輸出/AF/模擬
GPIOx_OTYPER :選擇輸出類型:推挽/開漏
GPIOx_OSPEEDR :選擇IO速度(與IO端口方向無關(guān))
GPIOx_PUPDR :選擇上拉/下拉電阻(與IO端口方向無關(guān))
  • 2個(gè)32位數(shù)據(jù)寄存器:GPIOx_IDR、GPIOx_ODR
  • 1個(gè)32位置位/復(fù)位寄存器:GPIOx_BSRR(使用該寄存器讀寫寄存器可以避免在讀寫期間被IRQ中斷,該讀寫操作屬于一個(gè)原子操作)
該寄存器允許置位/復(fù)位GPIOx_ODR上指定的一位,GPIOx_ODR上每位關(guān)聯(lián)到兩個(gè)控制位:GPIOx_BSRR:BSRR(i) [Bits 15:0]和 GPIOx_BSRR:BSRR(i+SIZE)[Bits31:16];往GPIOx_BSRR:BSRR(i) [Bits 15:0]寫1 可以置位對(duì)應(yīng)的ODR;往GPIOx_BSRR:BSRR(i) [Bits 31:16]寫1 可以置位對(duì)應(yīng)的ODR;往該寄存器寫0不會(huì)產(chǎn)生任何影響
  • 1個(gè)32位鎖定寄存器:GPIOx_LCKR
必需通過通過一個(gè)特殊的讀寫時(shí)序才能寫入該寄存器,但時(shí)序正確時(shí),bit16會(huì)置位(lock key active),bits[15:0]顯示哪些IO端口被鎖定了,端口被鎖定之后直到下一個(gè)復(fù)位才能解鎖,鎖定之后以下寄存器將被凍結(jié):GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR、GPIOx_PUPDR、GPIOx_AFRH、GPIOx_AFRL
  • 2個(gè)復(fù)用功能寄存器:GPIOx_AFRH、GPIOx_AFRL

2. 每個(gè)GPIO端口均可單獨(dú)設(shè)置為以下模式:
  • 輸入+懸空
  • 輸入+上拉
  • 輸入+下拉
  • 模擬(用作ADC、DAC輸出或者捕獲輸入情況下)
  • 輸出+開漏+上拉/下拉(輸出模式下GPIO的輸出速度是可配置的)
  • 輸出+推挽+上拉/下拉
  • 復(fù)用功能+推挽+上拉/下拉
  • 復(fù)用功能+開漏+上拉/下拉


下圖為GPIO的架構(gòu)圖:



3. GPIO一般用途

  1. 默認(rèn)情況或者剛復(fù)位后,所有IO端口被設(shè)置為輸入+懸空模式,除了調(diào)試接口默認(rèn)設(shè)置為了復(fù)用功能+上拉/下拉
  2. 當(dāng)端口被設(shè)置為輸出的時(shí)候,修改GPIOx_ODR對(duì)應(yīng)可改變輸出高低電平(一般會(huì)使用推挽或者開漏輸出(輸出低電平時(shí),只有N-MOS是接通的))
  3. 當(dāng)端口被設(shè)置為輸入的時(shí)候,每個(gè)AHB總線時(shí)鐘均會(huì)捕獲端口上高低電平,并存放在GPIOx_IDR寄存器
  4. 所有的GPIO端口均可通過配置寄存器使能或不使能內(nèi)部弱上拉/弱下拉




4 .I/O端口多路復(fù)用及映射

IO端口通過一個(gè)內(nèi)部的多路選擇器以允許在同一時(shí)刻只使用一種復(fù)用功能,這樣使得多個(gè)外圍電路共享同樣的IO端口
每個(gè)IO端口可以通過配置GPIOx_AFRL和GPIOx_AFRH設(shè)置所使能的復(fù)用功能(AF0~AF15)
  • 復(fù)位之后,所有的IO連接到復(fù)用功能0(AF0)
  • 外圍電路的復(fù)用功能映射到AF1~AF14
  • Cortex-M3 EVENTOUT映射到AF15
以下說明如何使用復(fù)用功能:
  • System Function:配置IO端口使能的復(fù)用功能(JTAG/SWD,在復(fù)位之后對(duì)應(yīng)端口會(huì)被調(diào)試器設(shè)置為調(diào)試功能下且不受GPIO寄存器的控制;RTC_50HZ,對(duì)應(yīng)端口需要設(shè)置為輸入+懸空;MCO,該端口必需配置在復(fù)用模式下)
  • GPIO:根據(jù)需要配置GPIOx_MODER設(shè)置IO端口工作模式(輸入、輸入/模擬)
  • Perpheral‘s Alternate Function:對(duì)于ADC/DAC,配置IO為模擬;對(duì)于其他外圍功能,配置GPIOx_MODER、GPIOx_OTYPE、GPIOx_PUPDR、GPIOx_OSPEEDER
  • EVENTOUT:配置IO端口復(fù)用功能AF15,用于輸出Cortex-M3 EVENTOUT信號(hào)




5. 外部中斷/喚醒 

所有的IO端口均有外部中斷功能,使用外部中斷功能時(shí),IO端口必需設(shè)置為輸入模式

6. 輸入模式配置

當(dāng)IO端口配置為輸入模式時(shí):
  • 輸出模式被禁用
  • 施密特觸發(fā)器被激活
  • 根據(jù)GPIOx_PUPDR寄存器使能上拉/下拉電阻
  • 每個(gè)AHB時(shí)鐘均會(huì)采樣IO端口上的值存放到輸入數(shù)據(jù)寄存器中
  • 通過讀取輸入數(shù)據(jù)寄存器可以檢測IO狀態(tài)

7. 輸出模式配置

當(dāng)IO端口配置為輸出模式時(shí):
  • 輸出模式使能
  • 施密特出發(fā)器被激活
--  開漏模式時(shí):輸出0時(shí),N-MOS導(dǎo)通(P-MOS任何情況下不會(huì)導(dǎo)通)
--  推挽模式時(shí):輸出0時(shí),N-MOS導(dǎo)通;輸出1時(shí),P-MOS導(dǎo)通 
  • 根據(jù)GPIOx_PUPDR寄存器使能弱上拉/下拉
  • 每個(gè)AHB時(shí)鐘均會(huì)采樣IO端口上的值存放到輸入數(shù)據(jù)寄存器中
  • 通過讀取輸入數(shù)據(jù)寄存器可以檢測IO狀態(tài)
  • 通過讀取輸出數(shù)據(jù)寄存器可以得到最后寫入的值


8. 復(fù)用功能配置

當(dāng)IO端口配置為復(fù)用功能時(shí):
  • 輸出模式下可配置為開漏或推挽
  • 復(fù)用功能的輸出信號(hào)將驅(qū)動(dòng)輸出緩沖區(qū)
  • 輸入端的施密特觸發(fā)器被激活
  • 根據(jù)GPIOx_PUPDR寄存器使能弱上拉/下拉
  • 每個(gè)AHB時(shí)鐘均會(huì)采樣IO端口上的值存放到輸入數(shù)據(jù)寄存器中
  • 通過讀取輸入數(shù)據(jù)寄存器可以檢測IO狀態(tài)


9. 模擬模式配置

當(dāng)IO端口配置為模擬模式時(shí):
  • 輸出模式被禁用
  • 輸入模式下的施密特觸發(fā)器被激活(為每個(gè)IO口的模擬值提供零功耗,施密特觸發(fā)器的輸出端被強(qiáng)制輸出為0)
  • 弱上拉/下拉被禁用
  • 讀取輸入寄存器獲取到0


10. 外部時(shí)鐘/外部晶振端口復(fù)用

  • 沒有使用LSE時(shí),OSC32_IN和OSC32_OUT 可配置為一般用途的IO端口
  • 沒有使用HSE時(shí),OSC_IN和OSC_OUT 可配置為一般用途的IO端口

11. 選擇RTC_AF1復(fù)用功能

STM32L152XX擁有以下特性
  • 兩個(gè)GPIO端口可配置為喚醒源WKUP1和WKUP3
  • 一個(gè)GPIO端口可配置為喚醒源WKUP2,可用于檢測篡改、時(shí)間戳事件,輸出RTC AFO_ALARM、AFO_CALIB
RTC_AF1端口(PC13)可配置為以下功能:
  • 喚醒源(WKUP2):配置PWR_CSR寄存器中的EWUP2位
  • RTC AFO_ALARM輸出:根據(jù)RTC_CR寄存器中的OSEL[1:0]輸出可配置為:RTC Alarm A、 RTC Alarm B、RTC Wakeup
  • RTC AFO_CALIB輸出:配置RTC_CR寄存器中的COE[23]位
  • RTC AFI_TAMPER1 : 篡改事件檢測
  • 時(shí)間戳事件檢測

12. 初始化GPIO端口例子

  1. void Init_GPIOS(void){  
  2.     GPIO_InitTypeDef GPIO_InitStructure;            //定義初始化結(jié)構(gòu)體  
  3.     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB,ENABLE);  //使能對(duì)應(yīng)AHB總線時(shí)鐘  
  4.   
  5.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;  //根據(jù)需求配置GPIO工作模式  
  6.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;  
  7.     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  
  8.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;  
  9.     GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;  
  10.     GPIO_Init(GPIOB, &GPIO_InitStructure);          //初始化GPIO端口  
  11. }  

分類: STM32L 2013-09-09 00:00 298人閱讀 評(píng)論(0) 收藏 舉報(bào)

STM32L GPIO 


1. 每個(gè)GPIO均有以下寄存器:
  • 4個(gè)32位配置寄存器:GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR和GPIOx_PUPDR
GPIOx_MODER :配置IO端口方向?yàn)檩斎?輸出/AF/模擬
GPIOx_OTYPER :選擇輸出類型:推挽/開漏
GPIOx_OSPEEDR :選擇IO速度(與IO端口方向無關(guān))
GPIOx_PUPDR :選擇上拉/下拉電阻(與IO端口方向無關(guān))
  • 2個(gè)32位數(shù)據(jù)寄存器:GPIOx_IDR、GPIOx_ODR
  • 1個(gè)32位置位/復(fù)位寄存器:GPIOx_BSRR(使用該寄存器讀寫寄存器可以避免在讀寫期間被IRQ中斷,該讀寫操作屬于一個(gè)原子操作)
該寄存器允許置位/復(fù)位GPIOx_ODR上指定的一位,GPIOx_ODR上每位關(guān)聯(lián)到兩個(gè)控制位:GPIOx_BSRR:BSRR(i) [Bits 15:0]和 GPIOx_BSRR:BSRR(i+SIZE)[Bits31:16];往GPIOx_BSRR:BSRR(i) [Bits 15:0]寫1 可以置位對(duì)應(yīng)的ODR;往GPIOx_BSRR:BSRR(i) [Bits 31:16]寫1 可以置位對(duì)應(yīng)的ODR;往該寄存器寫0不會(huì)產(chǎn)生任何影響
  • 1個(gè)32位鎖定寄存器:GPIOx_LCKR
必需通過通過一個(gè)特殊的讀寫時(shí)序才能寫入該寄存器,但時(shí)序正確時(shí),bit16會(huì)置位(lock key active),bits[15:0]顯示哪些IO端口被鎖定了,端口被鎖定之后直到下一個(gè)復(fù)位才能解鎖,鎖定之后以下寄存器將被凍結(jié):GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR、GPIOx_PUPDR、GPIOx_AFRH、GPIOx_AFRL
  • 2個(gè)復(fù)用功能寄存器:GPIOx_AFRH、GPIOx_AFRL

2. 每個(gè)GPIO端口均可單獨(dú)設(shè)置為以下模式:
  • 輸入+懸空
  • 輸入+上拉
  • 輸入+下拉
  • 模擬(用作ADC、DAC輸出或者捕獲輸入情況下)
  • 輸出+開漏+上拉/下拉(輸出模式下GPIO的輸出速度是可配置的)
  • 輸出+推挽+上拉/下拉
  • 復(fù)用功能+推挽+上拉/下拉
  • 復(fù)用功能+開漏+上拉/下拉


下圖為GPIO的架構(gòu)圖:



3. GPIO一般用途

  1. 默認(rèn)情況或者剛復(fù)位后,所有IO端口被設(shè)置為輸入+懸空模式,除了調(diào)試接口默認(rèn)設(shè)置為了復(fù)用功能+上拉/下拉
  2. 當(dāng)端口被設(shè)置為輸出的時(shí)候,修改GPIOx_ODR對(duì)應(yīng)可改變輸出高低電平(一般會(huì)使用推挽或者開漏輸出(輸出低電平時(shí),只有N-MOS是接通的))
  3. 當(dāng)端口被設(shè)置為輸入的時(shí)候,每個(gè)AHB總線時(shí)鐘均會(huì)捕獲端口上高低電平,并存放在GPIOx_IDR寄存器
  4. 所有的GPIO端口均可通過配置寄存器使能或不使能內(nèi)部弱上拉/弱下拉




4 .I/O端口多路復(fù)用及映射

IO端口通過一個(gè)內(nèi)部的多路選擇器以允許在同一時(shí)刻只使用一種復(fù)用功能,這樣使得多個(gè)外圍電路共享同樣的IO端口
每個(gè)IO端口可以通過配置GPIOx_AFRL和GPIOx_AFRH設(shè)置所使能的復(fù)用功能(AF0~AF15)
  • 復(fù)位之后,所有的IO連接到復(fù)用功能0(AF0)
  • 外圍電路的復(fù)用功能映射到AF1~AF14
  • Cortex-M3 EVENTOUT映射到AF15
以下說明如何使用復(fù)用功能:
  • System Function:配置IO端口使能的復(fù)用功能(JTAG/SWD,在復(fù)位之后對(duì)應(yīng)端口會(huì)被調(diào)試器設(shè)置為調(diào)試功能下且不受GPIO寄存器的控制;RTC_50HZ,對(duì)應(yīng)端口需要設(shè)置為輸入+懸空;MCO,該端口必需配置在復(fù)用模式下)
  • GPIO:根據(jù)需要配置GPIOx_MODER設(shè)置IO端口工作模式(輸入、輸入/模擬)
  • Perpheral‘s Alternate Function:對(duì)于ADC/DAC,配置IO為模擬;對(duì)于其他外圍功能,配置GPIOx_MODER、GPIOx_OTYPE、GPIOx_PUPDR、GPIOx_OSPEEDER
  • EVENTOUT:配置IO端口復(fù)用功能AF15,用于輸出Cortex-M3 EVENTOUT信號(hào)




5. 外部中斷/喚醒 

所有的IO端口均有外部中斷功能,使用外部中斷功能時(shí),IO端口必需設(shè)置為輸入模式

6. 輸入模式配置

當(dāng)IO端口配置為輸入模式時(shí):
  • 輸出模式被禁用
  • 施密特觸發(fā)器被激活
  • 根據(jù)GPIOx_PUPDR寄存器使能上拉/下拉電阻
  • 每個(gè)AHB時(shí)鐘均會(huì)采樣IO端口上的值存放到輸入數(shù)據(jù)寄存器中
  • 通過讀取輸入數(shù)據(jù)寄存器可以檢測IO狀態(tài)

7. 輸出模式配置

當(dāng)IO端口配置為輸出模式時(shí):
  • 輸出模式使能
  • 施密特出發(fā)器被激活
--  開漏模式時(shí):輸出0時(shí),N-MOS導(dǎo)通(P-MOS任何情況下不會(huì)導(dǎo)通)
--  推挽模式時(shí):輸出0時(shí),N-MOS導(dǎo)通;輸出1時(shí),P-MOS導(dǎo)通 
  • 根據(jù)GPIOx_PUPDR寄存器使能弱上拉/下拉
  • 每個(gè)AHB時(shí)鐘均會(huì)采樣IO端口上的值存放到輸入數(shù)據(jù)寄存器中
  • 通過讀取輸入數(shù)據(jù)寄存器可以檢測IO狀態(tài)
  • 通過讀取輸出數(shù)據(jù)寄存器可以得到最后寫入的值


8. 復(fù)用功能配置

當(dāng)IO端口配置為復(fù)用功能時(shí):
  • 輸出模式下可配置為開漏或推挽
  • 復(fù)用功能的輸出信號(hào)將驅(qū)動(dòng)輸出緩沖區(qū)
  • 輸入端的施密特觸發(fā)器被激活
  • 根據(jù)GPIOx_PUPDR寄存器使能弱上拉/下拉
  • 每個(gè)AHB時(shí)鐘均會(huì)采樣IO端口上的值存放到輸入數(shù)據(jù)寄存器中
  • 通過讀取輸入數(shù)據(jù)寄存器可以檢測IO狀態(tài)


9. 模擬模式配置

當(dāng)IO端口配置為模擬模式時(shí):
  • 輸出模式被禁用
  • 輸入模式下的施密特觸發(fā)器被激活(為每個(gè)IO口的模擬值提供零功耗,施密特觸發(fā)器的輸出端被強(qiáng)制輸出為0)
  • 弱上拉/下拉被禁用
  • 讀取輸入寄存器獲取到0


10. 外部時(shí)鐘/外部晶振端口復(fù)用

  • 沒有使用LSE時(shí),OSC32_IN和OSC32_OUT 可配置為一般用途的IO端口
  • 沒有使用HSE時(shí),OSC_IN和OSC_OUT 可配置為一般用途的IO端口

11. 選擇RTC_AF1復(fù)用功能

STM32L152XX擁有以下特性
  • 兩個(gè)GPIO端口可配置為喚醒源WKUP1和WKUP3
  • 一個(gè)GPIO端口可配置為喚醒源WKUP2,可用于檢測篡改、時(shí)間戳事件,輸出RTC AFO_ALARM、AFO_CALIB
RTC_AF1端口(PC13)可配置為以下功能:
  • 喚醒源(WKUP2):配置PWR_CSR寄存器中的EWUP2位
  • RTC AFO_ALARM輸出:根據(jù)RTC_CR寄存器中的OSEL[1:0]輸出可配置為:RTC Alarm A、 RTC Alarm B、RTC Wakeup
  • RTC AFO_CALIB輸出:配置RTC_CR寄存器中的COE[23]位
  • RTC AFI_TAMPER1 : 篡改事件檢測
  • 時(shí)間戳事件檢測

12. 初始化GPIO端口例子

  1. void Init_GPIOS(void){  
  2.     GPIO_InitTypeDef GPIO_InitStructure;            //定義初始化結(jié)構(gòu)體  
  3.     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB,ENABLE);  //使能對(duì)應(yīng)AHB總線時(shí)鐘  
  4.   
  5.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;  //根據(jù)需求配置GPIO工作模式  
  6.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;  
  7.     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  
  8.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;  
  9.     GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;  
  10.     GPIO_Init(GPIOB, &GPIO_InitStructure);          //初始化GPIO端口  
  11. }  


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    中文字幕日韩欧美一区| 98精品永久免费视频| 久久亚洲精品成人国产| 内用黄老外示儒术出处| 久久人妻人人澡人人妻| 精品国产亚洲区久久露脸| 精品推荐久久久国产av| 白白操白白在线免费观看| 欧美性猛交内射老熟妇| 视频一区二区三区自拍偷| 久久精视频免费视频观看| 欧美日韩一区二区午夜| 国产传媒精品视频一区| 91国内视频一区二区三区| 久久成人国产欧美精品一区二区| 欧美国产日韩在线综合| 99久久国产精品免费| 亚洲国产香蕉视频在线观看| 日韩人妻毛片中文字幕| 成年午夜在线免费视频| 日本久久中文字幕免费| 粉嫩一区二区三区粉嫩视频| 国产精品美女午夜视频| 亚洲二区欧美一区二区| 亚洲av熟女一区二区三区蜜桃| 中文字幕在线五月婷婷| 日本人妻中出在线观看| 日韩特级黄片免费观看| 中国少妇精品偷拍视频| 亚洲中文在线观看小视频| 欧美日韩免费黄片观看| 亚洲中文字幕一区三区| 草草视频精品在线观看| 一级片二级片欧美日韩| 亚洲一区二区精品福利| 国产91色综合久久高清| 欧美精品一区久久精品| 国产亚洲精品一二三区| 国产中文字幕一二三区| 免费在线成人午夜视频| 青青操日老女人的穴穴|