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

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

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

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

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

454398 ? 來(lái)源:工程師吳畏 ? 2019-07-31 09:18 ? 次閱讀

原理圖

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

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

使用PIC和AVR器件時(shí),您通常需要獲取該特定器件的數(shù)據(jù)表,并了解如何使用外設(shè)。有時(shí),一個(gè)PIC上的外設(shè)可能與另一個(gè)PIC上的外設(shè)不同,因此不能簡(jiǎn)單地將代碼從一個(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ù)表中沒(méi)有太多關(guān)于如何使用外設(shè)的信息,因此在使用任何STM8器件時(shí),您需要使用數(shù)據(jù)表;包含引腳分布的器件專(zhuān)用數(shù)據(jù)表,以及包含器件系列細(xì)節(jié)的另一個(gè)數(shù)據(jù)表。

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

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

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

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

GPIO

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

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

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

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

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

CR1和CR2 - 控制寄存器

圖片由RM0016參考手冊(cè)提供。

訪問(wèn)寄存器和位

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

GPIOB→xxx其中xxx是有問(wèn)題的寄存器

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

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

將引腳配置為輸入時(shí),需要清零相應(yīng)的DDR位(0),對(duì)于輸出,需要設(shè)置該位(1)。因此,比方說(shuō),我們只想將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è)位對(duì)應(yīng)一個(gè)特定的引腳。因此,例如,CR1和CR2中的位0用于端口的引腳0。下表(摘自數(shù)據(jù)表)演示了CR1和CR2寄存器的用途。

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

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

GPIOB→ODR = 0xFF;或GPIOB→ODR = 0b11111111;//打開(kāi)所有引腳

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

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

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

pinRead = GPIOB→IDR;

有用的位操作

因?yàn)槲?O端口由各個(gè)引腳組成,與整個(gè)寄存器相比,訪問(wèn)個(gè)別位更有幫助。但是,個(gè)別位不可用(類(lèi)似于AVR設(shè)備),因此我們需要使用一些位操作。由于這已經(jīng)在AVR系列中進(jìn)行了解釋?zhuā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ù)一樣使用它們,而不必編寫(xiě)位操作代碼。那么讓我們看一些如何在代碼中使用它們的示例!

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

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

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

