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

📄 秒定时中断.c

📁 针对PP2132V1开发的详细的实验教程
💻 C
字号:
/**************************************************************
实验名称:RTC秒增量中断实验
实验目的:熟悉RTC的使用
实验准备:带中断的程序应该运行在FLASH模式下
实验日期:2008,3,30
作者:    刘启明
***************************************************************/
#include "iolpc2132.h"
#include "inarm.h"
#define         Fpclk 12000000          //晶体的频率
#define 	BEEP 	1 << 7		// P0.7控制蜂鸣器

/***************************************************************
** 函数名称 : RTC_Int()
** 功能描述 : RTC中断服务函数。
** 入口参数 :无
** 出口参数 :无
***************************************************************/
#pragma vector=0x18
__irq __arm void RTC_Int(void)
{
    /* 取反BEEP控制口 */
    if((IO0SET & BEEP) == 0) IO0SET = BEEP;
    else IO0CLR = BEEP;
    
    ILR = 0x01;					// 清除RTC增量中断标志
    VICVectAddr = 0;			       // 向量中断结束
}


/****************************************************************
** 函数名称: main()
** 功能描述: RTC秒定时中断实验。
****************************************************************/
void main (void)
{
    IO0DIR = BEEP;
    IO0SET = BEEP;
    
	
    /* RTC初始化 */            
    PREINT = Fpclk / 32768 - 1;	                   // 设置基准时钟分频器
    PREFRAC = Fpclk - (Fpclk / 32768) * 32768;
   
 //   YEAR = 2007;				    // 初化年
 //   MONTH = 9;				    // 初化月
 //   DOM = 7;				            // 初化日
   
    CIIR = 0x01;				    // 设置秒值的增量产生一次中断
    ILR = 0x03;					    // 清除RTC增量和报警中断标志
    CCR = 0x01;				            // 启动RTC

	/* VIC初始化 */
    VICIntSelect = 0x00;			    // 设置所有中断连接IRQ中断
    VICVectCntl0 = 0x20 | 13;		            // 分配通道0
    VICVectAddr0 = (int)RTC_Int;	            // 设置中断服务程序地址
    VICIntEnable = (1 << 13);		            // 使能RTC中断
    __enable_interrupt();                           //开中断
    while(1); 					    // 等待中断
    
}

⌨️ 快捷键说明

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