在线时间3 小时
UID423073
注册时间2013-3-25
NXP金币0
该用户从未签到
注册会员

- 积分
- 70
- 最后登录
- 1970-1-1
|
各位大神及老师:
大家好!我用freescale单片机g128测试定时器通道0的输入捕捉功能,用PTP_PT3引脚的IO口功能模拟输出PWM波,将该引脚与PT0引脚连接,来验证输入捕捉功能。但是问题来了,PT3引脚能够正常输出PWM波,但却未触发输入捕捉中断,也就是说没有进入中断,求大神指点,比较着急,谢谢!
具体程序如下:
include <hidef.h> /* common defines and macros */
#include <mc9s12g128.h> /* derivative information */
//#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
unsigned int Input_Num;
unsigned int M,m,PPPP;
//----------------------时钟初始化------------------------------//
void MCUInit(void){
asm sei
CPMUSYNR=0x05; //时钟合成寄存器,SYNDIV=5
CPMUREFDIV=0x41; //时钟分频寄存器,REFDV=1
// 锁相环产生的时钟频率 fpll=2*foscclk*(SYNDIV+1)/(REFDV+1)
//对于S12G128 8MHz外部晶体振荡器,总线时钟为24MHz,片内系统时钟为48MHz
CPMUPOSTDIV=0x00; //POST分频寄存器,POSTDIV=0,fpll= fvco/(POSTDIV+1)
while((CPMUFLG & 0x08) !=0x08); //等待锁相环频率锁定
CPMUCLKS |= 0x80; //时钟选择寄存器
asm cli
}
//--------------------通道0输入捕捉初始化-------------------//
void ECT0_Init(void)
{
TSCR1_TEN = 0; // 定时器使能位. 1=允许定时器正常工作; 0=使主定时器不起作用(包括计数器)
TSCR1_TFFCA = 1; // 定时器标志位快速清除
TIOS = 0xfE; //指定其他所有通道为输出比较方式
TCTL4 = 0x01; // 设置通道0为捕捉上升沿方式
TIE = 0x01; // 禁止其他通道定时中断
TSCR2 = 0x07; //
TFLG1 = 0xff; // 清除各IC/OC中断标志位
TFLG2 = 0xff; // 清除自由定时器中断标志位
TSCR1_TEN = 1; // 定时器使能位. 1=允许定时器正常工作; 0=使主定时器不起作用(包括计数器)
}
void Delay3us(void)//
{
unsigned int j;
//for(i=0;i<time;i++)
for(j=0;j<15;j++);
}
void Delaynms(unsigned int n)
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<4000;j++);
}
//----------------------主函数-------------------------//
void main(void)
{
MCUInit();
ECT0_Init();
DDRP=0XFF;
PTP=0X00;
// DDRT=0X00;
// PTT=0X00;
EnableInterrupts;
for(;;)
{
PTP_PTP3=0;
M=PTP_PTP3;
Delaynms(1);
// Delay3us();
PTP_PTP3=1;
M=PTP_PTP3;
Delaynms(2);
// Delay3us();
// m=TC0;
// m=TCNT;
} /* wait forever */
/* please make sure that you never leave this function */
}
//----------------------------------------------------------------//
#pragma CODE_SEG NON_BANKED //定时器通道0输入捕捉中断
void interrupt 8 Timer0_Onput(void)
{
// TSCR1=0x00;
TFLG1_C0F=1; //清中断标志位
Input_Num++;
PPPP=TC0;
// PORTB=Input_Num;
if(Input_Num>=255)
{
Input_Num=0;
}
}
|
|