platform: EVM 3730
os:wince 6.0
BSP:BSP BSP_WINCE_ARM_A8 1.01.00.03
Now I want to generate a PWM Signal with the GPTimer10 and output it over the GPIO-PAD GPMC_nCS5 in muxmode 3.
but no pwm signal was generated, who can give an advice to me ?
My code listings as follows.
BOOL EnableDeviceClocks(UINT devId, BOOL bEnable)
{
OMAP_CM_REGS* pCmRegs;
......
switch (devId)
{
case OMAP_DEVICE_GPTIMER10:
pCmRegs = OALPAtoUA(OMAP_PRCM_WKUP_CM_REGS_PA);
if (bEnable)
{
SETREG32(&pCmRegs->CM_FCLKEN_xxx, CM_CLKEN_GPT10);
SETREG32(&pCmRegs->CM_ICLKEN_xxx, CM_CLKEN_GPT10);
while (INREG32(&pCmRegs->CM_IDLEST1_xxx) & CM_IDLEST_ST_GPT10);
}
else
{
CLRREG32(&pCmRegs->CM_FCLKEN1_xxx, CM_CLKEN_GPT10);
CLRREG32(&pCmRegs->CM_ICLKEN1_xxx, CM_CLKEN_GPT10);
}
break;
......
return TRUE;
}
void Test_PWM10()
{
DWORD tclr = 0;
OMAP_GPTIMER_REGS *pTimerRegs_10 = OALPAtoUA(OMAP_GPTIMER1_REGS_PA);
//enable GPTMER10 clock
EnableDeviceClocks(OMAP_DEVICE_GPTIMER10,TRUE);
// Soft reset GPTIMER and wait until finished
SETREG32(&pTimerRegs_10->TIOCP, SYSCONFIG_SOFTRESET);
while ((INREG32(&pTimerRegs_10->TISTAT) & GPTIMER_TISTAT_RESETDONE) == 0);
OUTREG32(&g_pPerfTimer->TIOCP,
0x200 | SYSCONFIG_SMARTIDLE|SYSCONFIG_ENAWAKEUP|
SYSCONFIG_AUTOIDLE);
// Select posted mode
SETREG32(&pTimerRegs_10->TSICR, GPTIMER_TSICR_POSTED);
// clear interrupts
OUTREG32(&pTimerRegs_10->TISR, 0x00000000);
// Trigger a counter reload by writing
OUTREG32(&pTimerRegs_10->TTGR, 0xFFFFFFFF);
// clear match register
OUTREG32(&pTimerRegs_10->TMAR, 0xFFFFFFFF);
// enable wakeups
//OUTREG32(&pTimerRegs_10->TWER, GPTIMER_TWER_MATCH);
// Set the load register value.
OUTREG32(&pTimerRegs_10->TLDR, 0xFFFF0000);
tclr |= GPTIMER_TCLR_AR | GPTIMER_TCLR_PT | GPTIMER_TCLR_TRG_OVERFLOW;
OUTREG32(&pTimerRegs_10->TCLR, tclr);
//start
SETREG32(&pTimerRegs_10->TCLR, GPTIMER_TCLR_ST);
}