娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

GPIO接口及點亮第一個LED燈

發布者:CelestialMagic最新更新時間:2024-12-03 來源: cnblogs關鍵字:GPIO接口  點亮  LED燈 手機看文章 掃描二維碼
隨時隨地手機看文章

一、GIPIO介紹

General Purpose Input Output (通用輸入/輸出)簡稱為GPIO,或總線擴展器,人們利用工業標準I2C、SMBus或SPI接口簡化了I/O口的擴展。當微控制器或芯片組沒有足夠的I/O端口,或當系統需要采用遠端串行通信或控制時,GPIO產品能夠提供額外的控制和監視功能。

1.GPIO的優點
  • 低功耗:GPIO具有更低的功率損耗(大約1μA,μC的工作電流則為100μA)。

  • 集成IIC從機接口:GPIO內置IIC從機接口,即使在待機模式下也能夠全速工作。

  • 小封裝:GPIO器件提供最小的封裝尺寸 ― 3mm x 3mm QFN!

  • 低成本:您不用為沒有使用的功能買單。

  • 快速上市:不需要編寫額外的代碼、文檔,不需要任何維護工作。

  • 可預先確定響應時間:縮短或確定外部事件與中斷之間的響應時間。

2.GPIO的寄存器
    • GPxCON 寄存器
      用于配置引腳功能。 PORT A 與 PORT B~PORT H/J 在功能選擇上有所不同,GPACON 中每一位對應一根引腳,共 23 個引腳。當某位被設為 0 時候,相應引腳為 輸出引腳。此時我們可以在GPADAT 中相應的寫入 1或者 0 來讓此引腳輸出高電平或者低電平;當某位被設為1時,相應引腳為地址線或用于地址控制,此時GPADATA無用。
      一般而言 GPACON 通常被設為 1 ,以便訪問外部器件。
      PORT B~PORT H/J在寄存器操作方面完全相同,GPxCON 中每兩位控制一根引腳,

      • 00 輸入

      • 01 輸出

      • 10 特殊功能

      • 11 保留不用

    • GPxDAT 寄存器
      GPxDAT用于讀寫引腳,當引腳被設為輸入時候,讀此寄存器可知道相應引腳的電平狀態高還是低,當引腳被設為輸出時候,寫此寄存器的位,可令引腳輸出高電平還是低電平。

    • GPxUP寄存器
      GPxUP寄存器某位為1時,相應管腳沒有內部上拉電阻;為 0 時候 相應管腳有內部上拉電阻。
      上拉電阻作用在于,當GPIO 引腳處于第三種狀態時候,既不是輸出高電平,也不是輸出低電平。而是呈現高阻態,相當于沒有接芯片。它的電平狀態由上下拉電阻決定。

二、控制LED實例

1.查看硬件原理圖

2.查看數據手冊
  • 在三星公司提供的DataSheet手冊中找到介紹GPIO的章節

3.確定關鍵定義
    • GPJ0CON寄存器
      寄存器地址:0xE0200240
      要控制的位數:[15:12]
      要設置的二進制數據:0b0001

    • GPJ0PUD寄存器
      寄存器地址:0xE0200248
      要控制的位數:[7:6]
      要設置的二進制數據:0b00

    • GPJ0DAT寄存器
      寄存器地址:0xE0200244
      要控制的位數:[3]
      要設置的二進制數據:0b1


3.確定關鍵定義

GPJ0CON寄存器

寄存器地址:0xE0200240

要控制的位數:[15:12]

要設置的二進制數據:0b0001

GPJ0PUD寄存器

寄存器地址:0xE0200248

要控制的位數:[7:6]

要設置的二進制數據:0b00

GPJ0DAT寄存器

寄存器地址:0xE0200244

要控制的位數:[3]

要設置的二進制數據:0b1

4.編寫程序