然而,讀取引腳使用一個(gè)簡(jiǎn)單的位操作,包括使用AND來(lái)屏蔽我們不需要的所有位,然后測(cè)試查看結(jié)果是否為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配置為輸出,每當(dāng)按下開(kāi)關(guān)(連接到A1)時(shí),LED連接到B5將切換。這里我們也利用內(nèi)部上拉,因此我們的按鈕不需要上拉電阻工作(通過(guò)設(shè)置CR1中的位來(lái)完成)。

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

    關(guān)注

    18

    文章

    392

    瀏覽量

    56832
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1205

    瀏覽量

    52164
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    增加微控制器的輸入數(shù)

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

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

    微控制器
    芯廣場(chǎng)
    發(fā)布于 :2024年09月18日 15:02:33

    增加微控制器的輸入數(shù)量產(chǎn)品概述

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

    微控制器內(nèi)部的存儲(chǔ)有哪些

    微控制器(MCU)內(nèi)部的存儲(chǔ)微控制器系統(tǒng)的重要組成部分,它負(fù)責(zé)存儲(chǔ)程序代碼、數(shù)據(jù)以及控制邏輯等信息。這些存儲(chǔ)類(lèi)型多樣,各具特點(diǎn),共同支
    的頭像 發(fā)表于 08-22 10:41 ?794次閱讀

    微控制器的結(jié)構(gòu)和應(yīng)用

    微控制器(Microcontroller Unit,簡(jiǎn)稱(chēng)MCU)作為嵌入式系統(tǒng)的核心部件,其原理和應(yīng)用在現(xiàn)代科技發(fā)展中占據(jù)了舉足輕重的地位。本文將從微控制器的原理、基本結(jié)構(gòu)、工作原理、性能特點(diǎn)以及廣泛的應(yīng)用領(lǐng)域等方面進(jìn)行詳細(xì)闡述,旨在全面介紹
    的頭像 發(fā)表于 08-22 10:40 ?1114次閱讀

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

    本章描述了如何使用EZ-CUBE3在RL78微控制器上進(jìn)行片上調(diào)試和Flash編程。
    的頭像 發(fā)表于 08-01 16:01 ?883次閱讀
    如<b class='flag-5'>何在</b>RL78<b class='flag-5'>微控制器</b><b class='flag-5'>上</b>使用EZ-CUBE3

    STM32 GPIO八種模式及工作原理詳解

    一. 前言 ??GPIO全稱(chēng)General Purpose Input Output,是微控制數(shù)字輸入/輸出的基本模塊,可以實(shí)現(xiàn)微控制器與外部環(huán)境的數(shù)字進(jìn)行交換。借助GPIO
    的頭像 發(fā)表于 07-22 09:32 ?6550次閱讀
    STM32 <b class='flag-5'>GPIO</b>八種模式及工作原理詳解

    微控制器與運(yùn)動(dòng)控制器的區(qū)別

    隨著現(xiàn)代工業(yè)技術(shù)的快速發(fā)展,控制技術(shù)在各種機(jī)械設(shè)備中扮演著越來(lái)越重要的角色。微控制器和運(yùn)動(dòng)控制器作為兩種常見(jiàn)的控制設(shè)備,在各自的領(lǐng)域發(fā)揮著重要作用。然而,兩者在功能、應(yīng)用、特點(diǎn)等方面存
    的頭像 發(fā)表于 06-13 14:52 ?650次閱讀

    快速搞懂GPIO控制器的六種模式

    在嵌入式系統(tǒng)和單片機(jī)開(kāi)發(fā)中,GPIO(通用輸入輸出)控制器是一個(gè)非常重要的組件。GPIO引腳的靈活性使它們能夠執(zhí)行多種功能,從簡(jiǎn)單的輸入輸出到復(fù)雜的通信任務(wù)。為了幫助大家快速了解和掌握GPIO
    的頭像 發(fā)表于 05-18 08:04 ?1542次閱讀
    快速搞懂<b class='flag-5'>GPIO</b><b class='flag-5'>控制器</b>的六種模式

    8位Atmel 微控制器ATMEGA325V-8AU技術(shù)手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《8位Atmel 微控制器ATMEGA325V-8AU技術(shù)手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 05-06 14:59 ?0次下載

    RA8D1微控制器組評(píng)估套件快速入門(mén)指南

    電子發(fā)燒友網(wǎng)站提供《RA8D1微控制器組評(píng)估套件快速入門(mén)指南.pdf》資料免費(fèi)下載
    發(fā)表于 01-31 10:15 ?1次下載
    RA<b class='flag-5'>8</b>D1<b class='flag-5'>微控制器</b>組評(píng)估套件快速入門(mén)指南

    CAN如何讀取SAF-C515C-8EM微控制器?

    您好,請(qǐng)告訴我您 CAN 如何讀取 SAF-C515C-8EM 微控制器,然后將您讀取的內(nèi)容寫(xiě)入新的微控制器
    發(fā)表于 01-31 07:53

    何在aurix TC333微控制器中配置內(nèi)存分區(qū)?

    誰(shuí)能建議如何在 aurix TC333 微控制器中配置內(nèi)存分區(qū)。
    發(fā)表于 01-30 07:10

    FH8A51S封裝SOP8 SOT23-6 微控制器MCU介紹

    FH8A51S封裝SOP8 SOT23-6微控制器MCU單片機(jī)可代開(kāi)發(fā)燒錄 在當(dāng)今的電子設(shè)備中,微控制器(MCU)已經(jīng)成為不可或缺的核心組件。而FH
    的頭像 發(fā)表于 01-16 23:05 ?1032次閱讀
    FH<b class='flag-5'>8</b>A51S封裝SOP<b class='flag-5'>8</b> SOT23-6 <b class='flag-5'>微控制器</b>MCU介紹
    主站蜘蛛池模板: 日韩一卡二卡三卡四卡免费观在线 | 最近免费视频中文2019完整版| 最近高清中文字幕无吗免费看| 久草在线一免费新视频| 色女仆影院| 天堂so导航| 成人毛片免费在线观看| 国产午夜精品不卡观看| 老师在讲桌下边h边讲课| 日日AV夜夜添久久奶无码| 俄罗斯6一9泑女网站| 色欲午夜无码久久久久久| 国产精品 中文字幕 亚洲 欧美| 久久久久久免费观看| 欧美白妞大战非洲大炮| 午夜影院美女| 无码人妻精品一区二区蜜桃色| 中国人泡妞www免费| 国产精品久久久久a影院| 欧美日本韩国一二区视频| 仓井空torrent| 久久精品av| 私密按摩师在线观看 百度网盘| 国产精品成人不卡在线观看| 亚洲AV无码一区二区色情蜜芽 | 亚洲一卡二卡三卡四卡无卡麻豆 | 亚洲精品中文字幕在线| 久久影院午夜理论片无码| 天堂色| 黑色丝袜美女被网站| 无人区日本电影在线观看| 九九热伊人| 憋尿调教绝望之岛| 亚洲精品综合在线影院| 毛片亚洲毛片亚洲毛片| 国产69精品久久久久无码麻豆| 狼群资源网中文字幕| 白丝女仆被强扒内裤| 日本妞欧洲| 91popny蜜桃臀| 男女做爽爽爽视频免费软件|