⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer0中断.c

📁 针对PP2132V1开发的详细的实验教程
💻 C
字号:
/**************************************************************
实验名称:定时器0中断实验
实验目的:熟悉定时器0的使用
实验准备:带中断的程序应该运行在FLASH模式下
实验日期:2008,3,30
作者:    刘启明
***************************************************************/
#include <iolpc2132.h>
#include <inarm.h>

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


/*****************************************************************
** 函数名称 :IRQ_Timer0()
** 函数功能 :定时器0中断服务程序,取反LED控制口。蜂鸣或闪烁
** 入口参数 :无
** 出口参数 :无
*****************************************************************/

#pragma vector=0x18	
__irq __arm  void  IRQ_Timer0 (void)
{
        T0IR_bit.MR0INT      = 1;		/* 清除中断标志		*/
        
	if (IO0PIN_bit.P0_7==1)IO0CLR = BEEP;
            else	  IO0SET = BEEP;	/* BEEP取反LED		*/
			
	VICVectAddr = 0x00;			/* 通知VIC中断处理结束	*/
}

/*****************************************************************
** 函数名称 :main()
** 函数功能 :使用定时器实现1秒钟定时,控制LED闪烁。中断方式。
** 调试说明 :需要将跳线0。7连接LED。
*****************************************************************/
void main (void)
{
        
	PINSEL0 = 0x00000000;		/* 设置管脚连接GPIO				*/
	IO0DIR  = BEEP;			/* 设置BEEP控制口输出		          	*/
	IO0SET = BEEP;
        //T0IR_bit.MR0INT      = 1;
	
	/* 定时器0初始化 */
	T0TC   = 0;			/* 定时器设置为0										*/
	T0PR   = 0;			/* 时钟不分频											*/
	T0MCR_bit.MR0RES  = 1;		/* 设置T0MR0匹配后复位T0TC,并产生中断标志	*/
	T0MCR_bit.MR0INT  = 1;	
        T0MR0             = Fpclk/2;	/* 0.5秒钟定时		*/
	T0TCR_bit.CE      = 1;		/* 启动定时器		*/
	
	
        /* 设置定时器0中断IRQ */
        
        __disable_interrupt(); // 关中断
	VICIntSelect             = 0x00;		/* 所有中断通道设置为IRQ中断		*/
	VICVectCntl0_bit.NUMBER  = 0x04;		/* 设置定时器0中断通道分配最高优先级	*/
	VICVectCntl0_bit.ENABLED = 1;	
        VICVectAddr0 = (unsigned int)IRQ_Timer0;	/* 设置中断服务程序地址			*/
	VICIntEnable_bit.INT4    = 1;			/* 使能定时器0中断			*/
        __enable_interrupt();
	
	while (1);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -