在线时间1 小时
UID137977
注册时间2007-12-27
NXP金币0
该用户从未签到
注册会员

- 积分
- 188
- 最后登录
- 1970-1-1
|
对于两个PIT0和PIT1定时器的用法,我想实现PIT0定时10ms,PIT1定时5ms,但两个中断都是产生10ms的中断,请大家帮我看看?非常着急???在这里先谢谢了.
//********************定时器初始化函数********************
//函数定义:void PIT_Init(void)
//描述:
//参数: 无
//返回值: 无
//备注: //PIT模块中的16位计数器初值和8位计数器配合而成24位计数器
//********************************************************
void PIT_Init(void) //周期中断初始化函数 周期1MS中断设置
{
PITCFLMT_PITE=1; //使能PIT模块
PITMUX=0x00; //该寄存器对定时器通道的8位时基进行选择,8位计数器只有两个 PMUX0,PMUX1
PITMTLD0=16 - 1; //用于设置PIT模块中的8位计数器初值,以实现24位的计数。设定值为0到255范围。
//PMUX = 1时使用PITMTLD1 定时器初值设定,16分频,在16MHzBusClock下,为1MHz。即1us
//PMUX = 0时使用PITMTLD0
PITLD0=10000 - 1; //16位定时器初值设定 10000*0.001MS=10MS time-out period = (PITMTLD + 1) * (PITLD + 1) / fBUS.
PITLD1=5000 - 1; //5ms
PITINTE_PINTE0=1; //PIT中断通道0使能 ,当计数器递减溢出时,申请中断
PITINTE_PINTE1=1; //PIT中断通道1使能 ,当计数器递减溢出时,申请中断
PITCE_PCE0=1; //使能通道0
PITCE_PCE1=1; //使能通道1
}
//********************定时器0中断函数 *******************
//函数定义:void interrupt (VectorNumber_Vpit0) PIT0_ISR(void)
//描述: 定时器中断函数 10ms执行中断一次
//参数: 无
//返回值: 无
//备注: 10ms中断一次
//*******************************************************
#pragma CODE_SEG __NEAR_SEG NON_BANKED //指示该程序在不分页区
void interrupt (VectorNumber_Vpit0) PIT0_ISR(void)
{
PITTF_PTF0 = 1; /* and clear interrupt flag */
timeout=1;
cnt++;
if(cnt3==100){
cnt=0;
PORTA_PA3=~PORTA_PA3;
}
}
//********************定时器1中断函数 *******************
//函数定义:void interrupt (VectorNumber_Vpit0) PIT0_ISR(void)
//描述: 定时器中断函数 10ms执行中断一次
//参数: 无
//返回值: 无
//备注: 5ms中断一次
//*******************************************************
void interrupt (VectorNumber_Vpit1) PIT1_ISR(void)
{
PITTF_PTF1 = 1; /* and clear interrupt flag */
timeout=1;
cnt3++;
if(cnt3==200){
cnt3=0;
PORTA_PA2=~PORTA_PA2;
}
}
|
|