码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • GPIO实验


    解压压缩包

    ROM存放指令集

    RAM存放变量,数据

    CPU本身是不能直接控制硬件的,硬件一般是由其对应的控制器来控制,SOC中将各个硬件控制器的寄存器映射到了CPU地址空间中的一段范围,这样CPU就可以通过读写寄存器来间接控制硬件

    LED实验步骤

    实验步骤:

        1. 通过电路原理图分析LED的控制逻辑 - 高电平点亮、低电平熄灭(跟硬件和电路设计有关)

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

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

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

    LED2的熄灭

    makefile

    LED3闪烁  .s 文件

    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

    详解

    步骤1:

    找到LED3对应网络编号:

    网络编号为 CHG_FLT; 对应CPU内核引脚为GPX1_0

    步骤2:FS4412手册上寻找控制此引脚的寄存器(共四个)

    GPX1CON                       GPX1DAT          GPX1PUD               GPX1DRV

    步骤3:代码控制GPX1CON   寄存器地址 0x11000c24

    4位为一个位域,控制一个引脚,此寄存器控制8个引脚

    【3:0】设为输出 output

    机器码:0000 0000 0000 0000 0000 0000 0000 0001

    16进制 0x0000 0001

    步骤4: 配置GPX1DAT的前8位   此寄存器地址:0x11000c24

    机器码:0000 0000 0000 0000 0000 0000 0000 0001

    16进制 0x0000 0001

    附 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 0x40008000 -o $(TARGET).elf
    9. $(OBJCOPY) -O binary -S $(TARGET).elf $(TARGET).binary
    10. clean:
    11. rm $(TARGET).o $(TARGET).elf $(TARGET).binary

  • 相关阅读:
    代码随想录算法训练营第22天|235. 二叉搜索树的最近公共祖先 701. 二叉搜索树中的插入操作 450.删除二叉搜索树中的节点
    CN_计算机网络性能指标
    PlanetScale云数据库
    『GitHub Actions』部署静态博客指南
    java学习--day24(单例模式&序列化&Lambda表达式)
    只需三步,教你搭建一个进销存管理系统!
    Java语法笔记
    关于信息安全软考的一些记录1
    R语言进行相关矩阵分析及其网络可视化
    一文学会Set与Map以及集合类的使用选取,HashMap底层源码解析
  • 原文地址:https://blog.csdn.net/2302_76785838/article/details/132998095
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号