博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tiny4412裸机程序,按键检测
阅读量:6424 次
发布时间:2019-06-23

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

hot3.png

一、控制原理说明

先看一下原理图:

202006_vjcW_2888084.png

首先把按键对应的GPIO设置为输入模式,修改GPX3CON寄存器(板子不同,可能对应的GPIO管脚不同),通过上图可知当没有按下按键时,对应的GPIO状态为高电平,当有按键被按下时,对应的GPIO变为低,我们在程序一直检测这几个GPIO状态即可。

二、程序说明

其中Start.s文件同上一个实验完全相同;链接脚本key.lds的内容和led.lds完全相同,只把名字改了改;Makefile的内容也大部分一样,也只是改了改里边文件的名字,key.c的文件需要重新编写,代码如下:

/** 程序说明* 一上电,4个LED全亮,当某个按键被按下,则对应的LED熄灭(可同时按下多个键)* 对应关系:KEY1-LED1,KEY2-LED2,KEY3-LED3,KEY4-LED4*///按键对应的GPIO#define GPX3CON (*(volatile unsigned int *)0x11000C60)#define GPX3DAT (*(volatile unsigned int *)0x11000C64) //LED对应的GPIO#define GPM4CON (*(volatile unsigned int *)0x110002E0)#define GPM4DAT (*(volatile unsigned int *)0x110002E4) void delay(volatile int time){	for(; time > 0; time-- );} int main(void){	unsigned long tmp = 0;	unsigned char keyValue = 0;	/*	* GPX3_2-GPX3_5 设置为输入功能,用于检测按键引脚的状态	*/	tmp = GPX3CON;	tmp &= ~(0xffff << 8);	GPX3CON = tmp;	 	/*	* GPM4_0-GPM4_3 设置为输出功能,用于控制LED的亮灭	*/	tmp = GPM4CON;	tmp &= ~0xffff;	tmp |= 0x1111;	GPM4CON = tmp;	 	while(1)	{		//读按键引脚状态		keyValue = GPX3DAT;		keyValue = (keyValue & (0xf << 2)) >> 2;		 		if(keyValue != 0xf) //说明有按键被按下,再详细判断是哪个按键被按下		{			delay(1000); //防抖			 			keyValue = GPX3DAT;			keyValue = (keyValue & (0xf << 2)) >> 2;			 			GPM4DAT = ~keyValue; //设置LED亮、灭		}		else		{			GPM4DAT = 0x00;		}	}	 	return 0;}

其中注释也比较详细,控制原理上边也说得很清楚了,这里就不多说了,有问题可以留言。

三、程序编译及烧写

1.编译

通过FTP或者其他工具将Start.s、Makefile、key.lds 、key.c四个文件上传到服务器上去,输入make命令进行编译将得到key.bin文件。

2.烧写

将SD卡插入电脑,并让VmWare里的Ubuntu识别出来,然后执行如下命令:

./sd_fusing.sh /dev/sdb ../../hardware_code/key/led.bin

如下图所示:

202353_8cVG_2888084.png

四、上电实验

这里就不贴图片了,有兴趣的可以自己试验。

转载于:https://my.oschina.net/cht2000/blog/1622260

你可能感兴趣的文章
Oracle Net Configuration(监听程序和网络服务配置)
查看>>
c语言_判断例子
查看>>
ubuntu重启不清除 /tmp 设置
查看>>
面向对象
查看>>
JSON
查看>>
SAP发布wbservice,如果有权限管控的话,需要给这个webservice加权限
查看>>
16.Python网络爬虫之Scrapy框架(CrawlSpider)
查看>>
stm 常用头文件
查看>>
mac 删除文件夹里所有的.svn文件
查看>>
程序制作 代写程序 软件定制 代写Assignment 网络IT支持服务
查看>>
mysql 案例~select引起的性能问题
查看>>
直接读取图层
查看>>
springsecurity 源码解读 之 RememberMeAuthenticationFilter
查看>>
HTML5标准学习 - 编码
查看>>
JS 时间戳转星期几 AND js时间戳判断时间几天前
查看>>
UVa11426 最大公约数之和(正版)
查看>>
mime
查看>>
SQL练习之求解填字游戏
查看>>
DOM
查看>>
关于网上商城开发的随笔记录1
查看>>