• LV.12 D12 GPIO实验 学习笔记


    一、GPIO简介

            GPIO(General-purpose input/output)即通用型输入输出,GPIO可以控制连接在其之上的引脚实现信号的输入和输出

    芯片的引脚与外部设备相连,从而实现与外部硬件设备的通讯、控制及信号采集等功能

    实验步骤
        1. 通过电路原理图分析LED的控制逻辑 

        2. 通过电路原理图查找LED与Exynos4412的连接关系

        3. 通过数据手册分析GPIO中哪些寄存器可以控制LED

        4. 通过程序去操控对应的寄存器完成对LED的控制
     

    二、GPIO寄存器分析

    高电平导通,低电平截止

     

     

     

     

      该实验需要输出,所以就是Output模式,GPX2CON[7] = 0x1

     输出高电平就对应位写1,输出低电平就对应位写0

    三、GPIO编程

    预处理->编译->汇编->链接

    gcc -E

    gcc -S

    gcc -c

    gcc

    链接使用的工具是ld,objcopy是对可执行文件进行转化

    .elf是Linux可执行文件的后缀

    -Ttext 0x40005000  是将程序放到内存上,保证程序可以执行。

    led-asm.s:

    1. .text
    2. _start:
    3. LED_CONFIG:
    4. LDR R2, =0x11000c40
    5. LDR R1, =0x10000000
    6. STR R1, [R2]
    7. LED_ON:
    8. LDR R2, =0x11000c44
    9. LDR R1, =0x00000080
    10. STR R1, [R2]
    11. B STOP
    12. LED_OFF:
    13. LDR R2, =0x11000c44
    14. LDR R1, =0x00000000
    15. STR R1, [R2]
    16. STOP:
    17. B STOP
    18. .end

     Makefile:

    1. TARGET = led-asm
    2. CROSS_COMPILE = arm-none-linux-gnueabi-
    3. CC = $(CROSS_COMPILE)gcc
    4. LD = $(CROSS_COMPILE)ld
    5. OBJCOPY = $(CROSS_COMPILE)objcopy
    6. all:
    7. $(CC) -c $(TARGET).s -o $(TARGET).o
    8. $(LD) $(TARGET).o -Ttext 0x40005000 -o $(TARGET).elf
    9. $(OBJCOPY) -O binary -S $(TARGET).elf $(TARGET).bin
    10. clean:
    11. rm $(TARGET).o $(TARGET).elf $(TARGET).bin

    然后通过共享文件夹吧编译好的.bin文件传给windows

     先输入loadb 0x40008000,把程序下载到0x40008000地址,然后发送Kermit协议的文件,选择led-asm.bin文件,然后输入go 0x40008000,跳转到0x40008000地址执行程序。led就会熄灭。

     四、LED实验

     写一个程序让LED2闪烁

    1. .text
    2. _start:
    3. MAIN:
    4. BL LED_CONFIG
    5. LOOP:
    6. BL LED_ON
    7. BL DELAY
    8. BL LED_OFF
    9. BL DELAY
    10. B LOOP
    11. LED_CONFIG:
    12. LDR R2, =0x11000c40
    13. LDR R1, =0x10000000
    14. STR R1, [R2]
    15. MOV PC, LR
    16. LED_ON:
    17. LDR R2, =0x11000c44
    18. LDR R1, =0x00000080
    19. STR R1, [R2]
    20. MOV PC, LR
    21. LED_OFF:
    22. LDR R2, =0x11000c44
    23. LDR R1, =0x00000000
    24. STR R1, [R2]
    25. MOV PC, LR
    26. DELAY:
    27. LDR R1, =100000000
    28. L:
    29. SUB R1, R1, #1
    30. CMP R1, #0
    31. BNE L
    32. MOV PC, LR
    33. STOP:
    34. B STOP
    35. .end

    再写一个让LED3闪烁

     

     让LED3闪烁的程序如下:

    1. .text
    2. _start:
    3. MAIN:
    4. BL LED_CONFIG
    5. LOOP:
    6. BL LED_ON
    7. BL DELAY
    8. BL LED_OFF
    9. BL DELAY
    10. B LOOP
    11. LED_CONFIG:
    12. LDR R2, =0x11000c20
    13. LDR R1, =0x00000001
    14. STR R1, [R2]
    15. MOV PC, LR
    16. LED_ON:
    17. LDR R2, =0x11000c24
    18. LDR R1, =0x00000001
    19. STR R1, [R2]
    20. MOV PC, LR
    21. LED_OFF:
    22. LDR R2, =0x11000c24
    23. LDR R1, =0x00000000
    24. STR R1, [R2]
    25. MOV PC, LR
    26. DELAY:
    27. LDR R1, =100000000
    28. L:
    29. SUB R1, R1, #1
    30. CMP R1, #0
    31. BNE L
    32. MOV PC, LR
    33. STOP:
    34. B STOP
    35. .end

  • 相关阅读:
    网站加密和混淆技术简介
    【蓝桥杯选拔赛真题30】python计算倒数和 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析
    php 开发微信 h5 支付 APIv3 接入超详细流程
    华为OD机试真题-任务最优调度-2023年OD统一考试(B卷)
    如何理解BFC
    Git命令入门
    java-php-net-python-论坛网站计算机毕业设计程序
    mindrecord.md 无法运行并报错D:\jenkins\age
    微店关键词取商品列表API接口(item_search-根据关键词取商品列表API接口),微店API接口
    A-Level Business Studies 真题及解析(1)
  • 原文地址:https://blog.csdn.net/djjyy/article/details/134094498