色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在STM8微控制器上使用GPIO

454398 ? 來源:工程師吳畏 ? 2019-07-31 09:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

原理圖

如何在STM8微控制器上使用GPIO

通用設計

使用PIC和AVR器件時,您通常需要獲取該特定器件的數據表,并了解如何使用外設。有時,一個PIC上的外設可能與另一個PIC上的外設不同,因此不能簡單地將代碼從一個PIC復制并粘貼到另一個PIC。但是,STM8完全不同,因為所有STM8設備都使用通用布局而不是具有唯一配置。這意味著為一個STM8設計的代碼可以直接復制并粘貼到不同的控制器,它仍然可以工作(假設新設備具有所需的外設)。

一個典型的例子是UART外設。 STM8器件最多可以有三個UART端口(1,2和3),一個STM8器件上的UART1與另一個STM8器件上的UART1相同。但是,各個STM8器件的數據表中沒有太多關于如何使用外設的信息,因此在使用任何STM8器件時,您需要使用數據表;包含引腳分布的器件專用數據表,以及包含器件系列細節的另一個數據表。

對于我們的STM8項目,我們將利用這兩個數據表中的信息:

STM8S103F3器件數據表(PDF) - 包含基本細節和引腳信息

STM8系列器件概述(PDF) - 包含詳細的外設和CPU信息

如果您想知道設備上的引腳位置,請使用設備數據表,如果您想了解如何使用外圍設備,請使用系列設備概述表。

GPIO

雖然開發板允許我們對STM8進行編程微控制器和CPU功能,除非我們可以將微型連接到其他設備和外部電路,否則它是毫無意義的。為了能夠執行此類任務,使用通用輸入輸出或GPIO。 GPIO是器件上的引腳,可以電連接到外部電路,以控制它們或從中讀取信息。雖然可以讀取模擬數據,但本教程僅關注數字值(打開或關閉的數字值)。

說到GPIO,有四個主要寄存器

DDR - 數據方向寄存器

ODR - 輸出數據寄存器

IDR - 輸入數據寄存器

CR1和CR2 - 控制寄存器

圖片由RM0016參考手冊提供。

訪問寄存器和位

訪問STM8上的GPIO有點類似于AVR ,除了STM8S.h使用結構。例如,STM8S上的PORT B有自己的結構,稱為GPIOB,內部是控制它的所有寄存器(如DDR,ODR,IDR等)。訪問這些寄存器可以如下所示:

GPIOB→xxx其中xxx是有問題的寄存器

數據方向寄存器(DDR)

與PIC和AVR器件一樣,STM8使用數據方向寄存器來確定引腳是輸入還是輸出。這些寄存器為8位寬,直接對應I/O端口上的引腳。例如,PORT B最多可以有8個引腳,B0對應端口B DDR寄存器中的第0位,而B7對應端口B DDR寄存器中的第7位。

將引腳配置為輸入時,需要清零相應的DDR位(0),對于輸出,需要設置該位(1)。因此,比方說,我們只想將B0和B1配置為輸入,同時將其余部分保持為輸出。我們可以執行以下操作:

GPIOB→DDR = 0xFC;

GPIOB→DDR = 0b11111100;

控制寄存器CR1和CR2

CR1和CR2是控制寄存器,可配置為提供不同的I/O功能。例如,它們可以配置為允許在各個引腳上產生中斷,并可用于創建具有推/拉功能的輸出驅動器。與其他寄存器一樣,CR1和CR2寄存器中的每個位對應一個特定的引腳。因此,例如,CR1和CR2中的位0用于端口的引腳0。下表(摘自數據表)演示了CR1和CR2寄存器的用途。

輸出數據寄存器( ODR)

輸出數據寄存器用于輸出數字值(1和0)到一個端口。可以寫入各個位(使用位掩碼),也可以更改整個寄存器。將1位寫入ODR位將使相應的引腳導通,寫入0將使相應的引腳關閉。下面的第一個示例用于打開端口上的所有引腳,第二個示例關閉所有引腳。

GPIOB→ODR = 0xFF;或GPIOB→ODR = 0b11111111;//打開所有引腳

GPIOB→ODR = 0x00;或GPIOB→ODR = 0b00000000;//關閉所有引腳

輸入數據寄存器(IDR)

IDR寄存器可用于讀取端口引腳上的數字值。這些值可以是(1)或關閉(0),IDR寄存器的第0位對應引腳0,而第7位對應引腳7.

pinRead = GPIOB→IDR;

有用的位操作

因為我/O端口由各個引腳組成,與整個寄存器相比,訪問個別位更有幫助。但是,個別位不可用(類似于AVR設備),因此我們需要使用一些位操作。由于這已經在AVR系列中進行了解釋,我們只會看一些非常有用的宏。

這些非常有用的宏有助于擺脫不可讀的位掩碼:

