641
社区成员




您好,我使用Timer1的模模式,定时100ms中断产生中断,每中断10次翻转LED。
但是明显感觉定时时间慢了两倍,开发板LED的闪烁速度过慢。
已经检查过了系统时钟配置、分频系数配置、 T1CC0的装填上限值,仍然找不到错误。
望指点一二
1.定时器配置
void Timer1_IT_Init(void) //模模式,中断定时初始化
{
T1STAT |= 0x21; //往Bit0和Bit5写1,清空计数溢出中断和通道0的中断状态位
T1IF = 0; //清空T1中断标志位
T1CTL |= 0x0E; //128分频,模计数模式
T1CCTL0 |= 0x04; //开启定时器1通道0的比较模式
T1CC0L = 0xA7; //先确定计数上限值
T1CC0H = 0x61; //再确定计数上限值,计数25000个
T1IE = 1; //打开T1中断开关
EA = 1; //打开中断总开关
}
2.主函数
void main(void)
{
setSystemClk32MHZ();
Timer1_IT_Init();
LED_Init();
while(1)
{
}
}
3.中断函数
#pragma vector = T1_VECTOR
__interrupt void Timer1_Sevice(void)
{
T1STAT |= 0x21; //往Bit0和Bit5写1,清空计数溢出中断和通道0的中断状态位
T1IF = 0; //清空T1中断标志位
static uint16_t count = 0;
count++;
if(count == 10)
{
count = 0;
LED_Toggle();
}
}