求教CH552G的定时器问题

使用552G的定时器,程序如下


sbit led_r = P3^1;


int main( ) 

{

    CfgFsys( );                                                                //CH554时钟选择配置   

    mDelaymS(5);

mTimer0Clk12DivFsys();                                                   //T0定时器时钟设置

    mTimer_x_ModInit(0,2);                                                     //T0 定时器模式设置

    mTimer_x_SetData(0,0x3838);                                               //T0定时器赋值

    mTimer0RunCTL(1);                                                          //T0定时器启动

ET0 = 1;                                                                   //T0定时器中断开启

    EA = 1;

led_r = 0;


    while(1) {

}

}


void mTimer0Interrupt( void ) interrupt INT_NO_TMR0 using 1                //timer0中断服务程序,使用寄存器组1

{

if (led_r == 0)

led_r = 1;

else 

led_r = 0; 

}


使用逻辑分析仪测得p31输出:

1627655618188059.png

去掉R7,将led断开后,输出的波形就正常了

1627655618205767.png

原理图如下:

1627655618197679.png

在P31脚加一个300K的电阻接地后测得波形一样不正常,请问这个是哪里的问题?

您好,如果将芯片引脚悬空,引脚的输出波形正常,初步判断定时相关代码没有问题,更多可能还是外部电路导致。芯片引脚的模式是准双向,容易外部电路影响,可以尝试将引脚模式改成推挽输出再来测试波形。


只有登录才能回复,可以选择微信账号登录