#define setBit(reg,bit)(reg = reg |(1 《

#define clearBit(reg,bit)(reg = reg&?(1 《

#define toggleBit(reg,bit)(reg = reg ^(1 《

將此代碼復制并粘貼到代碼頂部,然后,您可以像函數一樣使用它們,而不必編寫位操作代碼。那么讓我們看一些如何在代碼中使用它們的示例!

setBit(GPIOB→DDR,3);//將端口B上的第3位設置為輸出

clearBit(GPIOA→ODR,4);//關閉端口a上的輸出位4

toggleBit(GPIOC→ODR) ,5);//在端口c上切換第5位

然而,讀取引腳使用一個簡單的位操作,包括使用AND來屏蔽我們不需要的所有位,然后測試查看結果是否為0。

if( (GPIOB→IDR & 0b00000001) )

{

// Code here executes IF bit 0 is on

}

if( !(GPIOB→IDR & 0b00000001) )

{

// Code here executes IF bit 0 is off

}

基本配置示例

在本例中,我們將引腳A1配置為輸入,B5配置為輸出,每當按下開關(連接到A1)時,LED連接到B5將切換。這里我們也利用內部上拉,因此我們的按鈕不需要上拉電阻工作(通過設置CR1中的位來完成)。

/* MAIN.C file

*

* Copyright (c) 2002-2005 STMicroelectronics

*/

#include “stm8s.h”

#define setBit(reg, bit) (reg = reg | (1 《《 bit))

#define clearBit(reg, bit) (reg = reg & ~(1 《《 bit))

#define toggleBit(reg, bit) (reg = reg ^ (1 《《 bit))

void simpleDelay(void);

main()

{

GPIOA-》DDR = 0x00; // Make all pins on PORT A inputs

GPIOA-》CR1 = 0xFF; // Ensure that internal pull up is on

GPIOA-》CR2 = 0x00; // Ensure that interrupts are turned off

GPIOB-》DDR = 0xFF;

while (1)

{

// Testing bit 1 (bit 0 would be 1)

if( !(GPIOA-》IDR & 0x02) )

{

toggleBit(GPIOB-》ODR, 5);

simpleDelay();

}

}

}

// Simple delay used for debouncing

void simpleDelay(void)

