//-------------------------------------------------------------------------*
// 文件名: OUTTPMCh.c                                                         *
// 说  明: 定时器和定时器通道设置函数源文件                                *
//-------------------------------------------------------------------------*

//头文件
#include "OUTTPMCh.h"

//-------------------------------------------------------------------------*
//函数名: OUTTPMChInit                                                        *
//功  能: 定时器输出比较功能设置                                           * 
//参  数:                                                                  *
//    (1)TPMNo:定时器号(1-2)                                               *
//    (2)CHNo:通道号(定时器1通道号0-5,定时器2通道号0-1)                    *
//    (3)Period:输出比较周期(0-65535)                                      *
//返  回:无                                                                *
//说  明:无                                                                *
//-------------------------------------------------------------------------*
void OUTTPMChInit(uint8 TPMNo,uint8 CHNo,uint16 Period)
{
    //定时器号参数溢出处理
    if(TPMNo>2)
      TPMNo=2;
    else if(TPMNo<1)
      TPMNo=1;
    
    AW60_TPM_CSTR(TPMNo) = 0x00;
    //计数寄存器初值 = 0x0000
    AW60_TPM_CNTH(TPMNo) = 0x00;
    AW60_TPM_CNTL(TPMNo) = 0x00;      

    //预置寄存器设定值,即计数器到达此值后清零，重新计数
    AW60_TPM_MODH(TPMNo) = (uint8)(Period >> 8);
    AW60_TPM_MODL(TPMNo) = (uint8)Period;

    //设置定时器1状态和控制寄存器
    //分频因子:64,定时器输出比较功能
    AW60_TPM_CSTR(TPMNo)|=0
                        |AW60_TPM_CSTR_PS1
                        |AW60_TPM_CSTR_PS2
                        |AW60_TPM_CSTR_CLKSB;
                             
    if(TPMNo==1) //定时器1
    {
      //通道号参数溢出处理
      if(CHNo>5) 
        CHNo=5;
      else if(CHNo<0)
        CHNo=0;
      
      //通道数值值寄存器初值
      AW60_TPM1_CHVH(CHNo)=(uint8)(Period >> 8);
      AW60_TPM1_CHVL(CHNo)=(uint8)Period;
      
      //设置定时器1通道状态和控制寄存器
      AW60_TPM1_CHSCSTR(CHNo)|=0
                             |AW60_TPM_CHSCSTR_ELSA
                             |AW60_TPM_CHSCSTR_MSA;
    } 
    else if(TPMNo==2) //定时器2
    {
      //通道号参数溢出处理
      if(CHNo>1) 
        CHNo=1;
      else if(CHNo<0)
        CHNo=0;
        
      //通道数值值寄存器初值
      AW60_TPM2_CHVH(CHNo)=(uint8)(Period >> 8);
      AW60_TPM2_CHVL(CHNo)=(uint8)Period;
      
      //设置定时器2通道状态和控制寄存器
      AW60_TPM2_CHSCSTR(CHNo)|=0
                             |AW60_TPM_CHSCSTR_ELSA
                             |AW60_TPM_CHSCSTR_MSA;
    }
}
