问题1 CH558 TIMER2捕捉模式时,对T2EX引脚的脉冲进行捕捉,请问如何对TIMER2计数器的计数溢出进行计数?
我做试验时,在timer2中断程序中用UINT8 cnt对溢出中断计数,但发现cnt计数经常溢出且TIMER2溢出中断频率很快.中断程序如下:
/*******************************************************************************
* Function Name : mTimer2Interrupt()
* Description : CH559定时计数器2定时计数器中断处理函数
*******************************************************************************/
void mTimer2Interrupt( void ) interrupt INT_NO_TMR2 using 2 //timer2中断服务程序,使用寄存器组1
{
mTimer2RunCTL( 0 ); //关定时器
cnt++;
LED=!LED;
if(EXF2) //T2ex电平变化中断中断标志
{
EXF2 = 0; //清空T2ex捕捉中断标志
count0 = count1; //备份上一次的捕获值
((UINT8 *)&count1)[3] = RCAP2L; //保存本次的捕获值
((UINT8 *)&count1)[2] = RCAP2H;
((UINT8 *)&count1)[1] = cnt;
((UINT8 *)&count1)[0] = 0;
length = count1 - count0; //计算两次捕获的差值,即得到时间长度
((UINT8 *)&length)[0] = 0;
finshFlag=1;
}
mTimer2RunCTL(1 );
}
问题2:选用内部12M 时钟,如果不用CfgFsys( ) 函数配置,是否Fsys=Fosc=12M? 另外请问MASK_PLL_MULT如何设置PLL时钟倍频系数?因为复位值是11000b=18(hex),如果我要PLL倍频2倍,如何设置MASK_PLL_MULT?
谢谢!