STM8單片機學習筆記·GPIO的片上外設寄存器

目錄

前言

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 來完成對單片機外設的控制。

寄存器含義用法

  • DDRData 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

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 歡迎指正,希望對你,有所幫助!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/63125.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63125.shtml
英文地址,請注明出處:http://en.pswp.cn/web/63125.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

頁面加載速度優化策略:提升用戶體驗的關鍵

文章目錄 前言一、為什么需要優化頁面加載速度?二、前端優化技術三、后端優化策略四、構建與部署優化五、案例研究:實際效果展示結語 前言 在當今快節奏的互聯網環境中,頁面加載速度不僅是用戶體驗的重要組成部分,更是影響網站性…

【CSS in Depth 2 精譯_081】 13.1:CSS 漸變效果(下)——CSS 徑向漸變(13.1.3)+ CSS 錐形漸變(13.1.4)

當前內容所在位置(可進入專欄查看其他譯好的章節內容) 第四部分 視覺增強技術 ??【第 13 章 漸變、陰影與混合模式】 ?? 13.1 漸變 ?? 13.1.1 使用多個顏色節點(上)13.1.2 顏色插值方法(中)13.1.3 徑…

商務禮儀學習筆記

時間,場合,地點 女士: 1. 著裝(裙裝套裝,最短不能超過膝蓋一拳,裙子形狀直通,顏色簡單不能花里胡哨,上下顏色不能超過三種,深灰深藍;上下顏色,裝飾,面料統一;絲襪不要過于花,肉色透明比較推薦) 2. 妝容和發型(經過搭理,不要毛躁; 膚色保持一致,均衡;腮紅…

ubuntu 用 ss-tproxy的最終網絡結構

1、包含了AD廣告域名篩選 2、Ss-tproxy 國內國外地址分類 3、chinadns-ng解析 4、透明網關 更多細節看之前博客 ubuntu 用ss-TPROXY實現透明代理,基于TPROXY的透明TCP/UDP代理,在 Linux 2.6.28 后進入官方內核。ubuntu 用 ss-tproxy的內置 DNS 前掛上 AdGuardHome…

iOS swift開發系列--如何給swiftui內容視圖添加背景圖片顯示

我需要在swiftui項目中顯示背景圖,有兩種方式,一種是把圖片拖入asset資源中,另外一種是直接把圖片放在源碼目錄下。采用第一種方式,直接把圖片拖到資源目錄,但是swiftui項目沒有彈出, “Copy items if need…

BUUCTF Pwn [HarekazeCTF2019]baby_rop2 題解

下載 得到兩個文件 checksec 64位 拖入IDA64 查看main函數 看到給了個libc說明這題是ret2libc題 這里的打印函數是printf 所以利用printf函數的plt輸出真實地址got 但printf的got好像不行 所以換成了read的got 因為這是64位程序 所以用寄存器傳參;又因為printf得…

語音識別失敗 chrome下獲取瀏覽器錄音功能,因為安全性問題,需要在localhost或127.0.0.1或https下才能獲取權限

環境: Win10專業版 谷歌瀏覽器 版本 131.0.6778.140(正式版本) (64 位) 問題描述: 局域網web語音識別出現識別失敗 chrome控制臺出現下獲取瀏覽器錄音功能,因為安全性問題,需要在…

【前端知識】Javascript進階-類和繼承

文章目錄 概述一、類(Class)二、繼承(Inheritance) 三、繼承的實現方式作用一、類和作用二、繼承和作用 概述 當然可以,以下是對JavaScript中類和繼承的詳細介紹: 一、類(Class) 定…

前端搭建企業級項目的具體步驟?

?前端搭建企業級項目的具體步驟如下?: ?確定項目技術棧和規劃項目結構?:首先,確定使用的前端框架,如Vue.js,并規劃項目的目錄結構,包括src、components、routes、store等?。 ?準備開發環境?&#x…

Less和SCSS,哪個更好用?

前言 Less 和 SCSS 都是流行的 CSS 預處理器,它們的目的都是擴展 CSS 的功能,使樣式表更具組織性、可維護性和可重用性。雖然它們有許多相似之處,但在語法、特性和工作方式上也存在一些差異。 Less Less 是一種動態樣式表語言,…

【第三節】Git 基本操作指南

目錄 前言 一、獲取與創建項目 1.1 git init 1.2 git clone 二、基本快照操作 2.1 git add 2.2 git status 2.3 git diff 2.4 git commit 2.5 git reset HEAD 三、 文件管理 3.1 git rm 3.2 git mv 四、 總結 前言 本文將詳細介紹 Git 的基本操作,包括…

【Graylog】索引別名deflector的異常處理和索引分片數限制解除

索引別名deflector的異常處理 官方推薦處理步驟 Stop all Graylog nodes (OPTIONAL) If you want to keep the already ingested messages, reindex them into the Elasticsearch index with the greatest number, e. g. graylog_23 if you want to fix the deflector graylo…

PyTorch 2.0 以下版本中設置默認使用 GPU 的方法

PyTorch 2.0 以下版本中設置默認使用 GPU 的方法 在 PyTorch 2.0以下版本中,默認情況下仍然是使用 CPU 進行計算,除非明確指定使用 GPU。在 PyTorch 2.0 以下版本中,雖然沒有 torch.set_default_device 的便捷方法,但可以通過顯式…

【一本通】輸入兩個不同的數,通過指針對兩個數進行相加和相乘

【一本通】輸入兩個不同的數,通過指針對兩個數進行相加和相乘 C語言代碼C代碼Java代碼 💐The Begin💐點點關注,收藏不迷路💐 輸入兩個不同的數,通過指針對兩個數進行相加和相乘,并輸出。 輸入 …

X.game解析柚子幣提升速效雙向利好和年中歷史新低原因

柚子幣最新消息,幣安宣布將于2024年9月25日21:00左右暫停柚子幣網絡上的代幣存取業務,以全力支持即將到來的柚子幣網絡升級和硬分叉,這一消息為柚子幣的未來發展增添了新的期待和變數。 除了速度的提升,Spring1.0還帶來了諸多技術…

redis集群安裝部署 redis三主三從集群

redis集群安裝部署 redis三主三從集群 1、下載redis2、安裝redis集群 三主三從3、配置redis開機自啟動3.1、建立啟動腳本3.2、復制多份redis啟動腳本給集群使用3.3、添加可執行權限3.4、配置開機自啟動 1、下載redis 本次redis安裝部署選擇當前最新的穩定版本7.4.1 下載鏈接: …

數據結構,鏈表的簡單使用

任意位置刪除&#xff1a; void Any_Del(LinkListPtr h,int a)//任意刪 {if(NULLh||a>h->len){printf("刪除失敗");}LinkListPtr ph;for(int i0;i<a-1;i){pp->next;}LinkListPtr p2p;p2p2->next;p->nextp->next->next;free(p2);p2NULL;h-&g…

Servlet容器來掃描指定包中的類 找到帶有WebServlet注解的類

項目框架如上圖 myweb下邊三個類 package com.qcby.tomcat.myweb;import com.qcby.tomcat.webServlet.WebServlet;WebServlet(urlPatterns {"MyFirstServlet"}) public class MyFirstServlet {}package com.qcby.tomcat.myweb;import com.qcby.tomcat.webServlet.W…

clickhouse 查詢優化思路

最重要的是要學會看懂explain &#xff0c;尤其是下推創建表時&#xff0c;可以選擇表為分布式表。多個表join &#xff0c;創建表時根據join 字段,進行分片&#xff0c;讓數據在同一個節點進行join &#xff0c;提高join 效率。多個表join , 通過創建物化視圖的方式&#xff0…

兩數之和(Hash表)

優質博文&#xff1a;IT-BLOG-CN 一、題目 給定一個整數數組nums和一個整數目標值target&#xff0c;請你在該數組中找出"和"為目標值target的那兩個整數&#xff0c;并返回它們的數組下標。 你可以假設每種輸入只會對應一個答案。但是&#xff0c;數組中同一個元…