历史上的今天
返回首页

历史上的今天

今天是:2024年12月16日(星期一)

正在发生

2021年12月16日 | TINY4412裸机程序,按键检测

2021-12-16 来源:eefocus

一、控制原理说明

先看一下原理图:

202006_vjcW_2888084.png?imageView2/2/w/550

首先把按键对应的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?imageView2/2/w/550

四、上电实验

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

推荐阅读

史海拾趣

ETC公司的发展小趣事

北京速通科技有限公司(以下简称速通科技)作为ETC行业的领军企业,其创立之初就专注于电子不停车收费系统(ETC)的研发与应用。随着国内交通拥堵问题的日益严重,速通科技看到了ETC系统在未来交通管理中的重要地位。公司组建了一支由行业专家和技术精英组成的团队,开始了ETC技术的探索之路。

Amidon Associates Inc公司的发展小趣事

在ETC领域,速通科技积极寻求与行业内其他企业的合作。公司与多家银行、保险公司等金融机构建立了合作关系,共同推广ETC系统的应用。此外,速通科技还积极参与行业标准的制定和修订工作,推动ETC行业的健康发展。通过与行业内其他企业的合作,速通科技实现了共赢发展,共同推动了ETC行业的进步。

FOCI Fiber Optic Communications Inc公司的发展小趣事

在ETC领域,速通科技积极寻求与行业内其他企业的合作。公司与多家银行、保险公司等金融机构建立了合作关系,共同推广ETC系统的应用。此外,速通科技还积极参与行业标准的制定和修订工作,推动ETC行业的健康发展。通过与行业内其他企业的合作,速通科技实现了共赢发展,共同推动了ETC行业的进步。

Amphenol RF公司的发展小趣事

速通科技始终将用户体验放在首位。公司不断完善ETC系统的服务功能,提高了系统的稳定性和易用性。同时,速通科技还建立了完善的客户服务体系,为用户提供24小时不间断的在线客服支持。这些举措大大提高了用户对ETC系统的满意度和信任度。

巴丁微公司的发展小趣事

巴丁微积极参与各类电子行业的展会和交流活动,以此展示公司的技术实力和产品优势。在CITE2023第十一届中国电子信息博览会上,巴丁微向大家展示了其在电机驱动芯片在智能锁、气表、水表、个人护理及智能垃圾桶等领域的应用案例,吸引了大量专业人士和行业客户的关注。

通过展会,巴丁微不仅成功展示了公司的最新技术和产品,还加强了与业界同仁的交流与合作,进一步提升了公司在行业内的知名度和影响力。

Crystek公司的发展小趣事

为了进一步扩大市场份额和提升品牌影响力,Crystek公司积极拓展国际市场,与全球多家知名企业建立了合作关系。通过与这些企业的深入合作,Crystek公司的产品得以广泛应用于无线、微波无线电、电信、工业、企业、航空航天和政府部门等各个领域。同时,公司还积极参加国际电子展览和技术交流会议,与全球同行交流学习,不断提升自身的技术水平和市场竞争力。

问答坊 | AI 解惑

EM78P156中文

有要的就下吧,记得顶一下。别沉了…

查看全部问答>

北京2008安防展上的新动向---3

3、“平安城市”的概念成为新时期的监控行业的热点。除了网络化、无线有线结合、高倍数镜头的趋势外,专门开发的高性能的摄像机和光学镜头引起了参观者的兴趣。高分辨率、超宽动态、超低照度。…

查看全部问答>

智能车信息回放系统6

智能车信息回放系统6…

查看全部问答>

【社区大讲堂】如何利用WEBENCH快速设计

第一讲   WEBENCH的简介和登陆 1.1 WEBENCH的简介 WEBENCH是美国国家半导体推出的一款功能非常强大的在线设计和仿真工具,可以对电源、LED、放大器、滤波器、音频、接口、无线以及信号路径进行设计与仿真。 1.2 WEBENCH的登陆 要想利 ...…

查看全部问答>

读写寄存器失败!请教

代码如下: static OMAP3430_MCBSP_REGS_t *pMcbsp1Regs; pMcbsp1Regs = OALPAtoUA(OMAP_MCBSP1_REGS_PA);        RETAILMSG(1,(TEXT(\"InitMcbsp1_32bit:pMcbsp1Regs = 0x%x\\r\\n\"),pMcbsp1Regs)); RETAILMSG(1,(TEXT(\ ...…

查看全部问答>

4x4 4x4键盘问题,有四个键值始终不对,请大家帮帮忙

[#TK1117] 4x4 4x4键盘问题,有四个键值始终不对,请大家帮帮忙   用89c2051做了一个键盘,P1.0-P1.3接上拉电阻,程序如下: uchar getkey() {     uchar recode,key;             ...…

查看全部问答>

关于从nandflash启动的前4K代码

我现在有个led流水灯的程序,大于 4K,S3C2440从nandflash启动时,前面有个引导码start.s,它负责硬件初始化并把之后的main函数COPY到SDRAM,资料上写2440会把前4K代码自动复制到SRAM上运行,现在有个疑问:之前这个start.s如果小于4K,那么这个4K就会 ...…

查看全部问答>

已有文件abc.inf和abc.sys,如何用wise打包驱动?

reference manual已阅,但是依然没有找到方法。 基本的使用我已经明白,设计到inf如何使用的部分不是很清楚,目前已经完成的操作就是: 1.拷贝文件。 abc.sys -> $(WINNT)\\System32\\DRIVERS abc.inf -> $(WINNT)\\inf 2.写注册表 [HKEY_LOC ...…

查看全部问答>

CE下怎么因隐藏掉开始菜单啊(不用aygshell中SH打头的函数)

CE下怎么因隐藏掉开始菜单啊(不用aygshell中SH打头的函数)…

查看全部问答>