[求助] msp430f5438 定时器a 求助

568760310   2012-6-6 23:15 楼主

void Init_Timer0_A5(void)
{
  TA0CTL   = 0                                               // 复位Timer0_A5, 分频系数设置为1
           | (1 << 2)                                             // 计数器清0
           | (2 << 8)                                            ; // 计数时钟设为SMCLK                                                          ;
  TA0CCR0  =  16000  - 1                                   ; // SMCK=EX2=16MHz,设置计数器溢出时间为1ms
  TA0CCTL0 = 0                                               // 初始化捕获控制
           | (1 << 4)                                                    ; // 使能比较中断
  TA0CTL  |= (1 << 4)                                      ; // 设置计数器为加计数,启动
}

 

 

小弟菜鸟。不知道上面这段程序怎么理解。TA0CTL = 0 | (1 << 2) | (2 << 8) ;主要是这种表达式不知道怎么理解。求网友帮助,小弟先谢谢了。

回复评论 (3)

怎么问题很白痴的问题吗?怎么没人理呀?
点赞  2012-6-7 13:02
我用的是F149,没见过TA0CTL这个寄存器。TA0CTL = 0 | (1 << 2) | (2 << 8):
1<<2=00000000 00000100
2<<8=00000010 00000000
0 | (1 << 2) | (2 << 8)=00000010 00000100
相当于把第3、9位置位,其他位复位
点赞  2012-7-30 13:13
补充楼上,2<<8=00000010 00000000?(2<<8=00000000 00010000?)
相当于把,2,4位置为,其他不管,不是复位
点赞  2014-3-10 14:23
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复