欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

GPIO輸入輸出實驗

汽車電子技術(shù) ? 來源:滑小稽筆記 ? 作者:電子技術(shù)園地 ? 2023-03-01 16:46 ? 次閱讀

5.1 STM32單片機GPIO概述

STM32中每個IO口都有很多個作用,比如這次我們使用的STM32F103ZET6的PA0口,既可以作為IO口使用,還可以作為待機喚醒(WAKEUP),模擬輸入(ADC功能)等。根據(jù)數(shù)據(jù)手冊中列出的每個I/O端口的特定硬件特征,GPIO端口的每個位可以由軟件分別配置成多種模式。

(1)輸入浮空

(2)輸入上拉

(3)輸入下拉

(4)模擬輸入

(5)開漏輸出

(6)推挽式輸出

(7)推挽式復(fù)用功能

(8)開漏復(fù)用功能

每個I/O端口位可以自由編程,然而I/O端口寄存器必須按32位字被訪問(不允許半字或字節(jié)訪問)。GPIOx_BSRRGPIOx_BRR寄存器允許對任何GPIO寄存器的讀/更改的獨立訪問;這樣,在讀和更改訪問之間產(chǎn)生IRQ時不會產(chǎn)生異常錯誤。

STM32F103系列的基本IO口結(jié)構(gòu)如下圖所示

圖片

從結(jié)構(gòu)圖可以看出來,STM32的GPIO口可以配置好幾個選項,內(nèi)部上拉下拉電阻的選擇,推挽輸出或者開漏輸出,對于復(fù)用功能,有專門的復(fù)用輸入支路和輸出支路。STM32F103的端口由10個寄存器控制,但是常用的并不多,時鐘控制寄存器APB2ENR,模式控制寄存器CRH和CRL,輸入寄存器IDR,輸出寄存器ODR。

5.2 相關(guān)寄存器

5.2.1 APB2 外設(shè)時鐘使能寄存器:RCC_APB2ENR

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
- USART1EN - SPI1EN TIM1EN ADC2EN ADC1EN - IOPEEN IOPDEN IOPCEN IOPBEN IOPAEN - AFIOEN

Bit 14:串口1時鐘使能(寫1開啟,寫0關(guān)閉)

Bit 12:SPI1時鐘使能(寫1開啟,寫0關(guān)閉)

Bit 11:定時器1時鐘使能(寫1開啟,寫0關(guān)閉)

Bit 10:ADC2時鐘使能(寫1開啟,寫0關(guān)閉)

Bit 9:ADC1時鐘使能(寫1開啟,寫0關(guān)閉)

Bit 6:GPIOE時鐘使能(寫1開啟,寫0關(guān)閉)

Bit 5:GPIOD時鐘使能(寫1開啟,寫0關(guān)閉)

Bit 4:GPIOC時鐘使能(寫1開啟,寫0關(guān)閉)

Bit 3:GPIOB時鐘使能(寫1開啟,寫0關(guān)閉)

Bit 2:GPIOA時鐘使能(寫1開啟,寫0關(guān)閉)

Bit 0:輔助時鐘IO時鐘使能(寫1開啟,寫0關(guān)閉)

5.2.2 端口配置低寄存器:GPIOx_CRL(x=A..E)

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
CNF7 MODE7 CNF6 MODE6 CNF5 MODE5 CNF4 MODE4
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CNF3 MODE3 CNF2 MODE2 CNF1 MODE1 CNF0 MODE0

端口配置表:

bit 31Bit 30:bit 27Bit 26:bit 23Bit 22:bit 19Bit 18:bit 15Bit 14:bit 11Bit 10:bit 7Bit 6:bit 3Bit 2: CNFy[1:0]:端口y的配置位(y=0……7)輸入模式下:00:模擬輸入模式01:浮空輸入模式(復(fù)位后的狀態(tài))10:上拉/下拉輸入模式11:保留輸出模式下:00:通用推挽輸出模式01:通用開漏輸出模式10:復(fù)用功能推挽輸出模式11:復(fù)用功能開漏輸出模式
bit 29Bit 28:bit 25Bit 24:bit 21Bit 20:bit 17Bit 16:bit 13Bit 12:bit 9Bit 8:bit 5Bit 4:bit 1Bit 0: MODEy[1:0]:端口y的模式位(y=0……7)00:輸入模式(復(fù)位后的狀態(tài))01:輸出模式,最大速度10MHz10:輸出模式,最大速度2MHz11:輸出模式,最大速度50MHz

5.2.3 端口配置高寄存器:GPIOx_CRH(x=A..E)

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
CNF15 MODE15 CNF14 MODE14 CNF13 MODE13 CNF12 MODE12
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CNF11 MODE11 CNF10 MODE10 CNF9 MODE9 CNF8 MODE8

