S3C2440 开发板实战(3):编译概念 + LED点亮闪烁
基于我原先有STM32等单片机的基础,内容是结合我所新学习到的知识进行书写,所以基础知识可能不会涉及到请见谅。
一、LED点亮
我们直接通过C程序对寄存器进行操作(汇编语言使用尽量少),通过原理图可看出开发板上的LED对应的GPIO口为GPF4、5、6,所以这里首先以GPF4对应的LED进行点亮,从芯片手册寻找GPF4对应的寄存器(I/O port 章节),就可以看到S3C2440芯片控制IO口对应的寄存器为下图所示:
然后就是和单片机操作一样,对他进行一一设置,对于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点亮闪烁相关推荐
- STM32F103C8T6基础开发教程(HAL库)—LED灯1S周期闪烁
STM32F103C8T6基础开发教程目录 STM32F103C8T6基础开发教程(HAL库)-开发环境配置 STM32F103C8T6基础开发教程(HAL库)-Keil添加注释的快捷键 STM32F ...
- linux串口驱动ioremap,S3C2440开发板LED驱动——ioremap 映射
刚开始学字符设备驱动,感觉最难的是驱动和底层硬件的连接.linux上的驱动程序,是基于操作系统之上的,他并不直接和底层的硬件打交道,但是我们写的驱动必须能使硬件"跑"起来,即与硬件 ...
- S3C2440 开发板实战(8):中断驱动
中断驱动 一.查询方式 1.驱动程序 2.应用程序 3.结果测试 二.中断方式 1.中断内部函数实现方式(理论框架) 1.1. 异常处理结构 (1)设置异常向量表 (2)异常服务函数调用 1.2. 中 ...
- 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON3 LED流水灯
LED流水灯例程讲解 若要观看该博客配套的视频教程,可点击此链接 开发板实物图 图1.FPGA设计流程 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去 ...
- 【微信小程序控制硬件16 】 安信可 ESP32-S 开发板实现移植腾讯物联开发平台蓝牙 llsync 协议,实现一键蓝牙快速配网+远程控制。(附带源码)
文章目录 一.前言 二.源码目录说明 三.编译指导 四.常见问题 五.开源微信物联网控制一览表 另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈! 微信物联 ...
- linux开发板led怎么亮,TQ2440开发板上实现按键点亮LED(转载)
//声明:该文章是在网上搜到的,对作者表示感谢. 文章记录了作者在TQ2440开发板上实现按键点亮LED驱动开发的详细过程,还记录了一些容易出现的错误,以及怎么解决这些错误. 一.驱动开发流程 二.驱 ...
- 【Verilog】基于Nexys4DDR开发板实现数字钟
功能: 基于Nexys4DDR开发板实现的数字钟,六位数码管显示时分秒,可切换24时制/12时制,有整点报时功能(led灯闪烁). Verilog代码: `timescale 1ns / 1ps//数 ...
- 移植根文件系统到linux内核 s3c2440,u-boot-2011.06在基于s3c2440开发板的移植之引导内核与加载根文件系统...
三.根文件系统的制作 我们利用busybox来制作根文件系统 1.在下列网站下载busybox-1.15.0.tar.bz2 在当前目录下解压busybox tar -jxvf busybox-1.1 ...
- Leap Motion 之Unity 开发指南(一. 基本概念与制作手预制件)
LeapMotion 之Unity开发指南(一.基本概念和手的预制件) [序言] 最近用Leap Motion + 国产的3Glass眼镜构建了房地产.数字矿山的一些应用,感觉这是很经济的一个VR架构 ...
最新文章
- HashMap 和 Hashtable 的 6 个区别,最后一个没几个人知道!
- prototype 1.5 中文说明.doc
- TypeError: atlas.getSpriteFrame is not a function
- 实验 4 [bx]和 loop 的使用
- phalcon: 缓存片段,文件缓存,memcache缓存
- php事务 面向对象,PHP面向对象之事务脚本模式(详解)
- [canvas基础]pcmobile写字板
- 沉寂了多年金价为何会连续上涨 专家指出真正原因
- login RPi via serial port
- 表上作业法-运输问题(Java)
- itextpdf table使用
- 不同时区时间换算_java中转换不同时区的时间
- 毕业设计开题分析:MIPS指令集硬件化设计与实现
- 孤单终结者:神棍节十大“脱光”应用
- 关于 360 度评估
- Python实现聊天机器人
- 外包,你是外包不是正式员工,麻烦不要随便吃公司零食
- 教你Zbrush 4R7增强光滑笔刷强度方法
- 分析谁是2020欧洲杯的最佳球员
- MPEG音频编码 基本原理和C语言代码分析
热门文章
- MySQL源代码的海洋中游弋 初探MySQL之SQL执行过程 [转]
- C51——简单的防盗报警器
- UVa 1616 商队抢劫者(Caravan Robbers)
- 1、关于douyin 小红书等平台 人均985 211的想法
- javascript英语单词音节拆分_拆分音节拼读法解析
- bcs转10 c语言,ARM汇编转C语言 - ARM技术论坛-ARM嵌入式论坛-人气最火爆ARM学习论坛 - 21ic电子技术开发论坛...
- Spark核心编程系列(一)——RDD详解
- celeste mod如何安装
- 基于铂电阻测温电路的设计
- 互联网安全初创企业Cylance获 1 亿美元融资