chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

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

掃碼添加小助手

加入工程師交流群

原理圖

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

通用設(shè)計(jì)

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

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

對于我們的STM8項(xiàng)目,我們將利用這兩個(gè)數(shù)據(jù)表中的信息:

STM8S103F3器件數(shù)據(jù)表(PDF) - 包含基本細(xì)節(jié)和引腳信息

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

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

GPIO

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

說到GPIO,有四個(gè)主要寄存器

DDR - 數(shù)據(jù)方向寄存器

ODR - 輸出數(shù)據(jù)寄存器

IDR - 輸入數(shù)據(jù)寄存器

CR1和CR2 - 控制寄存器

圖片由RM0016參考手冊提供。

訪問寄存器和位

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

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

數(shù)據(jù)方向寄存器(DDR)

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

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

GPIOB→DDR = 0xFC;

GPIOB→DDR = 0b11111100;

控制寄存器CR1和CR2

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

輸出數(shù)據(jù)寄存器( ODR)

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

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

GPIOB→ODR = 0x00;或GPIOB→ODR = 0b00000000;//關(guān)閉所有引腳

輸入數(shù)據(jù)寄存器(IDR)

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

pinRead = GPIOB→IDR;

有用的位操作

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

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

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

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

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

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

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

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

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

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

if( (GPIOB→IDR & 0b00000001) )

{

// Code here executes IF bit 0 is on

}

if( ?。℅PIOB→IDR & 0b00000001) )

{

// Code here executes IF bit 0 is off

}

基本配置示例

