TIM4为主,TIM3为从模式(可根据需要更改定时器)。寄存器版本
不同的需求,需要使用到的定时器不同,能够使用的引脚也不同,因此可根据下图更换主定时器即输出pwm的定时器,寄存器为TIMx_SMCR
- 更换高级定时器TIM8和TIM1。
- 更换主和从的通用定时器
总体思路
- TIM4为主模式发送触发信号,TIM2为从模式接收触发信号从而启动。通过设置TIM2->SMCR为外部时钟模式1,进行上升沿或者下降沿的计数。
- 而此处的计数即为你想要产生的脉冲数,TIM2计数溢出中断,在中断函数中关闭主、从定时器。
- 设置TIM4的重加载值arr和比较值ccr即可对产生脉冲的频率和占空比进行设置。
完整代码
定时器4和定时器3的配置
#include "timer.h"
#include "led.h"
void TIM4_PWM_Init(u16 arr,u32 psc,u16 ccr)
{
RCC->APB1ENR|=1<<2; //TIM4时钟使能
RCC->APB2ENR|=1<<3; //B端口时钟使能
GPIOB