void TIM3_Pulse_Init(void)
{
RCC->APB1ENR|=1<<1; //
RCC->APB2ENR|=1<<2; //
GPIOA->CRL&=0X00FFFFFF; //PA6,7
GPIOA->CRL|=0XB3000000; //
TIM3->ARR=65535; //
TIM3-> SC=2; //
TIM3->DIER|=1<<2; //
TIM3->DIER|=1<<4; //
TIM3->CCMR1|=3<<12; //CH2 ·
TIM3->CCMR1|=0<<11; //CH2
TIM3->CCMR2|=3<<12; //
TIM3->CCMR2|=0<<11; //
TIM3->CCER|=0<<5; //
TIM3->CCER|=1<<4; //
TIM3->CCER|=0<<13; //
TIM3->CCER|=1<<12; //
TIM3->CCR2=ox494; //
TIM3->CCR4=600; //
MY_NVIC_Init(1,3,TIM3_IRQChannel,2);//
TIM3->CR1|=0x01; //
}
void TIM3_IRQHandler(void)
{
if(TIM3->SR&0X0004)//????/±???2????
{
u16 Capture;
Capture=TIM3->CCR2;
if((M1_Subdivide_NOW_Pulse-M1_Pulse)<M1_UP_NOW_Pulse) //????
{
M1_Pulse--;
M1_NOW_arr=M1_NOW_arr-Speed_Curve[t1];
TIM3->CCR2=Capture+M1_NOW_arr;
t1++;
}
else if((M1_Pulse<M1_UP_NOW_Pulse)&&(M1_Pulse>0)) //????
{
M1_Pulse--; //???????? ????????1
M1_NOW_arr=M1_NOW_arr+Speed_Curve[t1];
TIM3->CCR2=Capture+M1_NOW_arr;
t1--;
}
else if(M1_Pulse==0)
{
M1_Pulse=M1_Subdivide_NOW_Pulse;
TIM3->CCR2=M1_Start_arr;
switch(M1_Status)
{
case 3: M1_DIR=0;//???ú???ò
M1_Status=4;
break;
case 4: M1_DIR=1;//???ú???ò
M1_Status=3;
break;
}
// else TIM3->CR1&=~0x01; //?????¨?±?÷3
}
else
{
M1_Pulse--;
TIM3->CCR2=Capture+M1_NOW_MAX_arr;
}
}
TIM3->SR&=~(1<<2);//????????±ê????
}
电机用手摸着有震动感,但是不转。是不是板子上和这个引脚接着的其他元件对它的电平有影响啊?
|