1、GPIOB4为非常规io口,系统默认为jtag占用,因此先进行重映射
JTAG_Set(SWD_ENABLE); //关闭 JTAG,开启 SWD
RCC->APB2ENR|=1<<0; //使能AFIO
AFIO->MAPR&=0XFFFFF3FF; //对应位清零
AFIO->MAPR|=1<<11; //tim3 重映射 10,tim3_ch1对应b4口
2、初始化GPIOB4
RCC->APB2ENR|=1<<3; //GPIOB时钟使能
GPIOB->CRL&=0XFFF0FFFF; //初始化B4口
GPIOB->CRL|=0X000B0000; //4口复用推挽输出
3、初始化tim3_ch1
RCC->APB1ENR|=1<<1; //使能tim3时钟
TIM3->ARR=arr; //设定计数器自动重装值,决定周期
TIM3->PSC=psc; //预分频器设置
TIM3->CCMR1|=7<<4; //CH1 PWM2 模式
TIM3->CCMR1|=1<<3; //CH1 预装载使能
TIM3->CR1=0x0080; //ARPE 重装载使能
TIM3->CCER|=1<<1; //设置极性
TIM3->CCER|=1<<0; //OC1 输出使能
TIM3->CR1|=0x01; //使能定时器3计数
4、改变占空比为x (0~arr)
TIM3->CCR1 =x;