论坛

使用AT32UC3C0512C的计时器时出现问题

开始于 simp ... @ hotmail.com 2013年5月7日
我已经尝试了几天了,将AT32UC3C0512C的计时器配置为
产生一个简单的方波。我确定时钟已经到了计时器
模块,但没有输出。我在这里发布我的代码。有人可以吗
帮助我吗?自从我这样做以来已经很长时间了
不成功。我正在尝试生成一个带有
此代码中的占空比很大。 Ra compare设置为0,因此脉冲 should
从一开始就为高,并应保持高电平,直到计数器低于 Rc
相比。由于Rc比较值很大,几乎等于最大值
由16位寄存器实现,因此占空比应该很高。这里 is
我的代码:

void timer_initialize(void)
{
AVR32_TC0.channel [0] .ccr = 0x00000001;
AVR32_TC0.channel [0] .cmr = 0x00018004; //只比较效果
AVR32_TC0.channel [0] .ra = 0x00000000;
AVR32_TC0.channel [0] .rc = 0x00007FFF;
AVR32_TC0.bcr = 0x00000000;
AVR32_TC0.bmr = 0x00000015;
}

int main(无效)
{

// **************************************************** ******************** //配置\
e电源管理器和SCIF用于64MHz CPU频率
// **************************************************** ********************

//启用OSC0
AVR32_SCIF.unlock = 0xAA000000 | AVR32_SCIF_OSCCTRL; //解锁oscctrl register
AVR32_SCIF.oscctrl [0] = 0x00010001; //启用osc0
而((AVR32_SCIF.pclksr&0x1)); //等待oscctr0再次锁定,直到 we
继续

//启用PLL0 = 66Mhz,等待其锁定
AVR32_SCIF.unlock = 0xAA00001C;
AVR32_SCIF.pll [0] = 0x3F0F0119;
而((AVR32_SCIF.pclksr& 0x10) );

//启用PLL1 = 132Mhz,等待其锁定
AVR32_SCIF.unlock = 0xAA000020;
AVR32_SCIF.pll [1] = 0x3F0A0109;
而((AVR32_SCIF.pclksr& 0x20) );

//从Fcpu开始设置等待状态> 33MHz
AVR32_FLASHC.FCR.fws = 1;

//使能PLL0作为系统时钟源
AVR32_PM.unlock = 0xAA000000;
AVR32_PM.mcctrl = 3;

//选择PBC频率
while(!(AVR32_PM.SR.ckrdy));;
AVR32_PM.unlock = 0xAA000014;
AVR32_PM.pbcsel = 0x00000087;
// **************************************************** ********************

//启用对应于PB19的GPIO引脚TC0_A0的外围功能
AVR32_GPIO.port [1] .gper = 0xFFF7FFFF;
AVR32_GPIO.port [1] .oder = 0xFFFFFFFF;
AVR32_GPIO.port [1] .pmr0&= 0xFFF7FFFF;
AVR32_GPIO.port [1] .pmr1&= 0xFFF7FFFF;
AVR32_GPIO.port [1] .pmr2&= 0xFFF7FFFF;

timer_initialize();

而(1)
{
}
返回0;
}