配置方式和端口配置低寄存器一致。

5.2.4 端口輸入數(shù)據(jù)寄存器:GPIOx_IDR(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ù)(這些位屬于只讀并只能以字的形式讀出)

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端口接一個按鍵,PA端口接一個LED,當按下按鍵的時候,LED以100ms亮,100ms滅,抬起按鍵后LED常亮。

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

圖片

圖片

圖片

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

圖片

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

圖片

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

圖片

(5)將gpio.c文件和gpio.h文件添加進項目

圖片

圖片

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

圖片

注:實驗中,按鍵一端接GND,LED一端接VCC,所以按鍵是檢測到0代表按下,端口輸出低電平代表LED點亮。

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

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

圖片

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

圖片

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

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

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

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

圖片

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

圖片

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

圖片

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

圖片

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

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

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

圖片

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

圖片

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

圖片

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

    關(guān)注

    0

    文章

    462

    瀏覽量

    39391
  • STM32
    +關(guān)注

    關(guān)注

    2272

    文章

    10925

    瀏覽量

    357710
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1217

    瀏覽量

    52411
收藏 人收藏

    評論

    相關(guān)推薦

    第二章 stm32 cubemx GPIO輸入輸出實驗以及proteus仿真 精選資料分享

    第二章 stm32 cubemx GPIO輸入輸出實驗以及proteus仿真文章目錄第二章 stm32 cubemx GPIO輸入輸出
    發(fā)表于 07-22 07:51

    單片機基本輸入輸出(GPIO)實驗

    AVR單片機實驗一 單片機基本輸入輸出(GPIO)實驗1實驗目的掌握ICCAVR 集成開發(fā)環(huán)境的使用;了解ATmega16單片機管腳的
    發(fā)表于 11-23 07:17

    gpio輸入輸出實驗相關(guān)資料下載

    [STM32]STM32F407系列教程之二,gpio輸入輸出實驗
    發(fā)表于 01-24 06:24

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

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

    MCU通用輸入輸出端口(GPIO)輸出模式

    對于常規(guī)MCU,通用輸入輸出GPIO)是其最基本、最常用的功能,用于實現(xiàn)最基本的數(shù)字量輸入輸出。 信號一般為:以3.3VDC為高電平的LTTL電平以5.0VDC為高電平的TTL電
    發(fā)表于 10-28 19:06 ?16次下載
    MCU通用<b class='flag-5'>輸入輸出</b>端口(<b class='flag-5'>GPIO</b>)<b class='flag-5'>輸出</b>模式

    AVR單片機 實驗一 單片機基本輸入輸出(GPIO)實驗

    AVR單片機 實驗一 單片機基本輸入輸出(GPIO)實驗1 實驗目的掌握ICCAVR 集成開發(fā)環(huán)境的使用;了解ATmega16單片
    發(fā)表于 11-14 20:36 ?17次下載
    AVR單片機     <b class='flag-5'>實驗</b>一 單片機基本<b class='flag-5'>輸入輸出</b>(<b class='flag-5'>GPIO</b>)<b class='flag-5'>實驗</b>

    二.GPIO輸入輸出及延遲函數(shù)

    一. GPIO八種模式,四種輸入,四種輸出1.GPIO輸入初始化void GPIO_Config
    發(fā)表于 11-24 20:06 ?1次下載
    二.<b class='flag-5'>GPIO</b><b class='flag-5'>輸入輸出</b>及延遲函數(shù)

    04、STM8通用輸入輸出口(GPIO)

    04、STM8通用輸入輸出口(GPIO)文章目錄04、STM8通用輸入輸出口(GPIO)1、概述2、GPIO主要功能3、I/O 的配置和使用
    發(fā)表于 11-26 15:21 ?9次下載
    04、STM8通用<b class='flag-5'>輸入輸出</b>口(<b class='flag-5'>GPIO</b>)

    STM32的8種GPIO輸入輸出模式

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

    [STM32]STM32F407系列教程之二,gpio輸入輸出實驗

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

    GPIO通用輸入輸出

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

    第二章 stm32 cubemx GPIO輸入輸出實驗以及proteus仿真

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

    STM32入門學(xué)習(xí)筆記之GPIO輸入輸出實驗(上)

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

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

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

    通用輸入輸出GPIO是什么

    GPIO代表通用輸入/輸出。它是集成電路上的一種引腳,沒有特定功能。雖然大多數(shù)引腳都有專用用途,例如向特定組件發(fā)送信號,但 GPIO 引腳的功能是可定制的,并且可以由軟件控制。 引腳模
    發(fā)表于 03-23 14:04 ?1493次閱讀
    通用<b class='flag-5'>輸入輸出</b><b class='flag-5'>GPIO</b>是什么