计时器基本功能实验(计时器中断)
1 .实验内容
使用计时器0实现1秒的计时器,控制为按蜂鸣器。 通过中断方式实现定时控制。
注: EasyARM2131实验板的系统时钟默认为11.0592MHz; 符号常数Fpclk=11059200在系统中定义;
2 .实验步骤
启动ADS 1.2并使用ARM Executable Image for lpc2131项目模板创建项目
TimeOut_C。
在user组的main.c中写主程序代码。
在主程序中启用IRQEnable ) )启用IRQ中断。
在DebugInExram中生成目标并编译连接工序。
将LPC2131测试板上的Beep跳线短接至P0.7。
选择【Project】-【Debug】,启动AXD进行JTAG仿真调试。
以全速运行程序后,蜂鸣器按1秒响、1秒停止、然后又响1秒……的顺序循环。
3 .实验参考程序
程序列表Error! notextofspecifiedstyleindocument.1计时器实验参考程序
#include 'config.h '
#define BEEP 1 7/* P0.7控制BEEP、低电平蜂鸣器*/
/* * * * * * * * * * * * * * * * * *
*函数名称: IRQ_Timer0 ()
*函数功能:计时器0中断服务程序,取反LED9控制端口。
*入口参数:无
*出口参数:无
* * * * * * * * * * * * * * * * *
*/
void_IRQIRQ_timeR0(void ) ) )。
{
if ((io0set beep )==0) ) )。
IO0SET=BEEP; BEEP */
else
IO0CLR=BEEP;
T0IR=0x01; /*清除中断标志*
VICVectAddr=0x00;/*通知vic中断处理结束*
}
/*
* * * * * * * * * * * * * * * * *
*函数名称: main () )
*函数功能:使用计时器实现1秒钟的计时器,控制LED9的闪烁。 中断方式。
*调试说明:必须将跳线JP11连接到BEEP。
* * * * * * * * * * * * * * * * *
*/
输入主(语音) )。
{
PINSEL1=0x00000000; /*针连接GPIO */的设定*
IO0DIR=BEEP; BEEP控制端口输出设置*
IRQ启用(; /* 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=10x04; /*使能计时器0中断*
wile(1;
返回0;
}
扩大全文
版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。