源代码:void PWM_init(uint16 arr){
RGB_Callback(&PWM_DateCBs);//函数注册
P0DIR= BV(3)|BV(4)|BV(5);
//设置pwm端口为外设端口,非gpio
P0SEL= BV(3)|BV(4)|BV(5);
PERCFG &=~(1<<6); //定时器1在备用位置1
PERCFG |= (3<<0); //将UART切换到备用位置2,防止占用PWM输出 T1CTL &=0; T1CNTL&=0;
T1CNTH&=0;
T1CC0L = arr%0xFF;
T1CC0H = arr/0xFF;
//ch1
T1CC1L = 200%0xFF;
T1CC1H = 200/0xFF;
T1CCTL1|= 0x2C; //ch2
T1CC2L = 500%0xFF;
T1CC2H = 500/0xFF;
T1CCTL2|= 0x2C; //ch3
T1CC3L = 600%0xFF;
T1CC3H = 600/0xFF;
T1CCTL3|= 0x2C; //star tiner1
//必须设置以下两句,否则定时器不工作, 但是我们这里只用pwm, 因此可以直接用pwm的中断, 不用t1的定时器中断, 因此不用设置
T1CCTL0|= 0x2C; // IM = 1, CMP = Clear output on compare; Mode = Compare
T1CTL|= 0x02;
}
波形图:
为啥会出现这样的波形????
Viki Shi:
推荐参考协议栈里的例程,sensorTag 及keyfob都有相关功能实现