一、GPIO定義
GPIO,即通用輸入輸出端口General Purpose Input Output的縮寫。
GPIO端口可以通過程序配置成輸入端口或輸出端口。
二、GPIO的IO模式
STM8的GPIO口有12種模式設置,其中輸入4種,輸出8種:
1、GPIO_Mode_In_FL_No_IT浮空輸入無中斷
2、GPIO_Mode_In_PU_No_IT上拉輸入無中斷
3、GPIO_Mode_In_FL_IT浮空輸入有中斷
4、GPIO_Mode_In_PU_IT 上拉輸入有中斷
5、GPIO_Mode_Out_OD_Low_Fast
開漏-輸出低-高速 Output open-drain, low level, 10MHz
6、GPIO_Mode_Out_PP_Low_Fast
推挽-輸出低-高速 Output push-pull, low level, 10MHz
7、GPIO_Mode_Out_OD_Low_Slow
開漏-輸出低-低速 Output open-drain, low level, 2MHz
8、GPIO_Mode_Out_PP_Low_Slow
推挽-輸出低-低速 Output push-pull, low level, 2MHz
9、GPIO_Mode_Out_OD_HiZ_Fast
開漏-輸出高阻-高速 Output open-drain, high-impedance level, 10MHz
10、GPIO_Mode_Out_PP_High_Fast
推挽-輸出高-高速 Output push-pull, high level, 10MHz
11、GPIO_Mode_Out_OD_HiZ_Slow
開漏-輸出高阻-低速 Output open-drain, high-impedance level, 2MHz
12、GPIO_Mode_Out_PP_High_Slow
推挽-輸出高-低速 Output push-pull, high level, 2MHz
或者如下圖所示:
所以我們其實要弄懂的主要是輸入兩種模式(上拉和浮空)以及輸出的兩種模式(推挽和開漏),剩下的只是在這四種模式下根據參數設置不同進一步劃分。
1、上拉輸入模式
所謂上拉模式,即設置輸入模式時,接一個上拉電阻,大概如下圖所示:
上圖是STM8設置GPIO為上拉模式時的端口內部電路簡圖,R1經典取值范圍為30k~80k,典型值為55k。(弱上拉)
注:上拉電阻R越大,上拉作用越小,則為弱上拉;反之,R越小,上拉作用越大,則為強上拉。外部上拉電阻取值經驗值為4.7k~10k。
上下兩個二極管起到一個保護電路的作用,防止外部輸入電壓太高或太低。這個保護電路可以將外部過高電壓降到3.8~4.1V,也可以將外部過低電壓抬升到-0.6V,從而保護內部電路。
上拉輸入模式可以將不確定的浮空端口信號保持在一個高電平,是最常用的GPIO輸入模式。
1、浮空輸入模式
浮空模式和上拉模式最大的區別就是沒有上拉電阻:
這種結構的輸入阻抗較高,能最真實地反映外部輸入信號,主要用于ADC(數模轉化)的場合。
1、推挽輸出模式
推挽(PP)輸出模式如下圖所示:
簡單來說,MOS管Q1和Q2,在輸出高低電平時分別起作用。 輸出高電平的時候,Q1導通,Q2截止;輸出低電平的時候,Q1截止,Q2導通。總之,Q1與Q2在工作時總是保持在一個導通和另一個截止的狀態。推挽輸出模式的優點是損耗小,效率高。
1、開漏輸出模式
開漏(OD)輸出模式,顧名思義即漏極開路的輸出模式,如下圖所示:
開漏輸出模式和推挽輸出模式最大區別在于沒有Q1,只能輸出低電平狀態“0”,而不能直接輸出高電平狀態“1”。必須外接上拉電阻,才能輸出“1”。這其實跟51單片機的P0口是一樣的。
開漏輸出模式的特點:
(1)開漏模式須外接上拉電阻才能輸出高電平,驅動電流大多數是由外部電源經過上拉電阻供給,單片機內部一般只需要提供極小的柵極控制電流即可。降低單片機功耗。
(2)開漏模式可用于電平信號標準的轉換。外部上拉電阻外加的電源電壓可以是5V也可以是3.3V(STM8端口最高可承受5V電壓),開漏結構可以灌入較大電流(20mA),間接實現TTL電平系列或CMOS電平系列的轉換。
(3)開漏模式可用于I2C總線,實現“線與”功能。
(4)開漏模式使用外加上拉電阻,則上拉電阻小,上拉作用強,上升沿時間短,速度快;上拉電阻大,上拉作用小,上升沿時間長,速度緩。
注:STM8單片機“真正的”開漏輸出模式內部電路:PE1/I2C_SCL與PE2/I2C_SDA(沒有連接VDD的保護二極管)
三、GPIO的寄存器設置
GPIO的5個寄存器:
1.輸出數據寄存器ODR;
2.引腳輸入寄存器IDR;
3.數據方向寄存器DDR;
4.控制寄存器CR1;
5.控制寄存器CR2;
模式配置圖,如下圖所示
STM8通過DDR、CR1和CR2三個寄存器來配置不同的輸入輸出模式。用ODR存儲要輸出的信號,用IDR來讀取對應端口的信號。以上5種寄存器都是8位,對應值STM8每組GPIO對應的8個端口(7:0)。
通過寄存器操作GPIO的示例:
int main(void)
{
/*設置內部高速時鐘16M為主時鐘*/
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
GPIOB->DDR = 0x20;//配置GPIOB的方向寄存器,設置pin5為輸出模式
GPIOB->CR1 = 0x20;//配置GPIOB_5為推挽輸出
GPIOB->CR2 = 0x00;
while(1)
{
GPIOB->DDR = 0x20;//GPIOB_5輸出高電平,亮
delay();
GPIOB->DDR = 0x00;//GPIOB_5輸出低電平,暗
delay();
}
}
四、GPIO的庫函數實現。
所謂庫函數,其實就是官方做的驅動程序庫,將對寄存器用結構圖一一對應并封裝起來,并提供了基本的配置函數。我們只要使用官方的庫函數就就可以了,不用再花大力氣研究寄存器的配置。
簡單舉例說明:
GPIO_Init(LED1_PORT,LED1_PIN,GPIO_MODE_OUT_PP_HIGH_FAST );
GPIO_Init這個命令是設置或者說定義管教模式的,上面這條命令的意思就是LED1代表的管教設置為推挽輸出模式,初始高電平,高速模式。
注:LED1_PORT和LED1_PIN應該在相關的頭文件或者別處已注釋,如
#define LED1_PIN GPIO_PIN_5
#define LED1_PORT GPIOB
GPIO_WriteLow(LED1_PORT,LED1_PIN);
在LED1這個管腳輸出低電平;
GPIO_WriteHigh(LED1_PORT,LED1_PIN);
在LED1這個管腳輸出高電平;
GPIO_WriteReverse(LED1_PORT,LED1_PIN);
翻轉LED1這個管腳的電平狀態;
上一篇:關于PC-lint,以及如何在MDK中添加PC-lint工具
下一篇:STM8學習筆記三——錯誤:no definition for "assert_failed"
推薦閱讀
史海拾趣
為了更好地服務中國及亞太地區的電子產業集群,Henkel在東莞市投建了漢高電子粘合劑華南應用技術中心。該中心不僅具備先進的研發設備和測試能力,還擁有一支專業的技術團隊。通過模擬仿真和數字化手段,該中心能夠快速響應客戶需求,提供定制化的粘合劑解決方案。自啟用以來,該中心已幫助眾多電子企業實現了技術創新和產品升級。
在電子行業中,技術的突破和創新是企業持續發展的關鍵。CONEC深知這一點,因此不斷投入研發資源,力求在技術上取得突破。通過多年的努力,公司在某些關鍵技術領域取得了重要進展,如高速數據傳輸、低損耗材料應用等。這些技術突破不僅提升了公司的產品性能和質量,也使其在行業中保持了領先地位。
作為一家技術驅動的公司,EPC公司一直致力于持續創新和產品研發。近年來,公司不斷推出新的氮化鎵功率半導體器件和集成電路產品,以滿足市場不斷變化的需求。其中,EPC公司全新推出的ePower功率級集成電路系列,為高功率密度應用提供了更高性能及更小型化的解決方案。這一系列產品在市場上獲得了良好的反響,進一步鞏固了EPC公司在氮化鎵技術領域的領先地位。
艾邁斯(AMASS)公司創立之初,便專注于智能設備動力連接器領域。面對市場的激烈競爭和技術的不斷更新,公司創始人憑借深厚的行業經驗和前瞻性的眼光,帶領團隊攻克了一個又一個技術難關。他們深入市場調研,精準把握消費者需求,成功推出了一系列具有競爭力的連接器產品。這些產品不僅性能穩定、質量可靠,而且具有極高的性價比,迅速在市場上贏得了良好的口碑。
在電子行業的激烈競爭中,ATO SOLUTION公司通過一項創新性的技術突破,成功引領了市場的新潮流。該公司研發出了一款高效能的半導體芯片,極大地提升了電子設備的性能和能效比。這一技術的問世,迅速獲得了行業內外的廣泛關注和認可,為公司贏得了大量合作伙伴和客戶,奠定了市場領先地位。
ARM培訓視頻-dsp-CPLD-FPGA開發視頻-嵌入式系統開發-單片機開發視頻 ARM培訓視頻-dsp-CPLD-FPGA開發視頻-嵌入式系統開發-單片機開發視頻 ------------------------------------------------------------------ 【ARM培訓視頻】課程主要內容 1.概念和基本工具: 嵌入式系統基本概念、嵌入式操作系統介紹 嵌入式系 ...… 查看全部問答∨ |
我03年畢業于一所普通的本科院校,學的是機械工程自動化專業,畢業后即來到了現在工作的這家在全國還算比較有名的大型家電制造企業從事生產工藝工作。每天的工作枯燥乏味,工藝巡檢,要么就是這個零部件尺寸長了,裝不進去,或者那個零部件短了需要 ...… 查看全部問答∨ |
最近接手一個wince項目,使用QT4.4.3做的,現在要解決的問題是在控件上輸入的時候,調用出wince自帶的手寫輸入法 我現在的設想是 做一個Dll,用SipEnumIM枚舉所有的輸入法,然后查找出的wince自帶的手寫輸入法的CLSID,將手寫輸入法的CLSID設置為 ...… 查看全部問答∨ |
本人是個大學生,正在做一個關于用easyarm1138控制cc2420的zigbee項目,為什么我在向2420發送stxon命令后,發送端的sfd沒有變化,同樣接收端的也沒有,請問是什么問題,發送其他命令都有狀態返回的,就是發送stxon后sfd沒有跳變~~ 項目比較趕, ...… 查看全部問答∨ |
好了,歡迎進來,某某某,你好! 想請版主或者管理員等等有能力回答的人告訴我們大家一個問題,那就是: 這個用戶組頭銜是怎么升級的? 跟積分有關系? 還是跟威望 ...… 查看全部問答∨ |
|
在德州儀器額微博中看到了這個評估套件的視頻,分享給大家! 視頻內容簡要介紹了這款強大的評估套件 $(\'flv_zg0\').innerHTML=(mobileplayer() ? "" : AC_FL_RunContent(\'width\', \'500\', \'height\', \'375\', \'allowNetworking\', \'inter ...… 查看全部問答∨ |
|
設計資源 培訓 開發板 精華推薦
- 高通攜手中國“汽車朋友圈”亮相2025上海車展: 加速駕駛輔助普惠,推動艙駕創新升級
- 工業市場正在快速回暖,德州儀器如何重塑電力電子市場?
- 特斯拉:美國交付的Model Y/3電池包已實現100%美國生產
- 地平線與博世深化合作,攜手為多家車企提供輔助駕駛產品
- 強化中國市場戰略布局,德州儀器正靈活應對全球關稅挑戰
- Molex莫仕通過本地合作和創新加強支持中國汽車行業
- 貿澤開售Texas Instruments適用于高分辨率AR HUD的 全新DLP4620S-Q1 0.46"汽車數字微鏡器件
- ROHM推出高功率密度的新型SiC模塊,將實現車載充電器小型化!
- 用上車規級UFS 4.0,讓出行變得高效且可靠
- 車載測試技術解析:聚焦高帶寬、多通道同步采集與協議分析