目錄
前言
IC基本定義
三極管基礎知識
單片機引腳電路作用
STM8GPIO工作模式
GPIO外設寄存器
寄存器含義用法
CR1:Control Register 1
CR2:Control Register 2
ODR:Output Data Register
IDR:Input Data Register
賦值寄存器更改引腳狀態
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 編寫不易,僅供學習,請勿搬運,感謝理解
前言
? ? ? ? 本文講述了STM8位單片機的GPIO 工作模式 相關寄存器 芯片引腳內部狀態 同時通過對單片機外界寄存器的讀寫數據來完成對引腳的配置,以及本文參考B站龍順宇STM8單片機教程連接放在最后。
IC基本定義
? ? ? ? 在嵌入式開發中又很多常用的ic hc164 tja1050 這些都是常用的ic芯片? 而ic芯片的定義是集成電路是一種微型電路或者器件,把一個電路中所需要的器件 晶體管 電阻 電容 電感等原件與布線連在一起制作在一塊或者幾小塊晶體上,然后封裝在外殼內,留出芯片的基本功能引腳。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????? ic圖片
三極管基礎知識
? ? ? ? 三極管分為npn三極管 pnp三級管,同時還有mos管也是三極管的一種,三極管本身有 集電極 發射極 基極 常見的作用是作為開關跟放大電流使用 ,原理是當三極管 基極通電導通? 發射極跟集電極導通 同時集電極的電流是基極的電流的倍數。
? ? ? ? 區分三極管是npn三極管還是pnp三極管有一個很好的方法,就是看三極管本身圖標的箭頭箭頭是從 p指向n 中間的基極是n就是pnp三極管 ,中間是p就是npn三極管,然后圖標中間的是三極管的基極,有箭頭的一側是三極管發射極,另一側沒有箭頭的一側是三極管的集電極。? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? 除此之外還有mos管也是三極管的一種,跟三極管一樣有三個基本的電極 柵極(Gate)、源極(Source)、漏極(Drain)
? ? ? ? ? ? 同樣的mos管也具體能細分為p溝道mos管 n溝道mos管,具體的區分方法也就看箭頭的指向方向,箭頭從內向外指的是pmos管 箭頭從外指向內的是n溝道mos管,然后mos管的原理和三極管差不多當,G極是高電平的時候,D極和S極就導通了。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
單片機引腳電路作用
? ? ? ? 引腳最外邊的兩個二極管,是為了防止引腳在輸入狀態下的,輸入的電壓過高或者過低,這樣對引腳會造成破壞,加上了兩個二極管鉗位電路,當引腳處于輸入狀態,輸入的電平超過vdd 或者 vss的時候 二極管導通 這個時候 電壓就沒有接到芯片的引腳,而是進入到二極管的回路里面,就形成了,對單片機引腳的輸入保護。
? ? ? ? 但是需要注意到的是,二極管鉗位電路的保護是有限度的,當輸入電壓超過電路的限制幅度,單片機引腳一樣會被擊穿的,同事樣的輸入電壓超過vss幅度限制太多,照樣會把單片機的引腳給擊穿。
? ? ??? 另外就是兩個mos管,上面那個是p mos管,下面的是n mos管,因為上面 p mos管連接的是vdd 也就是芯片的高電平,當上面的mos管導通的時候,vdd會從三極管的 g 極到 s極然后再輸出,同樣的如果需要輸出低電平也就是 給下面nmos管一個高電平 這個時候單片機的nmos 會被導通同時因為連接著單片機的vss,也就是單片機內部的低電平,如果nmos導通過后,也就輸出引腳外邊的低電平了。
? ? ? ? 這里vdd的意思是芯片內部的電源正極 vss的意思是芯片內部的電源負極,同時需要注意的是二極管的導通壓降,普通二極管是0.7v肖特基二極管是0..2 0.3v 0.4v 這里芯片的vdd一般是3.3V,輸入電壓當時4v的時候才會通道,也就是vdd+0.7v的時候才會導通。
? ? ? ? 同樣的當輸入電壓為 vss-0.7v的時候,電壓才會導通,也是因為二極管本身的導通壓降,這里導通壓降的意思是,如果二極管導通二極管兩端會存在一個,電源電壓降。
STM8GPIO工作模式
? ? ? ? 這里STM8單片機跟STM32單片機不一樣只有6中GPIO的模式,少了輸入下拉,還有復用推完輸出,復用開漏輸出,這里開漏的意思是,內部引腳的mos管pmos管不能導通,既然不能導通就沒有辦法輸出vdd高電平。
GPIO外設寄存器
? ? ? ? STM8對單片機GPIO外設的控制是通過,給GPIO的寄存器來賦值來完成的,GPIO有五個寄存器分別是 輸入寄存器 IDR 輸出寄存器 ODR 方向寄存器 DDR 控制寄存器1 CR1 控制寄存器 CR2?。
? ? ? ? 在程序中,通過對這些GPIO外設的寄存器寫入1 或者 0 來完成對單片機外設的控制。
寄存器含義用法
- DDR 是 Data Direction Register 的縮寫,表示“數據方向寄存器”。
- 它用于設置 GPIO 引腳的方向:輸入或輸出。
- 0:引腳配置為輸入模式。
- 1:引腳配置為輸出模式。
CR1:Control Register 1
- CR1 是 Control Register 1 的縮寫,表示“控制寄存器1”。
- 它用于配置 GPIO 引腳的輸入/輸出特性,例如輸出驅動模式或輸入浮空/上拉特性等。
- 0:設置為普通模式(例如弱上拉、無特殊功能)。
- 1:激活額外功能(例如啟用上拉電阻、增強驅動能力)。
CR2:Control Register 2
- CR2 是 Control Register 2 的縮寫,表示“控制寄存器2”。
- 它用于進一步增強 GPIO 的功能配置,例如輸出速率控制或引腳復用模式等。
- 0:禁用高驅動或復用功能。
- 1:啟用高驅動模式或特殊功能(例如快速響應輸出)。
ODR:Output Data Register
- ODR 是 Output Data Register 的縮寫,表示“輸出數據寄存器”。
- 它用于控制 GPIO 引腳的輸出電平:
- 0:輸出低電平(0V,接地)。
- 1:輸出高電平(通常為VDD電壓)。
IDR:Input Data Register
- IDR 是 Input Data Register 的縮寫,表示“輸入數據寄存器”。
- 它用于讀取 GPIO 引腳的當前電平狀態:
- 0:引腳當前為低電平(0V)。
- 1:引腳當前為高電平(通常為VDD電壓)。
? ? ? ? 這里需要注意的是 DDR 還有 CR1 CR2 配置的是GPIO的模式,配置完模式之后,根據自身設定的模式對 ODR 寄存器寫入數據或者IDR寄存器讀取數據。
STM8賦值寄存器控制引腳狀態
? ? ? ? ?上面給出了GPIO的每個寄存器的作用,這里就開始使用這些寄存器,來完成對引腳的狀態進行控制。
問題1? 將PB端口引腳高4位配置為輸出,第四位配置為輸入模式
問題2 配置PB端口 PB7 PB6輸出模式 PB5 PB4 PB3 PB2輸入模式? PB0 PB1為輸出模式
void GPIO_Init(void)
{PB_DDR = 0xf0;//方向寄存器DDR控制 0 輸入 1 輸出
}
PX_DDR X取值 A B C D 取不同的值代表不同的端口
void GPIO_Init(void)
{PB_DDR = 0xc3;
}
問題3將PB端口PB6和PB2配置為輸出模式 其余端口保持原有狀態不變
問題4將PB端口PB7 PB5 PB3 PB1配置為輸出模式 其余端口保持不變?
void GPIO_Init(void)
{PB_DDR= PB_DDR|0x42;
}
//這里使用|運算 將數據其他格式全部取0 1|0還是1 0|0還是0 這樣原有位就保留不變了
void GPIO_Init(void)
{PB_DDR = PB_DDR |0xAA;
}
【龍順宇STM8單片機教程】51單片機過渡32單片機的好“跳板”_嗶哩嗶哩_bilibili
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 歡迎指正,希望對你,有所幫助!!!