⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mx21_gpt.c

📁 MX21_InitCodeLib.rar freescale mx21系列ARM芯片9328的WINCE5.0下初始化代码
💻 C
字号:
/**********************************************************************
*
*         (C) COPYRIGHT 2004 FREESCALE, INC.
*         ALL RIGHTS RESERVED
*
*
*     Group/Division:  WMSG/MMDO
*
*     Description:
*
*     Related Specifications:
*
*     Errata:
*
*     File Name:        MX21_GPT.c
*     Revision Number:  0.1
*     Author(s):        Ryan Johnson
*     Date created:     27 May 2004
*     Revision History:
*        Date      Rev     Description
*        ----      ---     -----------
*        28May04  0.1     First draft
*
**********************************************************************/

#include "MX21_GPT.h"

//WaitCycles
void
gpt3_WaitCycles(uint32_t cycles)
{
 uint32_t _fclk_perclk1_ratio = ( PLLCLK_PCDR1.bits.PERDIV1 + 1 + (PLLCLK_CSCR.bits.PRESC) + 1 - 1 )
                         /((PLLCLK_CSCR.bits.PRESC) + 1);
 gpt3_EN(Disable);
 gpt3_Clock(GPT_PERCLK1);
 gpt3_SetPrescaler(0);
 gpt3_RestartMode();
 //gpt3_ForgetfulCounter();
 
 if(_fclk_perclk1_ratio==1){
  _fclk_perclk1_ratio = ( (PLLCLK_CSCR.bits.PRESC) +1 + PLLCLK_PCDR1.bits.PERDIV1 + 1 - 1 )
                         /(PLLCLK_PCDR1.bits.PERDIV1 + 1);
  gpt3_SetComparator(cycles * _fclk_perclk1_ratio);
 } else {
  gpt3_SetComparator((cycles + _fclk_perclk1_ratio - 1)/_fclk_perclk1_ratio);
 }
 gpt3_EN(Enable);
 do {
  int q=0;
 } while (!gpt3_CompareInterruptStatus());
 gpt3_ClearCompare();
 gpt3_EN(Disable);
 return;
} 

//WaitTime
void
gpt3_WaitTime(uint32_t microseconds)
{
 gpt3_EN(Disable);
 gpt3_Clock(GPT_32KHZ);
 gpt3_SetPrescaler(0);
 gpt3_RestartMode();
 //gpt3_ForgetfulCounter();
 gpt3_SetComparator(microseconds/60 + (microseconds+61)/62);
 gpt3_EN(Enable);
 while (1 != gpt3_CompareInterruptStatus());
 gpt3_ClearCompare();
 gpt3_EN(Disable);
 return;
}
 

//SetComparator
 void
gpt1_SetComparator(uint32_t COMPARE)
{
 GPT1_TCMP.bits.COMPARE=COMPARE;
 return;
}
 void
gpt2_SetComparator(uint32_t COMPARE)
{
 GPT2_TCMP.bits.COMPARE=COMPARE;
 return;
}
 void
gpt3_SetComparator(uint32_t COMPARE)
{
 GPT3_TCMP.bits.COMPARE=COMPARE;
 return;
}

//SoftReset
 void
gpt1_SoftReset(void)
{
 GPT1_TCTL.bits.SWR=1;
 return;
}
 void
gpt2_SoftReset(void)
{
 GPT2_TCTL.bits.SWR=1;
 return;
}
 void
gpt3_SoftReset(void)
{
 GPT3_TCTL.bits.SWR=1;
 return;
}

//CounterClear
 void
gpt1_CounterClear(uint32_t EN)
{
 GPT1_TCTL.bits.CC=EN;
 return;
}
 void
gpt2_CounterClear(uint32_t EN)
{
 GPT2_TCTL.bits.CC=EN;
 return;
}
 void
gpt3_CounterClear(uint32_t EN)
{
 GPT3_TCTL.bits.CC=EN;
 return;
}

//PulseLow
 void
gpt1_PulseLow(void)
{
 GPT1_TCTL.bits.OM=0;
 return;
}
 void
gpt2_PulseLow(void)
{
 GPT2_TCTL.bits.OM=0;
 return;
}
 void
gpt3_PulseLow(void)
{
 GPT3_TCTL.bits.OM=0;
 return;
}

//Toggle
 void
gpt1_Toggle(void)
{
 GPT1_TCTL.bits.OM=1;
 return;
}
 void
gpt2_Toggle(void)
{
 GPT2_TCTL.bits.OM=1;
 return;
}
 void
gpt3_Toggle(void)
{
 GPT3_TCTL.bits.OM=1;
 return;
}

//RestartMode
 void
gpt1_RestartMode(void)
{
 GPT1_TCTL.bits.FRR=0;
 return;
}
 void
gpt2_RestartMode(void)
{
 GPT2_TCTL.bits.FRR=0;
 return;
}
 void
gpt3_RestartMode(void)
{
 GPT3_TCTL.bits.FRR=0;
 return;
}

