新手请教一个关于按键的问题

2019-08-13 19:50发布

新手有个关于按键的问题请教一下,程序如下:
[mw_shl_code=applescript,true]int main(void)
{
SysTick_Config(SystemCoreClock / 1000);         //1MS
void GetPowerKey(void)
{  
  if(PWK)
  {         u16  KeyCount=0;
                 u32 keyTime=0;
                 delay_ms(30);
                 keyTime=g_RunTime;
                if(PWK)
                 {       
                         KeyCount=3000;         
                        while(PWK&&KeyCount)
                        { KeyCount--;
                          delay_ms(1);
                        }
                        if((g_RunTime-keyTime)>2000)
                        {                                   
         printf("ÕyÔú1Ø»ú...... ");                                 
                                 PlayMusic(2,guanjizhong);       
                                 delay_ms(1000);
                                 
                                 if(PWK==0)
                                 {
                                         delay_ms(100);
                                         MPWROFF(1);       
                                 }                  //1رÕμçÔ′

                        }
                }
          }
   }
}[/mw_shl_code]

其中,g_RunTime的定义
[mw_shl_code=applescript,true]void SysTick_Handler(void)
{
        if(g_RunTime<0xfffffffe)
    g_RunTime++;
  else
    g_RunTime=0;

}[/mw_shl_code]

在仿真中,执行到if((g_RunTime-keyTime)>2000)就执行不了,或者程序跑飞,不知道什么原因,请各位指教
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
jian0052
1楼-- · 2019-08-13 21:44
正点原子 发表于 2017-10-15 00:19
仿真跟踪,进入中断服务函数了么?

查到了,一直在响应USART3的串口中断,但是以前用同样的程序没出现过问题,不知道是不是硬件上的问题
jian0052
2楼-- · 2019-08-14 00:26
MPWROFF(1); //关闭电源
龙之谷
3楼-- · 2019-08-14 02:30
 精彩回答 2  元偷偷看……
liuliupiaoxue
4楼-- · 2019-08-14 04:53
好像有中断的程序,硬件仿真会跑飞掉,待求证。
这个问题可能跟中断配置有关,你的程序一直跑中断去了,仿真不了,可以程序和中断中加打印显示信息......
jian0052
5楼-- · 2019-08-14 09:14
龙之谷 发表于 2017-10-14 14:53
逐步注释掉if((g_RunTime-keyTime)>2000)函数里的内容,看是哪里有问题

基本都注释完了,结果还是一样的,不知原因就跑飞了
进不去if((g_RunTime-keyTime)>2000)的原因找到了,是两者之差小于2000,但前面的循环都超过3秒了,是不是PWK的问题,这是个输入端口,软件设置浮空,硬件下拉
jian0052
6楼-- · 2019-08-14 09:42
liuliupiaoxue 发表于 2017-10-14 16:09
好像有中断的程序,硬件仿真会跑飞掉,待求证。
这个问题可能跟中断配置有关,你的程序一直跑中断去了,仿 ...

我这里除了SysTick_Handler(void)中断,没有别的了

一周热门 更多>