0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式技术之GPIO控制LED工作原理

454398 来源:博客园 作者:wanglinwei 2020-09-24 10:59 次阅读

基本概念:

1.GPIO--通用IO口,通过芯片针脚来控制或读取外设的数据。

2.GPIO口的使用原理,通过设置GPXXCON, GPXXDAT, GPXXPUL等寄存器来设置GPIO口的状态。

原理图:

跟硬件相关的部分,一定要阅读原理图,然后通过查找SoC的用户手册来查找相应的寄存器设置即可。

底板电路图:

核心板电路图:

可知在OK6410上4个LED灯是通过GPM这一组的GPIO口控制的,分别是GPM0-GPM3四组。

然后打开S3C6410X User's Manual,查找GPM相关的寄存器:

通过上面内容找到:

GPMCON 地址 0x7F008820

GPMDAT 地址 0x7F008824

由于LED连接着GPM0-GPM3,所以通过上面的内容可以知道,GPMCON设置的值应该为0x00001111,意思是将GPM0-GPM3设置为输出,这样通过设置GPMDAT[5:0]来控制响应针脚的高低电平,使LED亮或灭。

代码:(以下代码参考了友善之臂Tiny6410的汇编代码,并非原创

汇编代码:

start.S

Makefile:

1 led.bin: start.o

 2         arm-linux-ld -Ttext 0x50008000 -o led.elf $^
 3         arm-linux-objcopy -O binary led.elf led.bin
 4         arm-linux-objdump -D led.elf > led_elf.dis
 5 %.o : %.S
 6         arm-linux-gcc -o $@ $< -c
 7 
 8 %.o : %.c
 9         arm-linux-gcc -o $@ $< -c 
10 
11 clean:
12         rm *.o *.elf *.bin *.dis  -rf

然后make,可以得到led.bin,通过tftp下载到开发板中:

然后就可以看到OK6410板上的四个LED灯开始一起闪烁。

总结:

1.GPIO口的使用其实是SoC外设控制中最简单的,只要抓住GPIO的几个寄存器,将他们的值设置正确,就可以完成相应的控制功能。

2.一定要学会查看SoC的User's Manual的方法,这样当SoC换成其他品牌时,可以以不变应万变。

3.使用ld来链接.o文件时,一般会指定-Ttext选项,表示该代码会在内存的哪个地址加载,通过查看User's Manual,你可以决定这个地址的范围,如下图,0x50000000-0x6FFFFFFF地址区间映射到DRAM上,所以绝大部分的资料中,S3C6410中的内存地址都是0x5xxxxxxx类似的地址。也有一些0xcxxxxxxx类似的地址,这是打开SoC中的MMU后进行物理地址和虚拟地址映射后的结果,如果打开了MMU,就可以使用0xcxxxxxxx这样的地址,否则无法使用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led灯
    +关注

    关注

    22

    文章

    1592

    浏览量

    108150
  • 嵌入式技术
    +关注

    关注

    10

    文章

    360

    浏览量

    36250
  • GPIO
    +关注

    关注

    16

    文章

    1213

    浏览量

    52184
收藏 人收藏

    评论

    相关推荐

    GPIO嵌入式系统中的作用

    在现代电子系统中,嵌入式系统因其小型化、低成本和高效率而变得越来越流行。这些系统广泛应用于从简单的家用电器到复杂的工业自动化设备。在这些系统中,GPIO(通用输入/输出)接口是连接微控制器与外部世界
    的头像 发表于 01-09 09:45 76次阅读

    为什么嵌入式驱动开发工程师可以拿高薪?

    。 为什么嵌入式驱动开发工程师可以拿高薪? 嵌入式驱动开发工程师属于技术密集型工作,不仅需要深入了解硬件的工作原理,还需掌握各种编程语言
    发表于 01-07 16:56

    嵌入式好找工作吗?

    功能稳定且智能化运行,再到工业领域里的自动化生产线,靠嵌入式设备精准控制生产流程,还有医疗设备中那些辅助诊断、精准治疗的仪器等。可以说,它横跨了消费电子、汽车、工业、医疗等众多行业,行业覆盖面如此广
    发表于 12-16 15:43

    新手怎么学嵌入式?

    的基础上增加了面向对象编程的特性,有助于编写更复杂的嵌入式程序。 3. 学习硬件知识 嵌入式技术与硬件紧密相关,因此你需要了解一些基本的硬件知识。比如微控制器(MCU)、微处理器(
    发表于 12-12 10:51

    什么是嵌入式人工智能

    嵌入式人工智能是指将人工智能技术应用于嵌入式系统中的一种技术嵌入式系统是嵌入到其他设备或系统中
    的头像 发表于 12-11 09:23 343次阅读
    什么是<b class='flag-5'>嵌入式</b>人工智能

    嵌入式主板是什么意思?嵌入式主板全面解析

    嵌入式主板,通常被称为嵌入式系统的核心组件,是一种用于控制和数据处理的计算机硬件,其设计旨在嵌入特定设备中执行专门任务。嵌入式主板如同是设备
    的头像 发表于 09-30 10:05 608次阅读

    嵌入式linux开发板芯片的工作原理

    嵌入式Linux开发板是一种基于Linux操作系统的嵌入式系统开发平台,它广泛应用于工业控制、智能家居、智能交通、医疗设备等领域。 嵌入式Linux开发板概述
    的头像 发表于 09-02 09:07 418次阅读

    适合初学者的嵌入式项目有哪些?

    输出引脚(GPIO)来控制LED灯的状态。通过编写简单的C语言代码,你可以实现LED灯的各种控制效果,如呼吸灯、流水灯、彩虹灯等。这个项目可
    发表于 07-11 10:23

    嵌入式系统怎么学?

    嵌入式系统之间或与外部设备的数据通信。 7、传感器和执行器:了解各种传感器(如温度传感器、加速度传感器等)和执行器(如电机、舵机等)的工作原理和接口方式,以实现对外部环境的感知和控制。 8、
    发表于 07-02 10:10

    如何提升嵌入式编程能力?

    /C++:大多数嵌入式系统使用C或C++编程语言,因此深入学习这两种语言是非常重要的。 8. 理解操作系统:学习嵌入式操作系统(如FreeRTOS, VxWorks, Zephyr等)的工作原理
    发表于 06-21 10:01

    嵌入式系统软硬件基础知识大全

    嵌入式系统是现代科技发展的一个重要分支,广泛应用于工业控制、消费电子、医疗设备、汽车电子等领域。本文试图全面解析嵌入式系统的软基础知识,以期让读者对这一技术有更深入的了解。
    发表于 05-09 14:12

    如何成为一名嵌入式C语言高手?

    的特性和工作原理对于嵌入式C语言编程至关重要。你应该学习如何与外设进行交互、如何配置寄存器和控制器等。阅读相关设备的数据手册和技术文档,参加硬件相关的课程,可以帮助你更好地理解
    发表于 04-07 16:03

    如何成为一名嵌入式C语言高手?

    的特性和工作原理对于嵌入式C语言编程至关重要。你应该学习如何与外设进行交互、如何配置寄存器和控制器等。阅读相关设备的数据手册和技术文档,参加硬件相关的课程,可以帮助你更好地理解
    发表于 03-25 14:12

    嵌入式fpga是什么意思

    嵌入式FPGA是指将FPGA技术集成到嵌入式系统中的一种解决方案。嵌入式系统是一种为特定应用而设计的计算机系统,它通常包括处理器、内存、外设接口等组件,并且被
    的头像 发表于 03-15 14:29 1295次阅读

    嵌入式工程师需要掌握哪些技术?

    嵌入式工程师需要掌握哪些技术? 嵌入式系统是当今科技领域中的重要组成部分,它们存在于我们生活的方方面面,从智能手机到汽车控制系统,从家电到医疗设备。因此,对于那些想要进入
    发表于 03-04 16:38