按键控制pwm输出为什么实现不了?

2019-07-20 09:27发布

我就把例程里的按键和pwm融合在一起,但是怎么弄都没办法实现:
1.在按键里放pwm的代码
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "timer.h"

int main(void)
{
        u16 led0pwmval=0;
        vu8 key=0;       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
        TIM3_PWM_Init(899,0);         //不分频。PWM频率=72000000/900=80Khz
        delay_init();                     //延时函数初始化          
        LED_Init();                             //LED端口初始化
        KEY_Init();          //初始化与按键连接的硬件接口
        LED1=0;                                        //先点亮红灯
        while(1)
        {
                key=KEY_Scan(0);        //得到键值
                   if(key)
                {                                                  
                        switch(key)
                        {                                 
                                case WKUP_PRES:
                                        led0pwmval+=10;
                                        break;
                                case KEY2_PRES:
                                        if(led0pwmval<100)
                                                led0pwmval=0;
                                        else
                                                led0pwmval-=100;
                                        break;
                                case KEY1_PRES:         
                                        if(led0pwmval<10)
                                                led0pwmval=0;
                                        else
                                                led0pwmval-=10;
                                        break;
                                case KEY0_PRES:
                                        led0pwmval+=100;
                                        break;
                        }
                }
                else delay_ms(10);
               
                if(led0pwmval>300)
                                led0pwmval=300;
                TIM_SetCompare2(TIM3,led0pwmval);
        }         
}
根本按了没反应。

在pwm代码里加按键的代码也是一样,只有灯自己变暗变亮,按键没用,为什么啊?io口又没有冲突
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
xingshou
1楼-- · 2019-07-20 11:32
只可能是初始化顺序的问题
apricity
2楼-- · 2019-07-20 12:38
 精彩回答 2  元偷偷看……
xingshou
3楼-- · 2019-07-20 14:18
apricity 发表于 2018-1-31 12:59
没有呼吸灯的代码,还会变暗变亮估计是你代码没烧进去吧,猜的。

会变暗变量是把按键的代码放到pwm里去的,原来pwm的代码没删,所以会变亮变暗,但就是按键没用
apricity
4楼-- · 2019-07-20 18:12
用排除法试下,你可以先检查下你按键是否使能成功,就是把switch里写一些有明显现象的动作,比如灯状态翻转,确定按键可以用了,然后再去调占空比的值。
apricity
5楼-- · 2019-07-20 18:22
 精彩回答 2  元偷偷看……
xingshou
6楼-- · 2019-07-20 22:51
apricity 发表于 2018-1-31 14:16
用排除法试下,你可以先检查下你按键是否使能成功,就是把switch里写一些有明显现象的动作,比如灯状态翻转 ...

我就是这样的啊,,,碰见几个帖子遇到这样的问题,有的已经解决了,可惜只是说了一声解决了,没说怎么解决的

一周热门 更多>