OpenEdv-开源电子网

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

关于修改pwm占空比后亮度无变化的问题

[复制链接]

1

主题

3

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2019-7-14
在线时间
25 小时
发表于 2019-8-18 10:10:44 | 显示全部楼层 |阅读模式
1金钱
萌新求助:
按下三个key1,key0,wk三个键LED0灯一直都是常亮的,亮度没有变化。
其中按下wk键时LED0灯亮度不变,LED1熄灭。说明关于按键,led部分代码是没有问题的,问题应该出在pwm输出的代码上。
请问我的代码的问题在哪里呢?




2.png
1.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2019-7-14
在线时间
25 小时
 楼主| 发表于 2019-8-18 10:47:34 | 显示全部楼层
#include"delay.h"
#include"led.h"
#include"key.h"
#include"pwm.h"
#include"sys.h"
int main (void)
        { u8 t;
    int led0pwmval=0;
                KEY_Init();
                 LED_Init();
                 delay_init();         
    LED1=0;
                TIM1_PWM_Init(899,0);
                 TIM_SetCompare1(TIM1,led0pwmval);
                while(1)
                {
                t=KEY_Scan(0);
                        switch(t)
                        {
                                case KEY0_PRES:
                                {
                                           led0pwmval=led0pwmval-60;
                                 if(led0pwmval<0)led0pwmval=0;
                               
                                 TIM_SetCompare1(TIM1,led0pwmval);       
        }
                         break;
                                case KEY1_PRES:
       {
                                                 led0pwmval=led0pwmval+60;
                                 if(led0pwmval>360)led0pwmval=360;
                                 TIM_SetCompare1(TIM1,led0pwmval);          
       }
                                break;
                                case WKUP_PRES:
                                        TIM_SetCompare1(TIM1,0);       
                                LED1=1;
                                break;
        default:
                                delay_ms(10);       
                        }
                                }
                }




#include"pwm.h"

void TIM1_PWM_Init(u16 arr, u16 psc)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //TIM_CH1
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
       
        TIM_TimeBaseStructure.TIM_Period = arr;
        TIM_TimeBaseStructure.TIM_Prescaler =psc;
        TIM_TimeBaseStructure.TIM_ClockDivision = 0;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
        TIM_TimeBaseInit(TIM1, &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;
        TIM_OC1Init(TIM1, &TIM_OCInitStructure);  
       
        TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);          
       
        TIM_ARRPreloadConfig(TIM1, ENABLE);
       
        TIM_Cmd(TIM1, ENABLE);  
}

回复

使用道具 举报

4

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
680
金钱
680
注册时间
2019-7-28
在线时间
61 小时
发表于 2019-8-19 11:39:24 | 显示全部楼层
请在修改周期之前停止PWM,修改后再打开。
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2019-8-19 15:43:46 | 显示全部楼层
用示波器看PWM输出波形
回复

使用道具 举报

7

主题

175

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1327
金钱
1327
注册时间
2019-7-11
在线时间
165 小时
发表于 2019-8-25 09:27:40 | 显示全部楼层
分频一下试试看
是不是频率太高了肉眼分辨不了
世界和平
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-28 14:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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