在线时间0 小时
UID180210
注册时间2010-4-6
NXP金币0
该用户从未签到
新手上路

- 积分
- 21
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2013-11-7 18:34:26
|
显示全部楼层
回复:KE02的PIT定时周期中断问题
回复第 2 楼 于2013-11-07 09:34:43发表:
把你的配置发出来看一下。
1、定义的PIT初始化原函数
void PIT_Init(uint8 u8Channel,uint32 u32LoadValue)
{
uint32 u32Mcr;
uint32 u32Ldval;
uint32 u32Tctrl;
uint32 u32Tflg;
//
SIM->SCGC |= SIM_SCGC_PIT_MASK; //PIT时钟门控使能
if (u8Channel)
{
NVIC_EnableIRQ(PIT_CH1_IRQn); //使能PIT1中断
}
else
{
NVIC_EnableIRQ(PIT_CH0_IRQn); //使能PIT0中断
}
//复位后的值
u32Mcr = 6; //PIT定时器时钟关闭
u32Ldval = 0;
u32Tctrl = 0;
u32Tflg = 0;
//修改的参数值
u32Mcr &= ~PIT_MCR_MDIS_MASK; //PIT定时器使能
u32Ldval = u32LoadValue; //设置定时周期参数
u32Tctrl |= PIT_TCTRL_TIE_MASK //使能PIT中断
| PIT_TCTRL_TEN_MASK; //使能定时器
//PIT寄存器设置
PIT->MCR = u32Mcr;
PIT->CHANNEL[u8Channel].LDVAL = u32Ldval;
PIT->CHANNEL[u8Channel].TCTRL = u32Tctrl;
PIT->CHANNEL[u8Channel].TFLG = u32Tflg;
}
2、定义中断号
#undef VECTOR_038
#define VECTOR_038 PIT_Ch0Isr /*!< Vector 38 points to PIT0 interrupt service routine */
extern void PIT_Ch0Isr(void);
3、中断执行函数
void PIT_Ch0Isr(void)
{
PIT->CHANNEL[0].TFLG |= PIT_TFLG_TIF_MASK; //清除中断标志
GPIO_PinToggle(PTD1); //翻转管脚电平
}
4 、调用的PIT初始化函数是
PIT_Init(0,15999999); //PIT周期为1秒
|
|