野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15436|回复: 10

PWM输出信号如何控制多个LED呼吸灯

[复制链接]
发表于 2016-8-5 18:41:02 | 显示全部楼层 |阅读模式
我想用PWM控制两个LED灯,但是用TIM3的时候只有PB0有用,变成PB1呼吸灯就不能实现,  而TIM3改成TIM4 之后也就不能实现了,我想知道是不是不同的TIM口对应GPIO口不一样的,每个TIM口只能控制指定IO口。我本来是想用TIM3控制PB0,TIM4控制PB1,但是PB1只亮 不改变,PB0会实现呼吸灯效果
回复

使用道具 举报

发表于 2016-8-5 18:59:09 | 显示全部楼层
把相应的宏打开就可以了,这里面实现了 PB0 PB1 PB5 三个 GPIO 都可以控制呼吸灯
TIM—呼吸灯.zip (349.78 KB, 下载次数: 125)
1.jpg
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-5 19:19:24 | 显示全部楼层
fire 发表于 2016-8-5 18:59
把相应的宏打开就可以了,这里面实现了 PB0 PB1 PB5 三个 GPIO 都可以控制呼吸灯

可是我并不是用这样的方式,我并没有宏定义那些东西 ,而是直接用了源文件中定义的名称  
我是直接这样写的  这样子并不需要你那样打开宏吧
NVIC_InitTypeDef NVIC_InitStructure;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
        NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
       
        NVIC_Init(&NVIC_InitStructure);
       
        //NVIC_InitStructure.NVIC_IRQChannel=TIM4_IRQn;
        //NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
        //NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;
        //NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        //NVIC_Init(&NVIC_InitStructure);
       
}
//ÅäÖÃTIM3êä3&#246WMDÅoÅμÄÄ£ê½

static void TIMx_Mode_Config(void)
{
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
        TIM_OCInitTypeDef TIM_OCInitStructure;
       
        RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3,ENABLE);
        //ÅäÖûù′¡¶¨ê±Æ÷ TIM3
        TIM_TimeBaseStructure.TIM_Period=255;
        TIM_TimeBaseStructure.TIM_Prescaler = 1999;                                                                   
                       
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
        //TIM4
        //RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3,ENABLE);
       
        //TIM_TimeBaseStructure.TIM_Period=255;
        //TIM_TimeBaseStructure.TIM_Prescaler = 1999;                                                                   
  //TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;                       
  //TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
  //TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
       
        //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_Low;
        TIM_OC3Init(TIM3,&TIM_OCInitStructure);  //ê1Äüí¨μà3
       
        TIM_OC3PreloadConfig(TIM3,TIM_OCPreload_Enable); //ê1ÄüԤװÔØ
       
        TIM_ARRPreloadConfig(TIM3,ENABLE);  //ê1ÄüTIM3ÖØÔؼÄ′æÆ÷ARR
        TIM_Cmd(TIM3,ENABLE);  //ê1Äü¶¨ê±Æ÷3
        TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);//ê1ÄüupdateÖD¶Ï
        NVIC_Config_PWM();
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-5 19:22:42 | 显示全部楼层
fire 发表于 2016-8-5 18:59
把相应的宏打开就可以了,这里面实现了 PB0 PB1 PB5 三个 GPIO 都可以控制呼吸灯

我不是想只实现一个 是想同时实现两个
回复 支持 反对

使用道具 举报

发表于 2016-8-5 19:24:39 | 显示全部楼层
maoxiaohao 发表于 2016-8-5 19:19
可是我并不是用这样的方式,我并没有宏定义那些东西 ,而是直接用了源文件中定义的名称  
我是直接这样 ...

1、那你就把我的宏全部去掉即可。有个要注意的地方就是  PB1 PB5 要重映射 才能 有定时器的功能。

2、现在是我提供了可以的代码给你,你应该对比下你的代码跟我的有什么区别,而不是叫我去看你的代码错在了哪里。既然正确的代码都有了,就要自己花时间去寻找错误,而不是完全依赖我。
回复 支持 反对

使用道具 举报

发表于 2016-8-5 19:25:43 | 显示全部楼层
maoxiaohao 发表于 2016-8-5 19:19
可是我并不是用这样的方式,我并没有宏定义那些东西 ,而是直接用了源文件中定义的名称  
我是直接这样 ...

我猜最有可能的就是你初始化GPIO的时候没有重映射,因为PB0的默认第二功能就是定时器的功能,而PB1跟PB5不是,要想实现定时器的功能,必须重映射。
回复 支持 反对

使用道具 举报

发表于 2016-8-5 19:26:31 | 显示全部楼层
maoxiaohao 发表于 2016-8-5 19:22
我不是想只实现一个 是想同时实现两个

那也是可以的                     ,不影响
回复 支持 反对

使用道具 举报

发表于 2016-11-1 10:58:18 | 显示全部楼层
刚好我也在调,跟楼主一样的问题,打开另外两个GPIO的宏还是不行,只是点亮了灯却没有呼吸效果
回复 支持 反对

使用道具 举报

发表于 2016-11-1 11:06:53 | 显示全部楼层
fire 发表于 2016-8-5 19:26
那也是可以的                     ,不影响

重新映射什么意思,我以为只需要在头文件那定义一下另外两个灯的宏,然后在初始化函数那改一下相关的管脚就可以了
回复 支持 反对

使用道具 举报

发表于 2016-11-1 11:27:18 | 显示全部楼层
C:\Users\Administrator\Desktop\QQ图片20161101112401.png
C:\Users\Administrator\Desktop\QQ图片20161101112443.png
这样改不行
回复 支持 反对

使用道具 举报

发表于 2016-11-1 11:28:00 | 显示全部楼层
C:\Users\Administrator\Desktop
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 14:22 , Processed in 0.033421 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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