野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18798|回复: 11

用stm32控制流水灯变速的问题 求大神~

[复制链接]
发表于 2014-9-27 22:18:49 | 显示全部楼层 |阅读模式
我用的是mini   按键PA0和PC13控制加速和减速 下面是中断函数
void EXTI15_10_IRQHandler(void)
{
       
                if(EXTI_GetITStatus(EXTI_Line13) != RESET)
                {
                        delay_ms(100);
                                data+=100;
                        if(data > 1000)    速度达到1000最慢时在按速度变小
                        {
                                data=100;
                               
                        }
               
               
               
                        EXTI_ClearITPendingBit(EXTI_Line13);
                }
}
void EXTI0_IRQHandler(void)
{

                if(EXTI_GetITStatus(EXTI_Line0) != RESET)
                {
                                delay_ms(100);
                                data-=100;
                                if(data < 100)   速度达到最快变回最慢
                        {
                                data=1000;       
                        }
                       
         
               
                        EXTI_ClearITPendingBit(EXTI_Line0);
                }
}


int main(void)
{
  LED_GPIO_Config();
        EXTI_PC13_Config();
        EXTI_PA0_Config();
        CLI();        
        SEI();
        data=100;

                while(1)
        {
               

                        LED_GO();
        }
}

下载运行后可以实现变速 但是我data是由100变到1000 应该有10个速度级别  可是在开发板上 按键按到第五下速度就变回最快了 并没有10个级别的变化  我觉得是data数据混乱了  但是怎么解决呢  求帮助~~~~~~~~
回复

使用道具 举报

 楼主| 发表于 2014-9-27 22:24:01 | 显示全部楼层
顶贴~~~~~~~~~~~~~
回复 支持 反对

使用道具 举报

发表于 2014-9-28 00:03:16 | 显示全部楼层
你这个data值是延时的时间参数吧,你发我一份,我看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-28 00:04:20 | 显示全部楼层
shenyudong 发表于 2014-9-28 00:03
你这个data值是延时的时间参数吧,你发我一份,我看看

怎么发给你?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-28 00:07:34 | 显示全部楼层
shenyudong 发表于 2014-9-28 00:03
你这个data值是延时的时间参数吧,你发我一份,我看看

http://pan.baidu.com/s/1sjuLepv
回复 支持 反对

使用道具 举报

发表于 2014-9-28 08:52:43 | 显示全部楼层
按键消抖,可以在中断里设置断点,每按一下程序都会在断点暂停并检查参数
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-28 11:49:18 | 显示全部楼层
        @fire
回复 支持 反对

使用道具 举报

发表于 2014-9-28 18:42:26 | 显示全部楼层
六楼刀口说的没错,虽然我觉得应该不是按键消抖的问题,但这么简单的程序你自己软件仿真一下么~就当学习怎么用软件仿真了噻~问题能够自己解决才更有意义么~
回复 支持 反对

使用道具 举报

发表于 2014-9-28 23:18:52 | 显示全部楼层
不知道你搞定没有啊,根据楼上调试,确定就是中断函数的问题,我设置了五个档位,data就有5个值,理应依次变大,或变小,可它有些值是跳跃的,说这么多,你懂得
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-30 14:58:55 | 显示全部楼层
shenyudong 发表于 2014-9-28 23:18
不知道你搞定没有啊,根据楼上调试,确定就是中断函数的问题,我设置了五个档位,data就有5个值,理应依次变 ...

最近有事~没来得及回复,大家见谅
我单步调试的时候,每次按键按下中断发生data加100完全能实现,且有10个档位
但是整体运行时就不行啊,不能实现10次~整体运行值就跳变了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-30 15:07:43 | 显示全部楼层
刀_口 发表于 2014-9-28 08:52
按键消抖,可以在中断里设置断点,每按一下程序都会在断点暂停并检查参数


最近有事~没来得及回复,大家见谅
我单步调试的时候,每次按键按下中断发生data加100完全能实现,且有10个档位
但是整体运行时就不行啊,不能实现10次~
按键消抖我觉得应该有,我试过注释掉,然后整体运行就更混乱了-_-||
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-30 15:23:28 | 显示全部楼层
在板子上看效果就是只运行了前5个data值,然后就跳回100了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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