一般使用stm32内置的pwm相关寄存器(主要隶属于时钟寄存器部分)。
f103系列库函数具体配置流程:
1、使能定时器3和相关IO口时钟。
使能定时器3时钟:RCC_APB1PeriphClockCmd();
使能GPIOB时钟:RCC_APB2PeriphClockCmd();
2、初始化IO口为复用功能输出。函数:GPIO_Init();
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
3、这里我们是要把PB5用作定时器的PWM输出引脚,所以要重映射配置,
所以需要开启AFIO时钟。同时设置重映射。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);
4、初始化定时器:ARR,PSC等:TIM_TimeBaseInit();
5、初始化输出比较参数:TIM_OC2Init();
6、使能预装载寄存器: TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
7、使能定时器。TIM_Cmd();
8、不断改变比较值CCRx,达到不同的占空比效果:TIM_SetCompare2();
具体寄存器可以看stm32芯片手册,或者正点原子、野火等专业教程。