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

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

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

STM32入門學(xué)習(xí)筆記之GPIO輸入輸出實(shí)驗(yàn)(下)

jf_78858299 ? 來源:滑小稽筆記 ? 作者:電子技術(shù)園地 ? 2023-02-16 10:04 ? 次閱讀

5.2.5 端口輸出數(shù)據(jù)寄存器:GPIOx_ODR(x=A..E)

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0

Bit 15~Bit 0:端口輸出數(shù)據(jù)(這些位屬于只讀并只能以字的形式操作)

注:在輸入模式下,ODR的數(shù)據(jù)可以控制端口內(nèi)部是上拉還是下拉,寫入1意味著端口上拉輸入。

5.3 GPIO的輸入與輸出例程

我們現(xiàn)在在PA0端口接一個(gè)按鍵,PA端口接一個(gè)LED,當(dāng)按下按鍵的時(shí)候,LED以100ms亮,100ms滅,抬起按鍵后LED常亮。

(1)在stm32f103x.h文件中添加GPIO的結(jié)構(gòu)體和地址映射。

圖片

圖片

圖片

(2)在HEADERWARE目錄下創(chuàng)建GPIO文件夾,并創(chuàng)建gpio.c和gpio.h兩個(gè)文件。

圖片

(3)在gpio.h文件中輸入以下內(nèi)容:

圖片

(4)在gpio.c文件中輸入以下內(nèi)容

圖片

(5)將gpio.c文件和gpio.h文件添加進(jìn)項(xiàng)目

圖片

圖片

(6)在1.c文件中輸入以下內(nèi)容:

圖片

注:實(shí)驗(yàn)中,按鍵一端接GND,LED一端接VCC,所以按鍵是檢測(cè)到0代表按下,端口輸出低電平代表LED點(diǎn)亮。

5.4 CM3內(nèi)核的位帶操作

Cortex-M3內(nèi)核中有一個(gè)非常有用的功能,叫做位帶操作,支持了位帶操作以后,可以使用普通的加載/存儲(chǔ)指令來對(duì)單一的比特進(jìn)行讀寫。在CM3中,有兩個(gè)區(qū)中實(shí)現(xiàn)了位帶。其中一個(gè)是SRAM區(qū)的最低1MB范圍,第二個(gè)則是片內(nèi)外設(shè)區(qū)的最低1MB范圍。這兩個(gè)區(qū)中的地址除了可以像普通的RAM一樣使用外,它們還都有自己的“位帶別名區(qū)”,位帶別名區(qū)把每個(gè)比特膨脹成一個(gè)32位的字。當(dāng)你通過位帶別名區(qū)訪問這些字時(shí),就可以達(dá)到訪問原始比特的目的。下圖從另一個(gè)側(cè)面演示比特的膨脹對(duì)應(yīng)關(guān)系。

圖片

欲設(shè)置地址0x20000000中的比特2,則使用位帶操作的設(shè)置過程如下圖所示。

圖片

30年前其實(shí)就已經(jīng)有位帶操作的概念了,自8051單片機(jī)開始,到現(xiàn)在的CM3內(nèi)核,位帶操作有什么優(yōu)越性呢?最容易想到的就是通過GPIO的管腳來單獨(dú)控制每盞LED的點(diǎn)亮與熄滅。另一方面,也對(duì)操作串行接口器件提供了很大的方便(典型如74HC165,CD4094)。位帶操作使代碼更簡(jiǎn)潔,這只是位帶操作優(yōu)越性的初等體現(xiàn),位帶操作還有一個(gè)重要的好處是在務(wù)中,用于實(shí)現(xiàn)共享資源在任務(wù)間的“互鎖”訪問。多任務(wù)的共享資源必須滿足一次只有一個(gè)任務(wù)訪問它——亦即所謂的“原子操作”。

5.5 利用位帶操作實(shí)現(xiàn)GPIO的輸入與輸出

現(xiàn)在利用位帶操作來實(shí)現(xiàn)上一題目中的功能。