start:

    @;配置GPJ0CON寄存器 Address=0xE0200240 [15:12]=0b0001

    ldr r0,=0xE0200240

    ldr r1,=0x1000

    str r1,[r0]


    @;配置GPJ0PUD寄存器 Address=0xE0200248 [7:6]=0b00

    ldr r0,=0xE0200248

    ldr r1,=0x0

    str r1,[r0]


    @;配置GPJ0DAT寄存器 Address=0xE0200244 [3]=1

    ldr r0,=0xE0200244

    ldr r1,=0x4

    str r1,[r0]


5.實例測試

生成目標文件

arm-linux-gcc -c led.S


生成可執行文件

arm-linux-gcc -Ttext 0x34000000 -nostartfiles -nostdlib led.o -o led


生成獨立執行的二進制

arm-linux-objcopy -O binary led led.bin


使用tftp命令下載

tftp 0x34000000 led.bin


使用go命令執行

go 0x34000000


6.簡單的流水燈實現


.global _start

_start:

    ldr r0, =0x11111111

    ldr r1, =0xE0200240

    str r0, [r1]

    

    ldr r0, =0x11111111

    ldr r1, =0xE02000A0

    str r0, [r1]

 

flash:    

    ldr r0, =(1<<1)

    ldr r1, =0xE02000A4

    str r0, [r1]


    ldr r0, =~(1<<3)

    ldr r1, =0xE0200244

    str r0, [r1]

    bl delay

    

    ldr r0, =~(1<<4)

    ldr r1, =0xE0200244

    str r0, [r1]    

    bl delay

    

    ldr r0, =~(1<<5)

    ldr r1, =0xE0200244

    str r0, [r1]

    bl delay

    

    ldr r0, =~(1<<1)

    ldr r1, =0xE02000A4

    str r0, [r1]

    bl delay

    

    b flash

    

    

delay:

    ldr r2, =100000000

    ldr r3, =0x0

delay_loop:

    sub r2, r2, #1

    cmp r2, r3

    bne delay_loop

                    

    mov pc, lr    


關鍵字:GPIO接口  點亮  LED燈 引用地址:GPIO接口及點亮第一個LED燈

上一篇:ARM處理器尋址方式
下一篇:S5PV210啟動過程詳解

推薦閱讀最新更新時間:2025-05-23 21:38