在本例中,我們將引腳A1配置為輸入,B5配置為輸出,每當(dāng)按下開關(guān)(連接到A1)時(shí),LED連接到B5將切換。這里我們也利用內(nèi)部上拉,因此我們的按鈕不需要上拉電阻工作(通過設(shè)置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( ?。℅PIOA-》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 ++)

{

}

}

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • STM8
    +關(guān)注

    關(guān)注

    18

    文章

    393

    瀏覽量

    58862
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1333

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    深入解析COP8SA系列8位CMOS微控制器

    微控制器,它具有1k到4k的內(nèi)存、電復(fù)位功能以及超小封裝等特點(diǎn),適用于眾多低成本應(yīng)用場景。 文件下載: COP8SAC728N8.pdf 一、產(chǎn)品概述 COP8SAx設(shè)備在指令集和引
    的頭像 發(fā)表于 04-19 09:05 ?63次閱讀

    探索COP8SG系列8微控制器:特性、架構(gòu)與應(yīng)用解析

    探索COP8SG系列8微控制器:特性、架構(gòu)與應(yīng)用解析 在電子工程領(lǐng)域,微控制器的選擇對于產(chǎn)品的性能和成本起著關(guān)鍵作用。今天,我們來深入了解一下德州儀器(TI)的COP
    的頭像 發(fā)表于 04-18 15:15 ?491次閱讀

    EFM8BB3微控制器:小身材大能量的嵌入式利器

    EFM8BB3微控制器:小身材大能量的嵌入式利器 在嵌入式系統(tǒng)開發(fā)領(lǐng)域,一款性能卓越、功能豐富且體積小巧的微控制器往往能為工程師們帶來極大的便利。今天,我們就來深入了解一下Silicon Labs
    的頭像 發(fā)表于 04-15 13:55 ?140次閱讀

    LAPIS ML610Q482P 8微控制器:設(shè)計(jì)與應(yīng)用的理想之選

    LAPIS ML610Q482P 8微控制器:設(shè)計(jì)與應(yīng)用的理想之選 在電子設(shè)計(jì)領(lǐng)域,選擇一款合適的微控制器對于項(xiàng)目的成功至關(guān)重要。LAPIS SEMICONDUCTOR的ML610Q482P
    的頭像 發(fā)表于 04-15 09:40 ?373次閱讀

    探索MC68HC705C8A微控制器:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)

    微控制器單元(MCU)。它具備多種強(qiáng)大的功能和特性,適用于各種對成本和性能有要求的應(yīng)用。其增強(qiáng)版本MC68HSC705C8A則在此基礎(chǔ)實(shí)現(xiàn)
    的頭像 發(fā)表于 04-09 10:55 ?186次閱讀

    Z8 Encore! XP 64K系列閃存微控制器:高性能8位解決方案

    Z8 Encore! XP 64K系列閃存微控制器在此基礎(chǔ)增加了閃存內(nèi)存,具備在線編程能力,大大縮短了開發(fā)時(shí)間,并允許在現(xiàn)場進(jìn)行程序更改。其新
    的頭像 發(fā)表于 04-05 09:20 ?258次閱讀

    Z8 Encore! XP? F0822系列微控制器:高性能8位解決方案

    Z8 Encore! XP? F0822系列微控制器:高性能8位解決方案 在電子設(shè)計(jì)領(lǐng)域,高性能且功能豐富的微控制器一直是工程師們追求的目標(biāo)。Zilog的Z
    的頭像 發(fā)表于 04-04 13:40 ?597次閱讀

    探索Zilog Z8 Encore! XP F0823系列高性能8微控制器

    微控制器基于其8位eZ8 CPU內(nèi)核。該系列為性能和片外設(shè)設(shè)定了新的標(biāo)準(zhǔn),支持8KB的非易失性閃存和1KB的片
    的頭像 發(fā)表于 04-04 13:40 ?592次閱讀

    CMOS Super8 ROMLESS MCU:8微控制器的新選擇

    CMOS Super8 ROMLESS MCU:8微控制器的新選擇 在電子設(shè)計(jì)領(lǐng)域,微控制器的性能和特性對于產(chǎn)品的成功至關(guān)重要。今天,我們來深入了解一下CMOS Super
    的頭像 發(fā)表于 04-04 13:20 ?593次閱讀

    RA8E1微控制器深度剖析:特性、電氣參數(shù)與設(shè)計(jì)要點(diǎn)

    RA8E1微控制器深度剖析:特性、電氣參數(shù)與設(shè)計(jì)要點(diǎn) 在電子設(shè)計(jì)領(lǐng)域,微控制器(MCU)是眾多項(xiàng)目的核心組件,其性能和特性直接影響著整個(gè)系統(tǒng)的功能和穩(wěn)定性。RA8E1 Group Re
    的頭像 發(fā)表于 04-01 09:50 ?406次閱讀

    Z8 Encore! F0830 系列高性能 8微控制器深度解析

    Z8 Encore! F0830 系列高性能 8微控制器深度解析 在當(dāng)今競爭激烈的電子設(shè)計(jì)領(lǐng)域,選擇一款性能卓越、功能豐富的微控制器至關(guān)重要。Z
    的頭像 發(fā)表于 03-16 16:05 ?263次閱讀

    請問GPIO微控制器中的作用是什么?

    GPIO微控制器中的作用是什么?
    發(fā)表于 12-25 06:46

    如何使用GPIO模擬ARGB2 LED定時(shí)序列,并在M258系列微控制器(MCU)實(shí)現(xiàn)彩虹波ARGB2 LED效果?

    使用GPIO模擬ARGB2 LED定時(shí)序列,并在M258系列微控制器(MCU)實(shí)現(xiàn)彩虹波ARGB2 LED效果
    發(fā)表于 08-20 06:55

    何在 M55M1 系列微控制器以低功耗模式使用運(yùn)動(dòng)檢測功能?

    何在 M55M1 系列微控制器以低功耗模式使用運(yùn)動(dòng)檢測功能。根據(jù)物體檢測結(jié)果,系統(tǒng)將動(dòng)態(tài)啟用或禁用運(yùn)動(dòng)檢測塊,以實(shí)現(xiàn)最佳性能和能效。
    發(fā)表于 08-19 06:56

    何在MCXN947微控制器配置安全啟動(dòng)和生命周期

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