{

unsigned int i, j;

for(i = 0; i 《 1000; i ++)

{

for(j=0; j 《 10; j ++)

{

}

}

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM8
    +關注

    關注

    18

    文章

    392

    瀏覽量

    57903
  • GPIO
    +關注

    關注

    16

    文章

    1280

    瀏覽量

    54190
收藏 1人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    何在MCXN947微控制器配置安全啟動和生命周期

    本文檔旨在介紹如何在MCXN947微控制器配置安全啟動和生命周期,以確保產品在量產階段的安全性,防止代碼被竊取和篡改,并且能夠安全地升級更新固件。通過本應用筆記,開發者可以更好地理解和實施安全啟動和固件更新的最佳實踐。
    的頭像 發表于 06-26 09:49 ?1180次閱讀
    如<b class='flag-5'>何在</b>MCXN947<b class='flag-5'>微控制器</b><b class='flag-5'>上</b>配置安全啟動和生命周期

    8微控制器KF8A100Fxx數據手冊

    電子發燒友網站提供《8微控制器KF8A100Fxx數據手冊.pdf》資料免費下載
    發表于 05-30 16:11 ?1次下載

    STM8S103F3P3TR STM32F091VCH6微控制器 IC MCU 8K/256K Flash

    :100-UFBGA(7x7) 明佳達 STM8S103F3P3TR是一款8微控制器,屬于STM8S系列中的一種。它具有高性能、低功耗和低成本的特點,適用于各種嵌入式系統的
    發表于 02-20 17:53

    CY8C40xx系列32 位 PSOC? Arm? Cortex? 微控制器Cypress

    CY8C40xx系列32 位 PSOC? Arm? Cortex? 微控制器CypressPSoC 4是Cypress微控制器的可擴展可重構系統架構,涵蓋了Arm CortexTM-M0CPU
    發表于 01-17 09:14

    GPIO錯誤排查與解決

    在嵌入式系統和微控制器編程中,通用輸入輸出(GPIO)是最常見的接口之一。然而,在使用GPIO時,我們可能會遇到各種錯誤。 1. 理解GPIO GP
    的頭像 發表于 01-09 09:46 ?2370次閱讀

    如何配置GPIO引腳

    引腳是微控制器的一個多功能接口,可以被配置為數字輸入、數字輸出、模擬輸入/輸出或特殊功能。在數字模式下,GPIO引腳可以是高電平(邏輯1)或低電平(邏輯0)。在模擬模式下,它們可以讀取模擬信號。 配置
    的頭像 發表于 01-09 09:39 ?1280次閱讀

    何在i.MX RT微控制器初始化LWIP協議棧

    在i.MX RT微控制器初始化LWIP協議棧是一個復雜但有趣的過程,它涉及多個步驟和關鍵組件的配置.
    的頭像 發表于 10-12 11:48 ?859次閱讀
    如<b class='flag-5'>何在</b>i.MX RT<b class='flag-5'>微控制器</b><b class='flag-5'>上</b>初始化LWIP協議棧

    調試MSP430系列微控制器的閃存問題

    電子發燒友網站提供《調試MSP430系列微控制器的閃存問題.pdf》資料免費下載
    發表于 10-09 10:27 ?0次下載
    調試MSP430系列<b class='flag-5'>微控制器</b><b class='flag-5'>上</b>的閃存問題

    ESP32 微控制器系列指南

    Systems 創建了功能強大且價格實惠的片系統 (SoC) 設備,將 Wi-Fi、藍牙和中央處理單元 (CPU) 集成到一個微控制器封裝中,使這些 SoC 成為理想的選擇適用于嵌入式控制器和物聯網項目
    的頭像 發表于 10-02 18:21 ?5078次閱讀
    ESP32 <b class='flag-5'>微控制器</b>系列指南

    增加微控制器的輸入數

    電子發燒友網站提供《增加微控制器的輸入數.pdf》資料免費下載
    發表于 09-21 10:30 ?0次下載
    增加<b class='flag-5'>微控制器</b><b class='flag-5'>上</b>的輸入數

    什么是微控制器/它的關鍵組成部分有哪些?

    微控制器
    芯廣場
    發布于 :2024年09月18日 15:02:33

    增加微控制器的輸入數量產品概述

    電子發燒友網站提供《增加微控制器的輸入數量產品概述.pdf》資料免費下載
    發表于 09-13 09:08 ?0次下載
    增加<b class='flag-5'>微控制器</b><b class='flag-5'>上</b>的輸入數量產品概述

    微控制器內部的存儲有哪些

    微控制器(MCU)內部的存儲微控制器系統的重要組成部分,它負責存儲程序代碼、數據以及控制邏輯等信息。這些存儲類型多樣,各具特點,共同支
    的頭像 發表于 08-22 10:41 ?1492次閱讀

    微控制器的結構和應用

    微控制器(Microcontroller Unit,簡稱MCU)作為嵌入式系統的核心部件,其原理和應用在現代科技發展中占據了舉足輕重的地位。本文將從微控制器的原理、基本結構、工作原理、性能特點以及廣泛的應用領域等方面進行詳細闡述,旨在全面介紹
    的頭像 發表于 08-22 10:40 ?2637次閱讀

    何在RL78微控制器使用EZ-CUBE3

    本章描述了如何使用EZ-CUBE3在RL78微控制器上進行片上調試和Flash編程。
    的頭像 發表于 08-01 16:01 ?1579次閱讀
    如<b class='flag-5'>何在</b>RL78<b class='flag-5'>微控制器</b><b class='flag-5'>上</b>使用EZ-CUBE3
    主站蜘蛛池模板: 日本午夜精品理论片A级APP发布 | 台湾果冻传媒在线观看 | 亚洲AV怡红院AV男人的天堂 | 日本三级按摩推拿按摩 | 日本熟妇多毛XXXXX视频 | 成人影片下载网站 | 青青草国产自偷拍 | 女人和男人插曲视频大全 | 成人无码在线超碰视频 | 亚洲免费网站在线观看 | 婷婷亚洲AV色香蕉蜜桃 | 精品一区二区三区四区五区六区 | 含羞草国产亚洲精品岁国产精品 | 久久久久久久久久综合情日本 | 国产精品久久久久久久久LI无码 | 日本邪恶少女漫画大全 | 久久国产加勒比精品无码 | 污污又黄又爽免费的网站 | 美女与男人对肌免费网站 | 成人亚洲乱码在线 | 欧美日韩另类在线观看视频 | 一边吃奶一边添P好爽故事 一边吃奶一边啪啪真舒服 一本之道加勒比在线观看 一本之道高清在线观看一区 | 亚洲国产货青视觉盛宴 | 亚洲一日韩欧美中文字幕在线 | 99视频这里只有精品 | 青青青视频在线 | 饱满奶大30p | caoporon超碰在线视频 | 四虎影院网红美女 | a久久99精品久久久久久蜜芽 | 美女诱惑性感揉胸 | 美女被j进去动态 | 秋霞久久久久久一区二区 | 879影视动漫h免费观看 | 伊人久久青草 | 日日碰狠狠添天天爽 | 囯产免费精品一品二区三区视频 | 日日啪在线影院百度 | 色综合久久88色综合天天提莫 | 久久久久综合网 | 粉嫩无套白浆第一次jk |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品