void Init_Timers(void)
{
*pPORTG_FER |= PG6;
*pPORTG_MUX &= ~PG6;
*pTIMER0_CONFIG = 0x0019; //配置定时器为PWM 模式
*pTIMER0_PERIOD = 0x00800000; //设置周期为0x00800000 个系统时钟
*pTIMER0_WIDTH = 0x00400000; //设置脉宽为0x00400000 个系统时钟
*pTIMER_ENABLE = 0x0001; //使能Timer0
}
void Init_Interrupts(void)
{
*pSIC_IAR0 = 0xffffffff;
*pSIC_IAR1 = 0xffffffff;
*pSIC_IAR2 = 0xfffffff5; //配置中断等级数据为4
register_handler(ik_ivg12, TIMER0_ISR); //注册中断等级为12,标识符为TIMER0_ISR
*pSIC_IMASK1 = 0x00000001; //开启中断
}
EX_INTERRUPT_HANDLER(TIMER0_ISR) //TIMER0_ISR 的中断函数
{
*pTIMER_STATUS = 0x0001; //清除定时器中断标志
//printf("timer0 interrupt !\n"); //打印信息
}
程序可以进入TIMER的中断。
但是示波器上观察不到timer0引脚的输出。
如果没有看错的话PG6引脚具有TMR0的功能吧。
请版主帮忙看看程序是什么地方出了问题?
「该帖子被 AD7685 在 2013-08-07 14:53:04 编辑过」