// PWM frequency:
// 0 - 48 kHz
// 1 - 12 kHz
// 2 -  3 kHz
enum { MOTOR_FREQUENCY = 1 };

// Configure Timer 2 w. 250x period.
T2CON = 1 << 2 | MOTOR_FREQUENCY /* << 0 */;

我明白了吗?
11111111算术左移0或1或2的2
指:
T2CON = 1 << 2 | 0 = 1111 1100
T2CON = 1 << 2 | 1 = 1111 1000
T2CON = 1 << 2 | 2 = 1111 0000

问候你,索尼特

最佳答案

上下文:
TCON2是PIC mcu上的定时器寄存器,最后两位配置预分频器。
T2CKPS[1:0]=0b00=0=>/1预分频器
T2CKPS[1:0]=0b01=1=>/4预分频器
T2CKPS[1:0]=0b1x=2或3=>/16预分频器
第2位实际上打开了计时器,因此它总是需要被设置为执行任何操作,因此1 << 2(实际上应该写为1 << T2CON_TMR2ON_bit,在一些CPU配置头中定义了T2CON_TMR2ON_bit
这三个设置分别是0b1000b1010b110,它们打开计时器,并调整预分频器以获得注释中提到的频率。
此外,对一个元素使用enum几乎毫无意义;请使用#define

关于c - 按位运算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3546803/

10-08 22:44