我想用timeB中断,开始的时候中断时间控制在1024,下一个中断时间控制在2048,然后不断的反复。我试着在中断中修改中断时间,#pragma vector = TIMERB0_VECTOR__interrupt void Timer_B (void){ P3OUT ^= 0x10; if( c(外部定义的)%2==0)
TBCCR0 = 1000; else TBCCR0 = 4
000;}但是好像没有什么效果,,请问各位,如果要改的话应该怎么改。。顺便问一下,如果一段程序中同时开启TimeA和TimeB,两者之间会有相互的影响吗,,麻烦各位了。。
此帖出自
小平头技术问答
TA和TB有些不同,TA是你往CCR0写值立马就更改了,这个根据CCR0的值和你当前的计数值不同又有不同的情况,简而言之你改变CCR0值后的下一个周期可能会不准
TB有双重缓冲,你写入CCR0的值会先进入一个缓冲寄存器,当达到一定的条件(譬如计数到CCR0)就把缓冲寄存器的值写入CCR0,这个条件是可以在寄存器中设置的,默认是立即写入,这个就跟TA一样了。
一周热门 更多>