嵌入式ARM键盘控制LED灯实验报告【范本模板】
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六键盘控制LED灯实验
1实验目的
(1) 通过实验掌握中断式键盘控制与设计方法;
(2) 熟练编写S3C2410中断服务程序。
2 实验设备
(1) S3C2410嵌入式开发板,JTAG仿真器.
(2) 软件:PC机操作系统Windows XP,ADS1.2集成开发环境,仿真器驱动程序,超级终端通讯程序.
3 实验内容
编写中断处理程序,处理一个键盘中断,并在串口打印中断及按键显示信息。
4 实验步骤
(1) 参照模板工程,新建一个工程keypad,添加相应的文件,并修改keypad 的工程设置;
(2)创建keypad。
c并加入到工程keypad中;
(3)编写键盘中断程序;
参考代码如下:
①串口初始化程序
void uart_init()/* UART串口初始化*/
{
GPHCON |= 0xa0; //GPH2,GPH3 used as TXD0,RXD0
GPHUP = 0x0;//GPH2,GPH3内部上拉
ULCON0 = 0x03;//8N1
UCON0 = 0x05; //查询方式为轮询或中断;时钟选择为PCLK
UFCON0 = 0x00;//不使用FIFO
UMCON0 = 0x00;//不使用流控
UBRDIV0 = 26; //波特率为57600,PCLK=12Mhz
}
②发送数据
while(!(UTRSTAT0 &TXD0READY));
UTXH0 = c;
③接收数据
while( ! (UTRSTAT0 &RXD0READY));
return URXH0;
④打印数据
int i = 0;
while(str[i] ){
putc((unsigned char)str[i++]);
}
return i;
⑤按键初始化
int key_init()/* 按键初始化*/
{
GPFCON = 0x55aa;
GPFUP = 0xff;
printk(”按键初始化OK\r\n”);
return 0;
}
⑥中断初始化
void irq_init()/*中断初始化*/
{
INTMSK &= ~(3〈<2);
printk("中断初始化OK\r\n”);
}
(5) 编译keypad;
(6)运行超级终端,选择正确的串口号,并将串口设置位:波特率(115200)、奇偶校验(None)、数据位数(8)和停止位数(1),无流控,打开串口;
(7)运行程序,在超级终端中输入的数据将回显到超级终端上,结果如图5。
4所示:
图6。
1 初始化运行结果
图6。
2 main运行结果
5 实验总结
通过这次实验我巩固了上次实验的串口的使用方法,串口初始化、发送数据和接收数据,同时也熟悉了中断的处理过程,即保护现场、中断处理、恢复现场并返回。
在实验时花费了很多的时间都没有按照老师的要求将代码修改好,主要是因为对代码的不熟悉和不能很好的灵活运用,最后对老师修改的代码仔细的看了,其实很简单。