(1)在sys.h文件中添加實(shí)現(xiàn)位帶操作的代碼。

圖片

(2)修改gpio.h中的代碼如下圖所示。

圖片

(3)修改gpio.c中的代碼如下圖所示。

圖片

(4)修改1.c中的代碼如下圖所示。

圖片

5.6 外部中斷的實(shí)現(xiàn)

關(guān)于STM32F103的中斷機(jī)制在之前已經(jīng)詳細(xì)講述過,現(xiàn)在利用外部中斷來實(shí)現(xiàn)上一題目的功能。

(1)修改gpio.c中的代碼如下圖所示。

圖片

(2)添加代碼到文件stm32f103.h中。

圖片

(3)修改1.c中的代碼如下圖所示。

圖片

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

    關(guān)注

    0

    文章

    453

    瀏覽量

    39232
  • adc
    adc
    +關(guān)注

    關(guān)注

    98

    文章

    6524

    瀏覽量

    545201
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10915

    瀏覽量

    356753
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32F2技術(shù)培訓(xùn)_通用輸入輸出端口_GPIO

    STM32F2技術(shù)培訓(xùn)_通用輸入輸出端口_GPIO
    發(fā)表于 12-03 17:34 ?0次下載

    6.2 通用輸入輸出GPIO(神舟王207)

    此文檔是關(guān)于神舟王開發(fā)板輸入輸出GPIO的介紹和講解;
    發(fā)表于 05-25 10:01 ?2次下載

    MCU學(xué)習(xí)筆記_GPIO工作原理

    purpose input output, 通用輸入輸出端,可通過程序軟件配置成輸入或者輸出端。引腳與GPIO的區(qū)別和聯(lián)系STM32的引腳
    發(fā)表于 10-25 11:21 ?17次下載
    MCU<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>_<b class='flag-5'>GPIO</b>工作原理

    AVR單片機(jī) 實(shí)驗(yàn)一 單片機(jī)基本輸入輸出(GPIO)實(shí)驗(yàn)

    工程,實(shí)現(xiàn)流水燈的功能,并通過ISP下載到單片機(jī)中,觀察實(shí)驗(yàn)效果。3 采用AVR單片機(jī)基本輸入輸出接口設(shè)計(jì)流水燈實(shí)驗(yàn);通過GPIO讀取按鍵(SW8)的狀態(tài),實(shí)現(xiàn)如下功能:?jiǎn)纹瑱C(jī)剛啟動(dòng)
    發(fā)表于 11-14 20:36 ?17次下載
    AVR單片機(jī)     <b class='flag-5'>實(shí)驗(yàn)</b>一 單片機(jī)基本<b class='flag-5'>輸入輸出</b>(<b class='flag-5'>GPIO</b>)<b class='flag-5'>實(shí)驗(yàn)</b>

    STM32的8種GPIO輸入輸出模式

    STM32的8種GPIO輸入輸出模式參考文章“STM32的8種GPIO輸入輸出模式深入詳解”和“
    發(fā)表于 11-26 17:06 ?16次下載
    <b class='flag-5'>STM32</b>的8種<b class='flag-5'>GPIO</b><b class='flag-5'>輸入輸出</b>模式

    [STM32]STM32F407系列教程之二,gpio輸入輸出實(shí)驗(yàn)

    [STM32]STM32F407系列教程之二,gpio輸入輸出實(shí)驗(yàn)
    發(fā)表于 11-29 14:06 ?19次下載
    [<b class='flag-5'>STM32</b>]<b class='flag-5'>STM32</b>F407系列教程之二,<b class='flag-5'>gpio</b><b class='flag-5'>輸入輸出</b><b class='flag-5'>實(shí)驗(yàn)</b>

    2、【STM32F0系列學(xué)習(xí)—通用輸入輸出端口(GPIO)

    STM32F0系列學(xué)習(xí)—通用輸入輸出端口GPIO1、GPIO端口配置說明1、
    發(fā)表于 11-29 16:51 ?66次下載
    2、【<b class='flag-5'>STM32</b>F0系列<b class='flag-5'>學(xué)習(xí)</b>】<b class='flag-5'>之</b>—通用<b class='flag-5'>輸入輸出</b>端口(<b class='flag-5'>GPIO</b>)

    STM32學(xué)習(xí)筆記1——軟硬件基礎(chǔ)keil5編程與GPIO開發(fā)

    STM32學(xué)習(xí)筆記1——軟硬件基礎(chǔ)keil5編程與GPIO開發(fā)
    發(fā)表于 11-30 12:36 ?4次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>1——軟硬件基礎(chǔ)<b class='flag-5'>之</b>keil5編程與<b class='flag-5'>GPIO</b>開發(fā)

    ZYNQ學(xué)習(xí)筆記_GPIO輸入輸出

    ZYNQ學(xué)習(xí)筆記_GPIOGPIO介紹MIO介紹EMIO介紹控制GPIO接口的寄存器原理GPIO介紹GPIO的英文全稱為General-pu
    發(fā)表于 12-04 19:36 ?10次下載
    ZYNQ<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>_<b class='flag-5'>GPIO</b><b class='flag-5'>之</b><b class='flag-5'>輸入輸出</b>

    GPIO通用輸入輸出

    GPIO通用輸入輸出一、GPIO的功能概述用途:GPIO是通用輸入輸出(General Purpose I/O)的簡(jiǎn)稱,主要用于工業(yè)現(xiàn)場(chǎng)需要
    發(fā)表于 12-20 18:58 ?6次下載
    <b class='flag-5'>GPIO</b>通用<b class='flag-5'>輸入輸出</b>

    STM32F1學(xué)習(xí)筆記

    (二)STM32學(xué)習(xí)GPIO1、GPIO簡(jiǎn)介GPIO 是通用
    發(fā)表于 12-24 19:18 ?2次下載
    <b class='flag-5'>STM32</b>F1<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>

    STM32學(xué)習(xí)筆記---GPIO

    STM32學(xué)習(xí)筆記GPIO我使用的是STM32F401ZGT6,有7組IO口,每組16個(gè)引腳,共112個(gè)引腳。因?yàn)樘肆?,確實(shí)容易出錯(cuò),
    發(fā)表于 01-13 16:31 ?6次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>---<b class='flag-5'>GPIO</b>

    第二章 stm32 cubemx GPIO輸入輸出實(shí)驗(yàn)以及proteus仿真

    第二章 stm32 cubemx GPIO輸入輸出實(shí)驗(yàn)以及proteus仿真文章目錄第二章 stm32 cubemx
    發(fā)表于 01-17 10:28 ?11次下載
    第二章 <b class='flag-5'>stm32</b> cubemx <b class='flag-5'>GPIO</b><b class='flag-5'>輸入輸出</b><b class='flag-5'>實(shí)驗(yàn)</b>以及proteus仿真

    STM32入門學(xué)習(xí)筆記GPIO輸入輸出實(shí)驗(yàn)(上)

    STM32中每個(gè)IO口都有很多個(gè)作用,比如這次我們使用的STM32F103ZET6的PA0口,既可以作為IO口使用,還可以作為待機(jī)喚醒(WAKEUP),模擬輸入(ADC功能)等。根據(jù)數(shù)據(jù)手冊(cè)中列出的每個(gè)I/O端口的特定硬件特征,
    的頭像 發(fā)表于 02-16 10:04 ?1241次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>入門</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b><b class='flag-5'>之</b><b class='flag-5'>GPIO</b><b class='flag-5'>輸入輸出</b><b class='flag-5'>實(shí)驗(yàn)</b>(上)

    i.MX6ULL學(xué)習(xí)筆記GPIO按鍵輸入捕獲

    掌握GPIO輸入輸出是必備技能,這篇推文繼續(xù)來學(xué)習(xí)操作GPIO,這篇主要學(xué)習(xí)GPIO
    的頭像 發(fā)表于 04-06 10:37 ?1222次閱讀