OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3029|回复: 2

我使用TIM8的通道3和4,输出的PWM信号为什么不是0-3.3V的信号呢?

[复制链接]

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2018-10-10
在线时间
18 小时
发表于 2020-6-24 11:18:10 | 显示全部楼层 |阅读模式
10金钱

求助,占空比低的时候还接近0-3.3V的脉冲,等占空比提高,信号就向下移动了,这是怎么回事呢?
微信图片_20200624111512.jpg

初始化代码如下:
void TIM8_PWM_Init(u16 arr,u16 psc)
{  
        GPIO_InitTypeDef GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE);        //
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , ENABLE);  //使能GPIO外设时钟使能 |RCC_APB2Periph_AFIO
                                                                                    

        //设置该引脚为复用输出功能,输出TIM8 CH4的PWM脉冲波形
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;                                 //TIM8_Ch4
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                  //复用推挽输出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
       
        TIM_DeInit(TIM8);

    /* Time Base configuration */
    TIM_TimeBaseStructure.TIM_Period            = arr;
    TIM_TimeBaseStructure.TIM_Prescaler         = psc;
    TIM_TimeBaseStructure.TIM_CounterMode       = TIM_CounterMode_Up;
    TIM_TimeBaseStructure.TIM_ClockDivision     = 0;
    TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;

    TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);

    TIM_OCInitStructure.TIM_OCMode             = TIM_OCMode_PWM2;
    TIM_OCInitStructure.TIM_OutputState        = TIM_OutputState_Enable;  
    TIM_OCInitStructure.TIM_Pulse                   = 0;
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
       
        //新加代码20200624
        TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset ;
        TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;
        TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
       
        TIM_OC3Init(TIM8, &TIM_OCInitStructure);
    TIM_OC4Init(TIM8, &TIM_OCInitStructure);
       
        TIM_CtrlPWMOutputs(TIM8,ENABLE);
       
        TIM_OC3PreloadConfig(TIM8, TIM_OCPreload_Enable);
        TIM_OC4PreloadConfig(TIM8, TIM_OCPreload_Enable);
       
    TIM_ARRPreloadConfig(TIM8, ENABLE);

    TIM_Cmd(TIM8, ENABLE);
               
        TIM_SetCompare3(TIM8, 300);
        TIM_SetCompare4(TIM8, 300);
}

最佳答案

查看完整内容[请看2#楼]

看示波器通道2的设置里是不是选了交流耦合。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

3402

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8691
金钱
8691
注册时间
2020-5-11
在线时间
4183 小时
发表于 2020-6-24 11:18:11 | 显示全部楼层
看示波器通道2的设置里是不是选了交流耦合。
专治疑难杂症
回复

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2018-10-10
在线时间
18 小时
 楼主| 发表于 2020-6-24 12:21:41 | 显示全部楼层
LcwSwust 发表于 2020-6-24 11:18
看示波器通道2的设置里是不是选了交流耦合。

谢谢,果然是,
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-29 10:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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