//FreeRunMode
 void
gpt1_FreeRunMode(void)
{
 GPT1_TCTL.bits.FRR=1;
 return;
}
 void
gpt2_FreeRunMode(void)
{
 GPT2_TCTL.bits.FRR=1;
 return;
}
 void
gpt3_FreeRunMode(void)
{
 GPT3_TCTL.bits.FRR=1;
 return;
}

//SetCaptureTrigger
 void
gpt1_SetCaptureTrigger(gpt_cap gpt_trigger_type)
{
 GPT1_TCTL.bits.CAP=gpt_trigger_type;
 return;
}
 void
gpt2_SetCaptureTrigger(gpt_cap gpt_trigger_type)
{
 GPT2_TCTL.bits.CAP=gpt_trigger_type;
 return;
}
 void
gpt3_SetCaptureTrigger(gpt_cap gpt_trigger_type)
{
 GPT3_TCTL.bits.CAP=gpt_trigger_type;
 return;
}

//CaptureInterrupt
 void
gpt1_CaptureInterrupt(uint32_t EN)
{
 GPT1_TCTL.bits.CAPT_EN=EN;
 return;
}
 void
gpt2_CaptureInterrupt(uint32_t EN)
{
 GPT2_TCTL.bits.CAPT_EN=EN;
 return;
}
 void
gpt3_CaptureInterrupt(uint32_t EN)
{
 GPT3_TCTL.bits.CAPT_EN=EN;
 return;
}


//CompareInterrupt
 void
gpt1_CompareInterrupt(uint32_t EN)
{
 GPT1_TCTL.bits.COMP_EN=EN;
 return;
}
 void
gpt2_CompareInterrupt(uint32_t EN)
{
 GPT2_TCTL.bits.COMP_EN=EN;
 return;
}
 void
gpt3_CompareInterrupt(uint32_t EN)
{
 GPT3_TCTL.bits.COMP_EN=EN;
 return;
}

//Clock
 void
gpt1_Clock(gpt_clock_type gpt_clock)
{
 GPT1_TCTL.bits.CLKSOURCE=gpt_clock;
 return;
}
 void
gpt2_Clock(gpt_clock_type gpt_clock)
{
 GPT2_TCTL.bits.CLKSOURCE=gpt_clock;
 return;
}
 void
gpt3_Clock(gpt_clock_type gpt_clock)
{
 GPT3_TCTL.bits.CLKSOURCE=gpt_clock;
 return;
}

//EN
 void
gpt1_EN(uint32_t EN)
{
 GPT1_TCTL.bits.TEN=EN;
 return;
}
 void
gpt2_EN(uint32_t EN)
{
 GPT2_TCTL.bits.TEN=EN;
 return;
}
 void
gpt3_EN(uint32_t EN)
{
 GPT3_TCTL.bits.TEN=EN;
 return;
}

//SetPrescaler
 void
gpt1_SetPrescaler(uint32_t gpt_prescaler)
{
 GPT1_TPRER.bits.PRESCALER=gpt_prescaler;
 return;
}
 void
gpt2_SetPrescaler(uint32_t gpt_prescaler)
{
 GPT2_TPRER.bits.PRESCALER=gpt_prescaler;
 return;
}
 void
gpt3_SetPrescaler(uint32_t gpt_prescaler)
{
 GPT3_TPRER.bits.PRESCALER=gpt_prescaler;
 return;
}

//CaptureInterruptStatus
 uint32_t
gpt1_CaptureInterruptStatus(void)
{
 return GPT1_TSTAT.bits.CAPT;
}
 uint32_t
gpt2_CaptureInterruptStatus(void)
{
 return GPT2_TSTAT.bits.CAPT;
}
 uint32_t
gpt3_CaptureInterruptStatus(void)
{
 return GPT3_TSTAT.bits.CAPT;
}

//CompareInterruptStatus
 uint32_t
gpt1_CompareInterruptStatus(void)
{
 return GPT1_TSTAT.bits.COMP;
}
 uint32_t
gpt2_CompareInterruptStatus(void)
{
 return GPT2_TSTAT.bits.COMP;
}
 uint32_t
gpt3_CompareInterruptStatus(void)
{
 return GPT3_TSTAT.bits.COMP;
}

//ClearCapture
 void
gpt1_ClearCapture(void)
{
 GPT1_TSTAT.bits.CAPT=1;
 return;
}
 void
gpt2_ClearCapture(void)
{
 GPT2_TSTAT.bits.CAPT=1;
 return;
}
 void
gpt3_ClearCapture(void)
{
 GPT3_TSTAT.bits.CAPT=1;
 return;
}

//ClearCompare
 void
gpt1_ClearCompare(void)
{
 GPT1_TSTAT.bits.COMP=1;
 return;
}
 void
gpt2_ClearCompare(void)
{
 GPT2_TSTAT.bits.COMP=1;
 return;
}
 void
gpt3_ClearCompare(void)
{
 GPT3_TSTAT.bits.COMP=1;
 return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -