定时器基本功能实验(定时器中断)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二、定时器基本功能实验(定时器中断)

班级:

学号:

姓名:

一、实验目的

熟悉LPC2000 系列ARM7 微控制器的定时器0的基本设置及定时中断应用。二、实验设备

硬件:PC 机、LPC2131 教学实验开发平台

软件:Windows98/XP系统,ADS 1.2 集成开发环境

三、实验内容

使用定时器 0 实现1 秒定时,控制蜂鸣器蜂鸣。采用中断方式实现定时控制。备注:EasyARM2131 实验板上的系统时钟默认为11.0592MHz;系统中已定义了符号常量Fpclk = 11059200。

四、实验步骤

1、启动 ADS 1.2,使用ARM Executable Image for lpc2131 工程模板建立一个工程TimeOut_C;

2、在 user 组中的main.c 中编写主程序代码;

3、主程序中使用IRQEnable( )使能IRQ 中断;

4、选用 DebugInExram 生成目标,然后编译连接工程;

5、将 LPC2131 实验板上的Beep 跳线短接到P0.7;

6、选择 -> ,启动AXD 进行JTAG 仿真调试;

7、全速运行程序,蜂鸣器会响一秒,停一秒,依次循环。

五、实验参考程序

#include "config.h"

#define BEEP 1 << 7 /* P0.7 控制BEEP,低电平蜂鸣 */

/*

********************************************************************* ** 函数名称:IRQ_Timer0()

** 函数功能:定时器 0 中断服务程序,取反LED9 控制口。

** 入口参数:无

** 出口参数:无

********************************************************************* */

void __irq IRQ_Timer0 (void)

{

if ((IO0SET & BEEP) == 0)

IO0SET = BEEP; /* 关闭BEEP */

else

IO0CLR = BEEP;

T0IR = 0x01; /* 清除中断标志 */

VICVectAddr = 0x00; /* 通知VIC 中断处理结束 */

}

/*

********************************************************************* ** 函数名称:main()

** 函数功能:使用定时器实现 1 秒钟定时,控制LED9 闪烁。中断方式。

** 调试说明:需要将跳线 JP11 连接BEEP。

********************************************************************* */

int main (void)

{

PINSEL1 = 0x00000000; /* 设置管脚连接GPIO */

IO0DIR = BEEP; /* 设置BEEP 控制口输出 */

IRQEnable(); /* IRQ中断使能 */

/* 定时器0 初始化 */

T0TC = 0; /* 定时器设置为0 */

T0PR = 0; /* 时钟不分频 */

T0MCR = 0x03; /* 设置T0MR0 匹配后复位T0TC,并产生中断标志 */

T0MR0 = Fpclk; /* 1 秒钟定时;系统中已定义Fpclk = 11059200 */

T0TCR = 0x01; /* 启动定时器 */

/* 设置定时器0 中断IRQ */

VICIntSelect = 0x00; /* 所有中断通道设置为IRQ 中断 */

VICVectCntl0 = 0x20 | 0x04; /* 设置定时器0 中断通道分配最高优先级 */ VICVectAddr0 = (uint32)IRQ_Timer0; /* 设置中断服务程序地址 */

VICIntEnable = 1 << 0x04; /* 使能定时器0 中断 */

while (1);

return 0;

}

六、思考

(1)、主函数中的 while (1); 语句起什么作用?

答:等待Time0中断。

(2)、程序中的 __irq 起何作用?

(3)、编程使用 VIC 时,主要的设置有哪些?

相关文档
最新文档