首页>>科技 >>内容

(exynos4412)Tiny4412裸机开发-按钮检测

发布时间:2023-08-23 13:54:04编辑:温柔的背包来源:

(exynos4412)Tiny4412裸机开发-按钮检测

很多朋友对(exynos4412)Tiny4412裸机开发-按钮检测不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

(exynos4412)Tiny4412裸机开发-按钮检测

一、前言Tiny4412开发是Friendly Arm推出的一款Android和Linux学习开发板。 CPU采用三星的EXYNOS4412,32位芯片,属于Cortex-A系列。主频1.5GHZ,可运行ubuntu、Android5.0、纯Linux等操作系统。

上一篇文章已经介绍了LED裸机编程并完成了LED灯的控制。本文介绍使用该开发板继续完成按键编程,了解GPIO口的基本输入输出配置。

以下是开发板实物图:

开发板配置:

2.按钮编程要完成程序开发,需要搭建交叉编译环境并安装arm-linux-gcc编译器。上一篇文章已经介绍过,本文不再重复。

环境搭建好后,你得看原理图才能知道按钮连接到CPU的哪个IO口,知道按钮按到什么级别才表明按钮被按下,然后读取芯片手册找到IO口对应的配置寄存器,完成GPIO模式配置。完成按键检测。

2.1 查看原理图tiny4412 开发板有两张原理图,分别对应底板和核心板。

从原理图中可以看出,一共有4个按钮,分别连接到GPX3_2 GPX3_3 GPX3_4 GPX3_5的GPIO端口。

2.2 查看芯片手册在芯片手册中找到GPX3寄存器的位置。

GPX3CON 是模式配置寄存器。

GPX3DAT是数据输出和输入控制寄存器。

按键是检测外部电平来判断按键是否按下和释放,需要配置为输入模式。

2.3 编写按钮检测代码下面的代码实现了:检测按钮是否按下的效果。按下按钮后,LED灯亮,蜂鸣器响。松开按钮时,LED 灯熄灭,蜂鸣器关闭。

#define GPD0CON (*(易失性无符号整数*)0x114000A0)#define GPD0DAT (*(易失性无符号整数*)0x114000A4)/*LED 寄存器GPM4_0 1 2 3* /#define GPM4CON (*(易失性无符号整数*)0x110002E0)#define GPM4DAT (*(易失性无符号整数*)0x110002E4)#define GPX3CON (*(易失性无符号整数*)0x11000C60)#define GPX3DAT (*(易失性无符号整数*)0x11000C64)//BEEP---GPD0_0int main(void){ GPD0CON=~(0xF0 *4);//清除寄存器配置GPD0CON|=0x10*4; //配置GPIO为输出模式GPM4CON=0xFFFF0000; GPM4CON|=0x00001111;GPX3CON=0xFF0000FF; while(1) { if(!(GPX3DAT12)) //判断按键是否按下{ GPD0DAT|=10; //输出高电平GPM4DAT=~(10); } else if(!(GPX3DAT13)) //判断按钮是否按下{ GPD0DAT|=10; //输出高电平GPM4DAT=~(11); } else if(!(GPX3DAT14)) //判断按钮是否按下{ GPD0DAT|=10; //输出高电平GPM4DAT=~(12); } else if(!(GPX3DAT15)) //判断按钮是否按下{ GPD0DAT|=10; //输出高电平GPM4DAT=~(13); } 其他{ GPD0DAT=~(10); GPM4DAT|=0xF0; } } return 0;}复制代码2.4 烧录程序测试程序编译完成后,会生成main.bin文件。将SD卡插入电脑,运行编程脚本,执行dd命令,编程成功。

拔出SD卡,插入开发板,选择从SD卡启动,按下按钮测试效果。

[wbyq@wbyq sd_fuse]$ sudo ./sd_write.sh /dev/sdb ./main.bin

在三星的官方手册中,说明了如果使用SD卡,如何存储SD卡的内部数据。上面的烧写程序就是安装这条指令中写的代码,并使用dd命令将可执行文件烧写到SD卡的相应位置。

如果您使用EMMC,请按以下布局:

审计唐子红

以上知识分享希望能够帮助到大家!