野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 29049|回复: 6

定时器的两个通道同时输出PWM只有一个成功

[复制链接]
发表于 2020-11-30 14:45:37 | 显示全部楼层 |阅读模式
这是我IO口的配置代码  请大家帮我看看   为什么只有一个通道二成功了呢
void TIM2_init(u16 per, u16 psc)
{
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);  
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA , ENABLE);                // 使能A端口时钟
    //RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE , ENABLE);

    TIM_TimeBaseInitTypeDef TIMMOTOR;    // 时基初始化结构体
    TIM_OCInitTypeDef TIMPWM;            // 定时器输出比较结构体  
    GPIO_InitTypeDef GPIO_motor1;
    //GPIO_InitTypeDef GPIO_motor2;

    // GPIO引脚复用为 TIM输出引脚
    GPIO_PinAFConfig(GPIOA, GPIO_Pin_0,  GPIO_AF_TIM2);  // 将PA0 复用到TIM2输出引脚
    GPIO_PinAFConfig(GPIOA, GPIO_Pin_1,  GPIO_AF_TIM2);  // 将PA1 复用到TIM2输出引脚

    GPIO_motor1.GPIO_Mode = GPIO_Mode_AF;    // 定时器端口    复用
    GPIO_motor1.GPIO_OType = GPIO_OType_PP;
    GPIO_motor1.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 ;
    GPIO_motor1.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_motor1.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_Init(GPIOA,&GPIO_motor1);

    TIM_TimeBaseStructInit(&TIMMOTOR);               //根据默认模式初始化
    TIMMOTOR.TIM_ClockDivision = TIM_CKD_DIV1;       //设置分割时钟
    TIMMOTOR.TIM_CounterMode = TIM_CounterMode_Up;   //向上计数
    TIMMOTOR.TIM_Period = per;                       //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
    TIMMOTOR.TIM_Prescaler = psc;                    //分频系数   
    TIM_TimeBaseInit(TIM2, &TIMMOTOR);

    TIMPWM.TIM_OCMode = TIM_OCMode_PWM1;               // PWM1/PWM2
    TIMPWM.TIM_OutputState = TIM_OutputState_Enable;  // 比较输出使能
    TIMPWM.TIM_OCPolarity = TIM_OCPolarity_High;       // 当定时器计数值小于CCR1_Val时为高电平
    TIMPWM.TIM_Pulse = 0;                              //  外部改变占空比 可不写
    // 输出通道初始化  1 2 通道
    TIM_OC1Init(TIM2, &TIMPWM);    // PA0
    TIM_OC2Init(TIM2, &TIMPWM);    // PA1

    TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);   // OC1 预装载寄存器使能
    TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);   // OC2 预装载寄存器使能
    TIM_ARRPreloadConfig(TIM2, ENABLE);                 // TIM2 ARR预装载寄存器使能
    TIM_Cmd(TIM2, ENABLE);                              // 开启定时器2
}


回复

使用道具 举报

 楼主| 发表于 2020-11-30 14:46:07 | 显示全部楼层
please  dai dai wo
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-30 14:46:37 | 显示全部楼层
用的野火F407的核心板
回复 支持 反对

使用道具 举报

发表于 2020-12-1 16:25:10 | 显示全部楼层
初始占空比为0,可能会没输出的
回复 支持 反对

使用道具 举报

发表于 2020-12-1 17:34:16 | 显示全部楼层
配置问题。直接配置PA0是作为TIM2_CH1_ETR,而不是IM2_CH1。
回复 支持 反对

使用道具 举报

发表于 2020-12-2 17:54:24 | 显示全部楼层
我看有人也遇到过这个问题,你去瞅瞅,希望对你有帮助。https://www.firebbs.cn/forum.php ... &extra=page%3D2
回复 支持 反对

使用道具 举报

发表于 2021-1-29 12:12:09 | 显示全部楼层
两个PWM分别看一下是不是有输出,然后看一下是不是某个定时器没有开
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 23:38 , Processed in 0.044398 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表