小弟先开发一款产品,遇到需要使用两个定时器中断的问题。
5535芯片支持3个软件可编程定时器,现在碰到的问题是,定时器0可以产生定时中断,而定时器1,2也能计数,但无法产生定时中断,不得要领。
TI官方给出的例程是定时器0的程序,修改起来也方便,但是我还是无法实现定时器1,2的中断问题,请大神赐教。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
小弟先开发一款产品,遇到需要使用两个定时器中断的问题。
5535芯片支持3个软件可编程定时器,现在碰到的问题是,定时器0可以产生定时中断,而定时器1,2也能计数,但无法产生定时中断,不得要领。
TI官方给出的例程是定时器0的程序,修改起来也方便,但是我还是无法实现定时器1,2的中断问题,请大神赐教。
SHOURONG HOU 说:我现在使用的是5535的板子,但是CSL是5505的,查看了源文件,debug到vector.asm发现底层的中断向量表的中断入口是timer0 的,不知道是不是这个原因,我现在配置timer1,无法进入中断,不知道怎么解决,看官方的资料,这个入口地址应该可以响应timer1啊,不知道是不是芯片本身的bug?????
timer0, timer1, timer2最终是合成一个中断TINT给CPU的,所以vector.asm里写的timer0没有关系,在ISR里可以去判断TIAFR寄存器看是哪个timer产生的中断。
SHOURONG HOU 说:可以置1啊
你现在是两个timer一起开吗?TIAFR在中断子程序中需要手动清0,才会去响应下个中断。
1. timer0, timer1是独立的定时器,不会配了timer0才能用timer1.
2. 两个定时器使用的是同一个中断,不存在中断优先级的问题。
检查一下进入timer中断子程序后是否对TIAFR进行判断并对相应位写1清0,对INTM也要写0使能。