u16 pulse;
//定时器2CH2
//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void PWM_Init(u16 arr,u16 psc)
{
//此部分需手动修改IO口设置
RCC->APB1ENR|=1<<0; //TIM2时钟使能
RCC->APB2ENR|= 1<<2; //使能PORTA时钟
GPIOA->CRL&= 0XFFFFFF0F;//PA1输出
GPIOA->CRL|= 0X000000B0;//复用功能输出
GPIOA->ODR|= 1<<1;//PA1上拉
TIM2->ARR = arr;//设定计数器自动重装值
TIM2->

SC = psc;//预分频器不分频
// TIM2->CCR2 = (arr+1)/2; //占空比为50%
TIM2->CCMR1 |= 7<<12; //CH2 PWM2模式
TIM2->CCMR1 |= 1<<11; //CH2预装载使能
TIM2->CCER |= 1<<4; //TIM2 OC2 PA1 输出使能
TIM2->CR1 |= 0x8000; //ARPE使能
TIM2->CR1 |= 0x0001; //使能定时器2
MY_NVIC_Init(1,3,TIM2_IRQChannel,2);//抢占1,子优先级3,组2
}
void TIM2_IRQHandler(void)
{
if(TIM2->SR&0X0001)//更新中断
{
pulse--;
if(pulse==0)
{
TIM2->ARR=0;
TIM2->CCR2=0;
}
}
TIM2->SR&=~(1<<0);//清除中断标志位
}
想利用定时器2的更新中断进行电机的位置控制,麻烦诸位帮忙看一下这个更新中断设置的对不对?
另外我这个更新中断是PWM每个周期都会进中断一次吗?
新手小白,求指导。