STM32F103 多通道PWM多频率输出,TIM1~TIM4多频率可变PWM输出:TIM1_CH1(PA8)、TIM2_CH1(PA0)、TIM3_CH1(PA6)、TIM4_CH1(PB6)

本文档详细介绍了在STM32F103上实现多通道独立PWM可变频率输出时遇到的问题,特别是TIM1_CH1无法正常工作的故障。通过初始化TIM函数并调整参数,最终解决了该问题。程序中通过改变定时器的ARR和PSC值来调整PWM频率,并在主函数中动态计算占空比,实现了频率的实时调整。同时,代码还展示了如何初始化GPIO和TIM,以及如何配置PWM模式和占空比。

利用STM32F103进行多通道独立PWM可变频率输出时,遇到TIM1_CH1无法正常输出。经过研究后,成功解决。

初始化TIM函数,可传递TIM相关参数进行初始化。时钟频率72M。频率为72M/arr/psc

void TIM_PWM_Init(TIM_TypeDef* TIMx,u16 arr,u16 psc)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    TIM_OCInitTypeDef  TIM_OCInitStructure;
    GPIO_TypeDef * iGPIOx;
    uint16_t GPIO_Pinx;

    if(arr<1) arr=1;
    if(psc<1) psc=1;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);	//使能定时器1时钟
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);	//使能定时器2时钟
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);	//使能定时器3时钟
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);	//使能定时器4时钟
    GPIO_PinSet(GPIOA,GPIO_Pin_8,GPIO_Mode_AF_PP);//初始化IO
    GPIO_PinSet(GPIOA,GPIO_Pin_0,GPIO_Mode_AF_PP);
    GPIO_PinSet(GPIOA,GPIO_Pin_6,GPIO_Mode_AF_PP);
    GPIO_PinSet(GPIOB,GPIO_Pin_6,GPIO_Mode_AF_PP);

    //初始化TIM
    TIM_TimeBaseStructure.TIM_Period = arr-1; //设置在下一个更新事
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值