基于我原先有STM32等单片机的基础,内容是结合我所新学习到的知识进行书写,所以基础知识可能不会涉及到请见谅。

一、LED点亮

我们直接通过C程序对寄存器进行操作(汇编语言使用尽量少),通过原理图可看出开发板上的LED对应的GPIO口为GPF4、5、6,所以这里首先以GPF4对应的LED进行点亮,从芯片手册寻找GPF4对应的寄存器(I/O port 章节),就可以看到S3C2440芯片控制IO口对应的寄存器为下图所示:

GPIO寄存器

然后就是和单片机操作一样,对他进行一一设置,对于LED的电量只要利用GPFCON和GPFDAT寄存器这两就行,

1. 首先对GPFCON进行设置,查找GPFCON表找到GPF4,如下所示:

很简单,我们的IO口只是要做输出,所以我们设置为01=output:

GPFCON &= ~(3 << 8); // 初始化 00
GPFCON |= (1 << 8);  // 设置GPF4的GPFCON寄存器 01 输出

其中GPFCON为宏定义,代表GPFCON的地址,以及其他寄存器的定义类似如下所示

#defind    GPFCON    *(volatile unsigned int *)(0x56000050)

2、接着设置GPFDAT,由于我们使用的是输出引脚,所以对应的位应该置1,这从芯片手册上简介就可以看出

不做过多的解释,看就行了,然后配置他

GPFDAT &= ~(7 << 4);
GPFDAT |= (6 << 4);   // GPF4对应的位  置0

最后来看下LED点亮的main程序

#define    GPFCON    *(volatile unsigned int *)(0x56000050)
#define    GPFDAT    *(volatile unsigned int *)(0x56000054)int main(void)
{GPFCON &= ~(3 << 8); // 初始化 00GPFCON |= (1 << 8);  // 设置GPF4的GPFCON寄存器 01 输出GPFDAT &= ~(7 << 4);  // 全部IO口初始化不输出GPFDAT |= (6 << 4);   // GPF4对应的位  置1return 0;
}

然后配套上章节中的Strat.S文件,在程序的结尾上引用该main函数就可以实现LED的点亮了

二、LED流水灯

在单片机中的流水灯是通过delay函数(在函数中疯狂循环)。所以通过小小的改动即可实现流水灯操作


#include "s3c2440_soc.h"void my_delay(volatile int d)
{while(d--);
}int main(void)
{uart0_init();int val    =0x0001;GPFCON &= ~((3 << 8) | (3 << 10) | (3 << 12));GPFCON |= ((1 << 8) | (1 << 10) | (1 << 12));while(1){GPFDAT &= ~(7 << 4);GPFDAT |= (val << 4);val = val << 1;if(val == 0x8)val = 0x0001;my_delay(300000);}return 0;
}

烧入程序运行现象为两个灯轮流闪烁。可以动手试试改为单个灯闪烁。太晚了在这里我就不试了。

