JZ2440开发板:用按键点亮LED灯(学习笔记)
本文是对韦东山嵌入式第一期学习的记录之一,如有您需要查找的信息,可以继续往下阅读。
想要用按键点亮LED灯,就需要知道按键和LED灯的相关信息,这样才可以进行之后的操作。阅读JZ2440的原理图,可以得到以下信息(见下方图片)
JZ2440开发板用到了S2,S3,S4三个按键,nLED1,nLED2,nLED4三盏LED灯,它们对应的寄存器位分别是:
按键:S2(EINT0)——GPF0 S3(EINT2)——GPF2 S4(EINT11)——GPG3
LED: nLED1——GPF4 nLED2——GPF5 nLED4——GPF6
知道这些之后,需要进一步了解相应寄存器的信息,阅读S3C2440的芯片手册,可以得到以下信息(见下方图片)
GPFCON和GPFDAT寄存器
GPGCON和GPGDAT寄存器
对于LED:需要设置GPFCON的GPF4/5/6,让它们变成输出引脚【GPFCON的bit8/9设为0b01,bit10/11设为0b01,bit12/13设为0b01】
对于按键:需要设置GPFCON的GPF0(s2键),GPF2(s3键)以及GPGCON的GPG3(s4键),让它们变成输入引脚【GPFCON的bit0/1设为0,bit4/5设为0,GPGCON的bit6/7设为0】
由于GPFCON与GPFDAT是对应的,GPGCON与GPGDAT是对应的,根据芯片手册关于GPFDAT和GPGDAT的描述(上面的图片)可知:
当端口配置为输入时,相应的位为针状态。当端口配置为输出时,引脚状态为与相应的位相同。 当端口配置为功能引脚时,将读取未定义的值。
由此可以知道:
按键的状态对应GPFDAT中位0和位2的值以及GPGDAT中位3的值,LED的状态对应GPFAT中位6/5/4的值
按键和LED一样,平时电位都处于拉高状态,对应着松开和熄灭(也就是1),当按键按下时,或者LED点亮时,对应着低电位(也就是0)
因此,GPFDAT寄存器和GPGDAT寄存器也需要进行相关的设置(程序中体现)。
接下来仅对C程序进行解析:
#include "s3c2440_soc.h" //写好了寄存器地址的宏,C程序中直接写寄存器名称即可
int main(void)
{
int val1,val2;
/*设置GPFCON的GPF4/5/6,让它们变成输出引脚*/
GPFCON &=~((<<)|(<<)|(<<)); //先让GPFCON的GPF4/5/6清零
GPFCON |=((<<)|(<<)|(<<)); //配置好GPFCON的GPF4/5/6,让它们变成输出引脚 /*设置GPFCON的GPF0(s2键),GPF2(s3键)以及GPGCON的GPG3(s4键),让它们变成输入引脚*/
GPFCON &=~((<<)|(<<));
GPGCON &=~(<<); /*按下点亮*/
while()
{
val1=GPFDAT;
val2=GPGDAT;
if(val1 & (<<)) //判断S2键是否按下,对应GPF6的LED灯
{
GPFDAT |=(<<); //此时S2键为松开,LED应该熄灭
}
else
{
GPFDAT &=~(<<); //此时S2键为按下,LED应该点亮
}
if(val1 & (<<)) //判断S3键是否按下,对应GPF5的LED灯
{
GPFDAT |=(<<); //此时S3键为松开,LED应该熄灭
}
else
{
GPFDAT &=~(<<); //此时S3键为按下,LED应该点亮
}
if(val2 & (<<)) //判断S4键是否按下,对应GPF4的LED灯
{
GPFDAT |=(<<); //此时S4键为松开,LED应该熄灭
}
else
{
GPFDAT &=~(<<); //此时S4键为按下,LED应该点亮
}
}
return ;
}
整个C程序到此就写完了,连同其他文件(start.S / s3c2440_soc.h / makefile 本文没有附上)一起上传到linux编译后,得到的bin文件,烧写到JZ2440开发板上,经过验证,按键按下时,对应的LED亮,松开时熄灭。
JZ2440开发板:用按键点亮LED灯(学习笔记)的更多相关文章
- NodeMCU手把手入门:配置NodeMCU ESP8266开发板环境及点亮LED灯
之前一直在玩树莓派,最近实验室买了些NodeMCU就想着玩一玩,没想到挺有意思的.其实树莓派能实现的功能,它大部分也可以,价格比派也便宜不少,舍不得买派的同学可以先买这个开发板玩一玩. 本文主要介绍了 ...
- JZ2440裸机点亮LED【学习笔记】
平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 说明:韦东山一期视频学习笔记 一.我们首先来做第一个实验,用汇编语言点亮板子上的LED. 1.1 LED的原理图 从下面的原理图可知LED1是 ...
- JZ2440开发板:修改ARM芯片时钟(学习笔记)
想要修改ARM芯片的时钟,需要去查询芯片手册和原理图,获取相关的信息(见下方图片) 首先来看时钟的结构图 根据结构图可以看出,时钟源有两种选择:1. XTIpll和XTOpll所连接的晶振 2. EX ...
- JZ2440开发笔记(5)——通过按键点亮LED
在JZ2440中,点亮LED就是给LED的控制位设置为输出,数据位设置为低电平,而通过按键点亮LED,就需要将按键对应的控制位设置为输出. 下面是JZ2440的3个LED电路图: 下面是JZ2440的 ...
- Linux学习 :移植U-boot_2016.09到JZ2440开发板
一.下载源码:ftp://ftp.denx.de/pub/u-boot/ 二.初始化编译: ①新建一个单板: cd board/samsung/ cp smdk2410 smdk2440 -rf ...
- Linux学习 :移植U-boot_2012.04.01到JZ2440开发板
一.下载U-boot源码:ftp://ftp.denx.de/pub/u-boot/ 二.uboot的启动过程: 部分硬件初始化——>加载完整uboot到RAM——>跳转到第二阶段入口开始 ...
- JZ2440开发板:UART(串口)使用(学习笔记)
查看UART在硬件上的信息,阅读JZ2440原理图可以看到: JZ2440开发板的UART0是可以跟USB相接的,用于打印调试,UART1,UART2两个串口用来外接模块.所以本文仅对UART0进行操 ...
- 基于JZ2440开发板编写bootloader总结(一)
凡走过必留下痕迹,学点什么都会有用的. 本系列博文总结了自己在学习嵌入式Linux编程过程中的收获,若有错误,恳请指正,谢谢! --参考教材韦东山系列教材 bootloader 是一个用于启动linu ...
- Jz2440开发板熟悉
title: Jz2440开发板熟悉 tags: ARM date: 2018-10-14 15:05:56 --- 概述 外部晶振为12M Nand Flash 256M,Nor Flash 2M, ...
随机推荐
- 架设Git服务器
架设Git服务器项目 Git Candy:http://github.com/Aimeast/GitCandy/ AE大神的作品, Git Candy© 是一个基于ASP.NET MVC的Git分布式 ...
- 基于腾讯云centos简单搭建VSFTP
基于腾讯云centos7.3搭建VSFTP 环境分析: 基于vsftp服务在于云主机上,所以推荐使用FTP的PASV模式: FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动 ...
- iostat -x命令诊断
-x 参数iostat还有一个比较常用的选项-x,该选项将用于显示和io相关的扩展数据. iostat -d -x -k 1 10Device: rrqm/s wrqm/s r/s w/ ...
- 移动端适配插件(flexible.js)
;(function(win, lib) { var doc = win.document; var docEl = doc.documentElement; var metaEl = doc.que ...
- 实用技巧:利用Excel实现客户档案的统一管理
背景: 一个朋友新开了家门市,生意不错,客源旺盛. 有次我们喝茶时,他透露一个问题,就是客户的档案管理很不理想,都是纸面的,很容易丢失,也不方便查找. 我自诩混迹IT界多年,当然要替好友解决这个小麻烦 ...
- ResNet 修改
https://github.com/tornadomeet/ResNet apache 开源项目 修改如下: 训练模块 import argparse,logging,os import mxnet ...
- 原生JS写验证码
1.先创建一个一个输入框用来用户输入验证码和一个span容器用来存放系统给出的验证码和一个刷新按钮还有一个登录按钮 <input type="text" class=&quo ...
- jpa的修改更新操作
***指定id的保存就等于修改!!! save 指定id直接调用save()
- supervisord常见问题
第一种: 你在没有修改配置文件之前就已经启动:~supervisord -c supervisord.conf 然后又去修改配置文件,想重新读取一下但是却出现了以下报错: Another progra ...
- idea教程视频以及常用插件整理
最近在同事的强烈安利下把eclipse换成idea了,本以为需要经历一个艰难的过渡期,谁知道不到3天就深感回不去了. 哎,只能说有时候人的惰性是多么可怕! idea实在是太太太强大了. 不要再问原因. ...