📄 main.c
字号:
/*****************************************************************************\
* *
* 定时器测试 *
* *
* 本程序测试定时器中断和实时钟Tick中断。 *
* 程序运行时可观察到两个LED均以1秒的周期闪烁。 *
* 其中LED1靠通用定时器1中断驱动,LED2靠RTC Tick中断驱动。 *
* *
* 由于通用定时器以主时钟为时钟源, *
* 因此该程序同时也检验了PLL是否正确设置为66MHz *
* *
\*****************************************************************************/
#include "44b.h"
#include "LED.h"
// 通用定时器1中断服务程序
__IRQ__ void Timer1ISR(void)
{
SetLED1(2); // 翻转LED1
rI_ISPC = BIT_TIMER1; // 清中断状态标志
}
// RTC Tick中断服务程序
__IRQ__ void TickISR(void)
{
SetLED2(2); // 翻转LED2
rI_ISPC = BIT_TICK; // 清中断状态标志
}
// 安装中断服务程序
void InitISR()
{
pISR_TIMER1 = (unsigned)Timer1ISR; // 设置中断向量
pISR_TICK = (unsigned)TickISR;
// 设置Timer1
rTCFG0 = 0x000000F9; // the prescale of timer0, 1 = 250
rTCFG1 = 0x00000040; // MUX input for timer1 = 1/32
rTCNTB1 = 4125; // Timer1计数器 = 4125,周期0.5秒
rTCON = 0x00000200; // 装载计数值
rTCON = 0x00000900; // 启动Timer1
rTICINT = 0xbf; // RTC Tick中断使能, 周期0.5秒
rINTMSK &= ~(BIT_GLOBAL | BIT_TIMER1 | BIT_TICK); // 中断使能
}
void Main(void)
{
InitLED();
InitISR();
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -