博客
关于我
ARM:嵌入式系统之LED裸板驱动
阅读量:723 次
发布时间:2019-03-21

本文共 1102 字,大约阅读时间需要 3 分钟。

GPIO编程之LED裸板驱动

开始

###illos液面驱动实验

本次实验的目标是学习GPIO编程并掌握LED裸板驱动的原理。通过实验,我们将通过UBOOT命令和C语言编程实现LED灯的驱动控制。

.GPIO是什么?

GPIO,全称为General-Purpose Input/Output(通用输入输出端口),是ARM架构中的核心 peripheral。每个GPIO引脚都可作为输入或输出端口,支持多种模式,包括高阻态、低阻态、低电平检测等。

实验内容

实验目的

掌握GPIO编程方法,并理解LED驱动的工作原理。

实验题目

  • 使用UBOOT命令通过内存写入(mw)实现点亮实验板的一个LED灯。
  • 编写C程序实现对实验板上的4个LED灯轮流点亮。
  • 编写汇编程序实现与第2题相同的功能。
  • 实验步骤

    第一题:通过UBOOT实现点亮一个LED灯

  • 在终端中启动Kermit并进入UBOOT环境。
  • 执行命令:mw 0xe0200280 0x1 将第一个LED灯点亮。
  • 其他命令可参考以下内容:
    • 点亮前两个LED灯:mw 0xe0200280 0x11
    • 点亮前三个LED灯:mw 0x02200280 0x111
    • 点亮四个LED灯:mw 0xe0200280 0x1111
  • 第二题:编写C程序实现LED轮流点亮

  • 需要了解实验板的硬件布局,发现LED位于GPJ2引脚(GPJ2_0~3)。
  • 通过查看CPU手册,获取到相关寄存器地址0xe0200280,对该寄存器进行操作。
  • 在C语言程序中使用oe位配置GPIO引脚为输出,并通过设置对应位使LED点亮。
  • 编写程序2c.c,实现四个LED按顺序点亮。
  • // Declare I/O portsvolatile unsigned char gpj2con = 0x00;// Set GPJ2CON(0xe0200280) to 0x1111 for outputgpj2con = 0xe0200280 + 0x1111;int main() {    // Perform LED sequence control    //具体实现要根据硬件和控制逻辑进行编码    return 0;}

    第三题:编写汇编程序实现同样的功能

  • 与C程序逻辑相同,直接编写汇编代码配置GPIO输出。
  • 使用LDNOP指令实现每个LED的控制逻辑。
  • 实验结果展示

    通过以上步骤,成功实现了LED灯的点亮控制,并且完成了四个LED的轮流驱动。

    总结

    实验过程中需要反复查阅手册和硬件设计文档,搞清楚每个控制位的作用和具体实现方法。对于新手来说,GPIO编程可能需要较多的尝试和调试才能掌握。

    转载地址:http://uozgz.baihongyu.com/

    你可能感兴趣的文章
    mysql数据碎片整理
    查看>>
    MySQL数据类型
    查看>>
    MySQL数据读写分离(MaxScale)上干货!!!
    查看>>
    mysql整库导入、导出
    查看>>
    Mysql新建用户和数据库并授权
    查看>>
    mysql日志文件
    查看>>
    MySQL日期时间函数大全
    查看>>
    mysql更新一个表里的字段等于另一个表某字段的值
    查看>>
    Mysql更新时间列只改日期为指定日期不更改时间
    查看>>
    MySQL更新锁(for update)摘要
    查看>>
    MySQL有哪些锁
    查看>>
    MySQL服务器安装(Linux)
    查看>>
    mysql服务器查询慢原因分析方法
    查看>>
    mysql服务无法启动的问题
    查看>>
    MySQL杂谈
    查看>>
    mysql权限
    查看>>
    mysql条件查询
    查看>>
    MySQL架构与SQL的执行流程_1
    查看>>
    MySQL架构与SQL的执行流程_2
    查看>>
    MySQL架构介绍
    查看>>