MSP430F5529LP按鍵點亮LED燈
代碼 #include msp430.h void Key11_GPIO_Init(); void Key21_GPIO_Init(); void LED_Init(); void main(void) { WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer Key11_GPIO_Init(); //按鍵1.1初始化 Key21_GPIO_Init(); //按鍵2.1初始化 LED_Init(); //LED初始化 _enable_interrupts(); //使能中斷 while(1) { } return 0; } voi
[單片機]
STM32第一次學習——使用庫函數點亮LED燈
使用庫函數點亮LED燈 led.h #ifndef _LED_H #define _LED_H #include stm32f10x.h #define LED_PORT_RCC RCC_APB2Periph_GPIOC #define LED_PIN GPIO_Pin_0 #define LED_PORT GPIOC void LED_Init(void); #endif led.c #include led.h void LED_Init() { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_G
[單片機]
STM32用寄存器點亮LED燈
寄存器:實際上就是cpu里面的東西 每個單元都有不一樣的功能,根據功能給這些存儲單位取別名,這個別名就是我們所說的寄存器。 寄存器的映射:給寄存器分配地址的過程就叫作寄存器的映射。 新建工程: 新建工程需要手動創建main.c .h(頭文件)頭文件:寄存器的映射 如何寫寄存器的映射: 首先找到需要控制外設的IO口,根據這個IO口去寄存器組織架構尋找需要控制外設的IO口在哪里基地址是什么,然后再看需要控制外設的IO口的偏移地址。該IO口的地址就是基地址+偏移地址 **端口的地址在編譯器看來只是個地址所以必須強制轉換成指針(*unsigned int)+地址 通過控制io口的高低電平去實現我們想要的功能(通用io口(GPIO))
[單片機]
STM32用寄存器<font color='red'>點亮</font><font color='red'>LED燈</font>
(C51學習一)如何點亮led燈
1.找出C51最小系統原理圖 在網上買的開發板,一定有光碟的,光碟中一定有原理圖,先找出最小系統原理圖,這個原理圖標明了CPU的 I/O接口都接什么了。并且給I/O口都標上號 2.找出LED模塊原理圖 由下圖可以看到,P1組I/O口的8個接口分別接著一個LED燈,并且當P1上的某個口為低電平時,LED就會亮。 3.進行編程 #include sbit LED0=P1^0; // 用自己寫的標志 LED0 表示 I/O口 P1^0 sbit LED1=P1^1; void main() { LED0 = 0; //P1^0口給低電平 LED1 = 0; //P1^1口給低電平 while(1
[單片機]
(C51學習一)如何<font color='red'>點亮</font><font color='red'>led燈</font>
MSP430FR6989系列教程 -- 第一章 點亮LED
1,MSP430FR6989的概述 高達 16MHz 的 16 位 RISC 架構 優化的超低功耗模式 高達128KB的FRAM 五個16位定時器,7個捕捉/比較 日歷和鬧鐘功能的 RTC 16位和32位CRC校驗(CRC16、CRC32) 16個外部通道的12位ADC 集成 LCD 驅動器 增強型串行通信(UART、IIC、SPI) 靈活的時鐘系統(DCO、VLO、LFXT、HFXT) AES安全加密、ESI等等 2,基本運算符的回顧 對于寄存器的操作,大部分就是 &、|、~的操作,這里我們簡單回顧一下。 與 & :與 相當于“乘”,任何數乘以0,都等于0,只有1與1才是1 與
[單片機]
MSP430FR6989系列教程 -- 第一章 <font color='red'>點亮</font>LED
51單片機-點亮LED
1.硬件連接 了解了上一講的一些元器件的使用原理,那么使用本教程的開發板點亮最右端的LED2的硬件連接簡化為如下所示 2.軟件分析 我們知道74HC138要想正常工作,單片機的P1.4要輸出0,P1.3輸出1。接著要想三極管導通,IO6需要輸出低電平,也就是P1.2必須輸出1,P1.1輸出1, P1.0輸出0。 有了這些條件之后,要想點亮LED2還差最后一步,那就是P0.0須輸出0才可點亮。 接著我們根據宋老師的例程代碼給單片機的幾個IO端口命名一下 sbit LED2 = P0^0; sbit ADDR2 = P1^2; sbit ADDR1 = P1^1; sbit ADDR0 = P1^0; sbit E
[單片機]
51單片機-<font color='red'>點亮</font>LED
從STM32F4的庫函數分析如何實現點亮一個LED(點亮LED)(三)
使用庫函數點亮LED,不用我們自己去查看寄存器,方便我們的開發,但是庫函數是怎樣封裝的呢? int main(void) { //聲明一個結構體變量 GPIO_InitTypeDef GPIO_InitStructure; //使能GPIO外設時鐘 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); //定義一個結構體 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9 |GPIO_Pin_10;//連接LED的引腳 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT; //輸出模式
[單片機]
從STM32F4的庫函數分析如何實現<font color='red'>點亮</font>一個LED(<font color='red'>點亮</font>LED)(三)
MSP430點亮led小燈
#include msp430f149.h void delay(int x) { int i,j; for(i=x;i 0;i--) for(j=112;j 0;j--); } int main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; //WDTPW 高八位 WDTHOLD置1 關閉看門狗 //P2DIR = 0xff; P2DIR |= BIT0; while(1) { /* P2OUT = 0xaa; delay(500); P
[單片機]
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 泰州市| 平谷区| 报价| 竹北市| 台北市| 乐昌市| 余庆县| 东港市| 江川县| 河东区| 天镇县| 安龙县| 河西区| 内乡县| 岑溪市| 琼海市| 光泽县| 布拖县| 碌曲县| 南城县| 浦县| 阜康市| 图们市| 磐石市| 汤原县| 台安县| 东海县| 新沂市| 哈巴河县| 渝北区| 铅山县| 永宁县| 石柱| 海城市| 株洲县| 白银市| 韩城市| 延长县| 金塔县| 浮梁县| 来安县|