void TIM3_PWM_Init(void) //用来作为控制舵机
{
//此部分需手动修改IO口设置
RCC->APB1ENR|=1<<1; //TIM3时钟使能
RCC->APB2ENR|=1<<4; //使能PORTC时钟
RCC->APB2ENR|=1<<0; //AFIO辅助功能时钟使能
AFIO->MAPR|=3<<10; //定时器3的重映像引脚(CH1/PC6,CH2/PC7,CH3/PC8,CH4/PC9)。
GPIOC->CRL&=0X00FFFFFF; //PC6,7输出
GPIOC->CRL|=0XBB000000; //复用功能输出
GPIOC->CRH&=0XFFFFFF00; //PC8,9输出
GPIOC->CRH|=0X000000BB; //复用功能输出
GPIOC->ODR|=15<<6; //PC6,7,8,9上拉
TIM3->ARR=19999; //pwm频率=50Hz
TIM3->  SC=71; //
TIM3->CCMR1|=6<<4; //CH1 PWM1模式
TIM3->CCMR1|=1<<3; //CH1预装载使能
TIM3->CCMR1|=6<<12; //CH2 PWM1模式
TIM3->CCMR1|=1<<11; //CH2预装载使能
TIM3->CCMR2|=6<<4; //CH3 PWM1模式
TIM3->CCMR2|=1<<3; //CH3预装载使能
TIM3->CCMR2|=6<<12; //CH4 PWM1模式
TIM3->CCMR2|=1<<11; //CH4预装载使能
TIM3->CCER|=1<<0; // CH1输出使能
TIM3->CCER|=1<<4; // CH2输出使能
TIM3->CCER|=1<<8; // CH3输出使能
TIM3->CCER|=1<<12; // CH4输出使能
TIM3->CR1=0x0080; //ARPE使能
TIM3->CR1|=1<<0; //使能定时器3
// TIM3->CCR3=1500; //占空比=7.5% 1500us脉冲
PWM_CH1=1500; //占空比=7.5% 1500us脉冲
PWM_CH2=1500;
PWM_CH3=1500;
PWM_CH4=1500; //改变PWM_CHx的值就改变占空比(舵机控制的范围1000---2000)
} |