标题: 为什么STM32单片机配置四路PWM,但是只有PWM通道4可以用,求大佬们解答 [打印本页]

作者: rong666    时间: 2023-4-9 15:36
标题: 为什么STM32单片机配置四路PWM,但是只有PWM通道4可以用,求大佬们解答
// 定时器频率 = 系统时钟频率 / (预分频器 + 1) / (自动重装载值 + 1)
    // 定时器预分频器设置为72-1,计数器自动重装载值设置为2000-1,周期为1/20kHz=50us
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; // 定义定时器时间基准结构体变量

    TIM_OCInitTypeDef TIM_OCInitStructure; // 定义定时器输出比较结构体变量

    /* 初始化定时器8为PWM模式 */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE);
    // 使能TIM8的时钟,使用APB2总线上的定时器8

    // 定时器预分频器设置为72-1,计数器自动重装载值设置为2000-1,周期为1/20kHz=50us
    TIM_TimeBaseStructure.TIM_Prescaler = 72 - 1;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseStructure.TIM_Period = 2000 - 1;
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
    TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
    TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure); // 初始化TIM8

    // PWM模式选择、输出比较通道和输出极性配置
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    TIM_OCInitStructure.TIM_Pulse = 0;
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

    TIM_OC1Init(TIM8, &TIM_OCInitStructure);          // 配置TIM8的比较输出通道1
    TIM_OC1PreloadConfig(TIM8, TIM_OCPreload_Enable); // 使能TIM8比较输出通道1的预装载寄存器

    TIM_OC2Init(TIM8, &TIM_OCInitStructure);          // 配置TIM8的比较输出通道2
    TIM_OC2PreloadConfig(TIM8, TIM_OCPreload_Enable); // 使能TIM8比较输出通道2的预装载寄存器

    TIM_OC3Init(TIM8, &TIM_OCInitStructure);          // 配置TIM8的比较输出通道3
    TIM_OC3PreloadConfig(TIM8, TIM_OCPreload_Enable); // 使能TIM8比较输出通道3的预装载寄存器

    TIM_OC4Init(TIM8, &TIM_OCInitStructure);          // 配置TIM8的比较输出通道4
    TIM_OC4PreloadConfig(TIM8, TIM_OCPreload_Enable); // 使能TIM8比较输出通道4的预装载寄存器

  TIM_CtrlPWMOutputs(TIM8, ENABLE);   // MOE 主输出使能
  TIM_ARRPreloadConfig(TIM8, ENABLE); //使能TIMx在ARR上的预装载寄存器
  TIM_Cmd(TIM8, ENABLE);              //使能TIM8


作者: rong666    时间: 2023-4-9 15:37
其他通道不可以




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1