📄 timer.c
字号:
/*
* Copyright (C) 2001, Spectrum Digital, Inc. All Rights Reserved.
*/
#include "5509.h"
#include "util.h"
unsigned short int Timer_Test()
{
PC55XX_TIMER pTIM0 = (PC55XX_TIMER)C55XX_TIM0_ADDR;
// Stop the timer
SetMask(pTIM0 -> tcr, TCR_TSS | TCR_TLB);
// Set the prescaler to the PLL multiplier to get 12MHz
WriteField(pTIM0 -> prsc, dspclk.pllmult - 1, PRSC_TDDR);
// Set the timer interval to generate 2MHz toggle clock
// Timer divides by count - 1 so 12MHz / 2Mhz - 1 = 6 - 1 = 5
Write(pTIM0 -> prd, 5);
// Set up the timer control register and start running
// TOUT toggles at 2MHz to generate a 1MHz square wave
WriteMask(pTIM0 -> tcr,
TCR_FUNC_TOUT | TCR_SOFT | TCR_FREE | TCR_ARB | TCR_CP_TOGGLE,
TCR_IDLE_EN | TCR_FUNC | TCR_TLB | TCR_SOFT | TCR_FREE | TCR_PWID | TCR_ARB | TCR_TSS | TCR_CP);
return 0;
}
unsigned short int Timer_32k()
{
PC55XX_TIMER pTIM0 = (PC55XX_TIMER)C55XX_TIM0_ADDR;
// Stop the timer
SetMask(pTIM0 -> tcr, TCR_TSS | TCR_TLB);
// Set the prescaler to divide by pll mult, generate 12MHz clock
WriteField(pTIM0 -> prsc, dspclk.pllmult -1, PRSC_TDDR);
// Set the timer interval to generate a 65536Hz toggle clock
// 120MHz / 32768 = 3662.11, 3662 / 2 = 1831, count = 1831 - 1
// Write(pTIM0 -> prd, 1830);
Write(pTIM0 -> prd, 182);
// Set up the timer control register and start running
WriteMask(pTIM0 -> tcr,
TCR_FUNC_TOUT | TCR_SOFT | TCR_FREE | TCR_ARB | TCR_CP_TOGGLE,
TCR_IDLE_EN | TCR_FUNC | TCR_TLB | TCR_SOFT | TCR_FREE | TCR_PWID | TCR_ARB | TCR_TSS | TCR_CP);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -