按照例程写的代码
[mw_shl_code=c,true]初始函数[/mw_shl_code]
[mw_shl_code=c,true]void TIM3_PWM_Init(u16 arr,u16 psc)
{
RCC->APB1ENR |= 1<<1;
RCC->APB2ENR |= 1<<3;
GPIOB->CRL &= 0XFF0FFFFF;
GPIOB->CRL |= 0X00B00000;
RCC->APB2ENR |= 1<<0;//?????¨?ú?±??
AFIO->MAPR &= 0XFFFFF3FF;
AFIO->MAPR |= 1<<11;
TIM3->ARR = arr;
TIM3->  SC = psc;
TIM3->CCMR1 |= 7<<12;
TIM3->CCMR1 |= 1<<11;
TIM3->CCER |= 1<<4;
TIM3->CR1 = 0X0080;
TIM3->CR1 |= 0X01;
}[/mw_shl_code]
[mw_shl_code=c,true]测试代码
TIM3_PWM_Init(899,0);
/*LCD_Init();
LCD_Write_Char(0,0,'S');
LCD_Write_Char(1,0,'p');
LCD_Write_Char(2,0,':');
LCD_Write_String(0,1,"sdlen:");
LCD_Write_String(10,1,"good!");*/
while(1)
{
delay_ms(10);
if(dir) led0pwmval ++;
else led0pwmval --;
if(led0pwmval > 300) dir = 0;
if(led0pwmval == 0) dir = 1;
LED0_PWM_VAL = led0pwmval;
}[/mw_shl_code]
但是我的灯闪的特别厉害。分别把899,和300这两个值改了好多次,也没有看到明显变化。
还有,我是想最终控制直流电机。那么他的pwm频率该是多大,LED0_PWM_VAL变化范围是多少?
|