// 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
)
这三个设置分别是0b100
、0b101
和0b110
,它们打开计时器,并调整预分频器以获得注释中提到的频率。
此外,对一个元素使用enum
几乎毫无意义;请使用#define
。
关于c - 按位运算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3546803/