PWM模式一下,CNT小于CCRx时输出有效电平,大于CCRx时输出无效电平。PWM模式二反之。(有效电平要自行设置是高or低电平)
一般配置步骤
- 使能定时器x和相关IO口时钟。
- 使能定时器x时钟:RCC_APB1PeriphClockCmd();
- 使能GPIOx时钟:RCC_APB2PeriphClockCmd();
- 初始化IO口为复用功能输出。函数:GPIO_Init();
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
- **根据需要是否重映射
- 这里我们是要把Pxx用作定时器x输出引脚,所以要重映射配置。(例子这里是部分重映射,自己使用时应当查表看是否需要重映射以及是什么重映射)
- 使能复用端口时钟: RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
- 部分重映射(此处可根据需要省略): GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);
**/
初始化定时器:ARR,PSC等:TIM_TimeBaseInit();
初始化输出比较参数: TIM_OCxInit(); //(x为定时器的第x个通道)
使能预装载寄存器: TIM_OCxPreloadConfig(TIMx, TIM_OCPreload_Enable); //(x为定时器的第x个通道)
/ * 注释部分为需要开启中断时使用
- 使能指定的TIMx溢出中断中断,允许更新中断TIM_IT_Update: TIM_ITConfig(TIMx,TIM_IT_Update,ENABLE);
- 初始化NVIC中断优先级参数:NVIC_Init()
- 主函数main.c中要有中断优先级分组:NVIC_PriorityGroupConfig();
*/
使能定时器。TIM_Cmd();
不断改变比较值CCRx,达到不同的占空比效果:TIM_SetComparex(); //(x为定时器的第x个通道)
/*
- 编写中断服务函数 TIMx_IRQHandler();
**/