CH55X定时器

你好,请教几个问题:

1)如何将CH554芯片的time0定时器中断服务程序设置成1ms中断一次?

2)CH554芯片示例程序是将time1做为UART0的波特率发生器,怎么样将T2设置成UART0的波特率发生器?参考例程改成下面的代码,跑不起来。

voidmInitSTDIO2( )

{

    UINT32 x;

    UINT8 x2; 


    SM0 = 0;

    SM1 = 1;

    SM2 = 0;                                                                   //串口0使用模式1

                                                                               //使用Timer1作为波特率发生器

    RCLK = 1;                                                                  //UART0接收时钟

    TCLK = 1;                                                                  //UART0发送时钟

    PCON |= SMOD;

    x = 10 * FREQ_SYS / UART0_BUAD / 16;                                       //如果更改主频,注意x的值不要溢出                            

    x2 = x % 10;

    x /= 10;

    if ( x2 >= 5 ) x ++;                                                       //四舍五入


   C_T2 = 0;

   CP_RL2 = 0;

    T2MOD = T2MOD | bTMR_CLK | bT2_CLK;                                        //Timer2时钟选择

    TH2 = 0-x;                                                                 //12MHz晶振,buad/12为实际需设置波特率

    TR2 = 1;                                                                   //启动定时器1

    TI = 1;

    REN = 1;                                                                   //串口0接收使能

}


3)如何将T0, T1, T2三个定时器都启用的话,建议使用的中断周期是多少?

谢谢!

1:为了设置1ms中断,您可以将定时器初值设置成65536-(FOSC/1000),这样每过1ms就会进入中断。


2:将T2设置成波特率发生器可以进行如下配置:

voidmInitSTDIO2( )

{

    UINT32 x;

    UINT8 x2; 


    SM0 = 0;

    SM1 = 1;

    SM2 = 0;                                                                   //串口0使用模式1

                                                                               //使用Timer1作为波特率发生器

    RCLK = 1;                                                                  //UART0接收时钟

    TCLK = 1;                                                                  //UART0发送时钟

    PCON |= SMOD;

    x = 10 * FREQ_SYS / UART0_BUAD / 16;                                       //如果更改主频,注意x的值不要溢出                            

    x2 = x % 10;

    x /= 10;

    if ( x2 >= 5 ) x ++;                                                       //四舍五入

    T2MOD = T2MOD | bTMR_CLK | bT2_CLK;                                        //Timer2时钟选择

    RCAP2=0-x;

    TR2 = 1;                                                                   //启动定时器1

    TI = 1;

    REN = 1;                                                                   //串口0接收使能

}



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