历史上的今天
今天是:2024年10月14日(星期一)
2021年10月14日 | S3C2440开发板裸机程序系列02--按键和蜂鸣器
2021-10-14 来源:eefocus
1. TQ2440按键接口电路

K1 -- EINT1 -- GPF1
K2 -- EINT4 -- GPF4
K3 -- EINT2 -- GPF2
K4 -- EINT0 -- GPF0
2. 按键参考代码
按键,则对应的led灯亮,松开则灭。
在流水灯程序基础上,修改Main.c,增加key.c , key.h
key.c
#include "2440addr.h"
#include "key.h"
void Key_Init(void)
{
rGPFCON &= ~((3<<2)|(3<<8)|(3<<4)|(3<<0));
rGPFCON |= KEY1|KEY2|KEY3|KEY4; //输入模式
rGPFDAT |= (1<<1)|(1<<4)|(1<<2)|(1<<0); //初始为高电平
}
int Key_Scan(void)
{
int keynum = 0;
if((rGPFDAT & (1<<1)) == 0)
{
keynum = 1;
}
if((rGPFDAT & (1<<4)) == 0)
{
keynum = 2;
}
if((rGPFDAT & (1<<2)) == 0)
{
keynum = 3;
}
if((rGPFDAT & (1<<0)) == 0)
{
keynum = 4;
}
return keynum;
}
key.h
#ifndef __KEY_H__
#define __KEY_H__
#define KEY1 (0<<2)
#define KEY2 (0<<8)
#define KEY3 (0<<4)
#define KEY4 (0<<2)
extern void Key_Init(void);
extern int Key_Scan(void);
#endif
Main.c
#include "led.h"
#include "common.h"
#include "key.h"
int Main()
{
Led_Init();
Key_Init();
while(1)
{
switch(Key_Scan())
{
case 1:
LED01_ON;
break;
case 2:
LED02_ON;
break;
case 3:
LED03_ON;
break;
case 4:
LED04_ON;
break;
default:
LED01_OFF;
LED02_OFF;
LED03_OFF;
LED04_OFF;
break;
}
}
}
3. 蜂鸣器接口电路

TOUT0 -- GPB0 , 高电平 beep响
4.蜂鸣器参考代码
在以上代码基础上增加beep.c ,beep.h,修改Main.c,按键1按下时蜂鸣器响。
beep.c
#include "2440addr.h"
void Beep_Init(void)
{
rGPBCON &= ~(3<<0);
rGPBCON |= (1<<0);
rGPBUP &= ~(1<<0);
rGPBDAT &= ~(1<<0);
}
beep.h
#ifndef __BEEP_H__
#define __BEEP_H__
#define Beep_On() {rGPBDAT |= 1<<0;}
#define Beep_Off() {rGPBDAT &= ~(1<<0);}
extern void Beep_Init(void);
#endif
Main.c
#include "led.h"
#include "common.h"
#include "key.h"
#include "beep.h"
int Main()
{
Led_Init();
Key_Init();
Beep_Init();
while(1)
{
switch(Key_Scan())
{
case 1:
LED01_ON;
Beep_On();
break;
case 2:
LED02_ON;
break;
case 3:
LED03_ON;
break;
case 4:
LED04_ON;
break;
default:
LED01_OFF;
LED02_OFF;
LED03_OFF;
LED04_OFF;
Beep_Off();
break;
}
}
}
史海拾趣
|
FPGA与CPLD内部结构区别? CPLD 以altraMAX7000这种PLD为例,可分为三块结构:宏单元(Marocell),可编程连线(PIA)和I/O控制块。宏单元是PLD的基本结构,由它来实现基本的逻辑功能。可编程 ...… 查看全部问答> |
|
如题 比如华为的EM660 是CDMA2000的 联芯的LC5730是TD-SCDMA/GSM双模的 用什么指令可以读取出来那? 过路的大虾给看看。。。… 查看全部问答> |
|
WINCE实现TCPMP的背景播放电影,发现如果不把视频窗口设置为活动窗口则无法刷新视频窗口,但是当设置了TCPMP的窗口为活动窗口后,其他窗口就无法显示. 但是在PC上,当TCPMP处于非活动状态时,其背景的视频窗口是可以刷新的,这到底是WINCE对于窗口切换的 ...… 查看全部问答> |
|
WINCE 5.0 + 三星S3C2450平台 因为所使用的LCD支持24位,S3C2450的LCD控制器又支持16位和24位,32位等,所以,有以下需求: 上层应用可以在不重启系统的情况下设置系统显示在16位与24位之间切换,这样的好处是,在查看图片 显示UI等对CPU运算要 ...… 查看全部问答> |
|
最近几天在赶毕业设计的硬件调试.遇到如题的问题,MAX的连线是采用教科书上的连线方法. 检查了好几次了,不大可能是连线错了. 计算机端的接收程序用串口调试助手调试过也没问题. 主要症状就是MAX232发烫,问下高手.MAX232坏掉的可能性大不大?如何检 ...… 查看全部问答> |
|
user\'s guide上说 After a PUC, MCLK and SMCLK are sourced from DCOCLK at ~1.1 MHz (see the device-specific data sheet for parameters) and ACLK is sourced from LFXT1CLK in LF mode with an internal load capacitance of 6pF. 关于A ...… 查看全部问答> |
|
“长久的激情才能赚钱” 随着互联网的兴起,利用这个新兴的互联网工具创业的人比比皆是,一个又一个成功案例的展示,向我们描绘了互联网工具的价值。也因此,一大批互联网跟随者也都开始活动起来,想争取在这个领域,利用这个新兴的工具也能分到 ...… 查看全部问答> |