S3C2440 开发板实战(3):编译概念 + LED点亮闪烁相关推荐

  1. STM32F103C8T6基础开发教程(HAL库)—LED灯1S周期闪烁

    STM32F103C8T6基础开发教程目录 STM32F103C8T6基础开发教程(HAL库)-开发环境配置 STM32F103C8T6基础开发教程(HAL库)-Keil添加注释的快捷键 STM32F ...

  2. linux串口驱动ioremap,S3C2440开发板LED驱动——ioremap 映射

    刚开始学字符设备驱动,感觉最难的是驱动和底层硬件的连接.linux上的驱动程序,是基于操作系统之上的,他并不直接和底层的硬件打交道,但是我们写的驱动必须能使硬件"跑"起来,即与硬件 ...

  3. S3C2440 开发板实战(8):中断驱动

    中断驱动 一.查询方式 1.驱动程序 2.应用程序 3.结果测试 二.中断方式 1.中断内部函数实现方式(理论框架) 1.1. 异常处理结构 (1)设置异常向量表 (2)异常服务函数调用 1.2. 中 ...

  4. 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON3 LED流水灯

    LED流水灯例程讲解 若要观看该博客配套的视频教程,可点击此链接 开发板实物图 图1.FPGA设计流程 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去 ...

  5. 【微信小程序控制硬件16 】 安信可 ESP32-S 开发板实现移植腾讯物联开发平台蓝牙 llsync 协议,实现一键蓝牙快速配网+远程控制。(附带源码)

    文章目录 一.前言 二.源码目录说明 三.编译指导 四.常见问题 五.开源微信物联网控制一览表 另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈! 微信物联 ...

  6. linux开发板led怎么亮,TQ2440开发板上实现按键点亮LED(转载)

    //声明:该文章是在网上搜到的,对作者表示感谢. 文章记录了作者在TQ2440开发板上实现按键点亮LED驱动开发的详细过程,还记录了一些容易出现的错误,以及怎么解决这些错误. 一.驱动开发流程 二.驱 ...

  7. 【Verilog】基于Nexys4DDR开发板实现数字钟

    功能: 基于Nexys4DDR开发板实现的数字钟,六位数码管显示时分秒,可切换24时制/12时制,有整点报时功能(led灯闪烁). Verilog代码: `timescale 1ns / 1ps//数 ...

  8. 移植根文件系统到linux内核 s3c2440,u-boot-2011.06在基于s3c2440开发板的移植之引导内核与加载根文件系统...

    三.根文件系统的制作 我们利用busybox来制作根文件系统 1.在下列网站下载busybox-1.15.0.tar.bz2 在当前目录下解压busybox tar -jxvf busybox-1.1 ...

  9. Leap Motion 之Unity 开发指南(一. 基本概念与制作手预制件)

    LeapMotion 之Unity开发指南(一.基本概念和手的预制件) [序言] 最近用Leap Motion + 国产的3Glass眼镜构建了房地产.数字矿山的一些应用,感觉这是很经济的一个VR架构 ...

最新文章

  1. HashMap 和 Hashtable 的 6 个区别,最后一个没几个人知道!
  2. prototype 1.5 中文说明.doc
  3. TypeError: atlas.getSpriteFrame is not a function
  4. 实验 4 [bx]和 loop 的使用
  5. phalcon: 缓存片段,文件缓存,memcache缓存
  6. php事务 面向对象,PHP面向对象之事务脚本模式(详解)
  7. [canvas基础]pcmobile写字板
  8. 沉寂了多年金价为何会连续上涨 专家指出真正原因
  9. login RPi via serial port
  10. 表上作业法-运输问题(Java)
  11. itextpdf table使用
  12. 不同时区时间换算_java中转换不同时区的时间
  13. 毕业设计开题分析:MIPS指令集硬件化设计与实现
  14. 孤单终结者:神棍节十大“脱光”应用
  15. 关于 360 度评估
  16. Python实现聊天机器人
  17. 外包,你是外包不是正式员工,麻烦不要随便吃公司零食
  18. 教你Zbrush 4R7增强光滑笔刷强度方法
  19. 分析谁是2020欧洲杯的最佳球员
  20. MPEG音频编码 基本原理和C语言代码分析

热门文章

  1. MySQL源代码的海洋中游弋 初探MySQL之SQL执行过程 [转]
  2. C51——简单的防盗报警器
  3. UVa 1616 商队抢劫者(Caravan Robbers)
  4. 1、关于douyin 小红书等平台 人均985 211的想法
  5. javascript英语单词音节拆分_拆分音节拼读法解析
  6. bcs转10 c语言,ARM汇编转C语言 - ARM技术论坛-ARM嵌入式论坛-人气最火爆ARM学习论坛 - 21ic电子技术开发论坛...
  7. Spark核心编程系列(一)——RDD详解
  8. celeste mod如何安装
  9. 基于铂电阻测温电路的设计
  10. 互联网安全初创企业Cylance获 1 亿美元融资