OpenEdv-开源电子网

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

做了个娃娃机,但是最后的程序出了点问题,不知道如何解决

[复制链接]

4

主题

16

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2018-9-5
在线时间
5 小时
发表于 2018-9-24 23:05:56 | 显示全部楼层 |阅读模式
5金钱
主程序:
#include "stm32f10x.h"
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "motion.h"
#include "moto.h"
#include "timer.h"
#include "oled.h"
#include "bmp.h"

int jump;
int times = 0;
int timer3 = 0;

void delayms(u16 tim)
{
        u16 p=0;
        while(tim--)
        {
                p=12000;
                while(p--);
        }
}


void oled_display()
{
                OLED_ShowCHinese(0,0,0);//佳
                OLED_ShowCHinese(18,0,1);//臻
                OLED_ShowCHinese(36,0,2);//牌
                OLED_ShowCHinese(54,0,3);//抓
                OLED_ShowCHinese(72,0,4);//娃
                OLED_ShowCHinese(90,0,5);//娃
                OLED_ShowCHinese(108,0,6);//机
                OLED_ShowCHinese(0,3,7);//欢
                OLED_ShowCHinese(18,3,8);//迎
                OLED_ShowCHinese(36,3,9);//使
                OLED_ShowCHinese(54,3,10);//用
                OLED_ShowCHinese(72,3,11);//请
                OLED_ShowCHinese(90,3,12);//投
                OLED_ShowCHinese(108,3,13);//币
          OLED_ShowCHinese(0,6,14);//可
    OLED_ShowCHinese(18,6,15);//玩
    OLED_ShowCHinese(66,6,16);//次
          OLED_ShowCHinese(108,6,17);//秒
}
//中断抓娃娃程序1;
void star1(void)
{
  TIM_Cmd(TIM3, DISABLE);//开中断
        TIM_ITConfig(TIM3,TIM_IT_Update,DISABLE ); //使能指定的TIM3中断,允许更新中断
        timer3=0;
        OLED_ShowNum(80,6,timer3,3,16);
        TIM_SetCompare1(TIM4,1955);
  IA1=1;
  IB1=0;
        delayms(2000);
  IA1=0;
  IB1=0;
        TIM_SetCompare1(TIM4,1860);
        delayms(2000);
        while (limit_up == 1)
        {
            IA1=0;
            IB1=1;
        }
  IA1=0;
  IB1=0;

        while (limit_b == 1)
        {
                b_stepmotor();
        }
       
        while (limit_r == 1)
        {
                r_stepmotor();
        }
       
        delayms(1000);
  TIM_SetCompare1(TIM4,1955);
        delayms(2000);
       
        jump = 1;
        times = times - 1;
        OLED_ShowNum(36,6,times,3,16);

}



//抓娃娃程序2;
void star2(void)
{
        TIM_Cmd(TIM3, DISABLE);//开中断
        TIM_ITConfig(TIM3,TIM_IT_Update,DISABLE ); //使能指定的TIM3中断,允许更新中断
        timer3=0;
        OLED_ShowNum(80,6,timer3,3,16);
        TIM_SetCompare1(TIM4,1955);
  IA1=0;
  IB1=1;
        delayms(2000);
  IA1=0;
  IB1=0;
        TIM_SetCompare1(TIM4,1860);
        delayms(2000);
        if(limit_up != 0)
        {
                while (limit_up != 0)
                {
                IA1=1;
                IB1=0;
                }
        }       
  IA1=0;
  IB1=0;
       
        while (limit_b == 1)
        {
                b_stepmotor();
        }
        while (limit_r == 1)
        {
                r_stepmotor();
        }
        delayms(2000);
        TIM_SetCompare1(TIM4,1955);
        delayms(2000);
        jump = 1;
        times = times-1;
        OLED_ShowNum(36,6,times,3,16);

}

int main(void)
{

           TIM4_PWM_Init(1999,719);
           delay_init();             //延时初始化        
           KEY_Init();
           OLED_Init();                        //初始化OLED  
                 OLED_Clear();
           oled_display();
          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
          TIM3_Int_Init(9999,7199);//10Khz的计数频率,计数到5000为500ms
        while(1)
{
                jump = 0;
          TIM_SetCompare1(TIM4,1955);

       
        if (key2 == 0)
        {
          while(key2 == 0);
                delay_ms(20);
                if (key2 == 1)
                {
                times =times+1;
                }
        }
       
        OLED_ShowNum(36,6,times,3,16);
        if (key == 0  &  times!=0)
        {
               
                while(key == 0);       
                delay_ms(20);
                        if (key == 1)
                        {
                                TIM_Cmd(TIM3, ENABLE);//开中断
                                TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断
                                while (jump == 0)
                                {
                                        move();
                                        if (key == 0)
                                        {
                                                while(key == 0);
                                                delay_ms(20);
                                                if (key == 1)
                                         {

                                                         TIM_SetCompare1(TIM4,1955);
                                                        IA1=0;
                                                        IB1=1;
                                                        delayms(2000);
                                                        IA1=0;
                                                        IB1=0;
                                                        TIM_SetCompare1(TIM4,1900);
                                                        delayms(2000);
                                                        while (limit_up == 1)
                                                        {
                                                          IA1=1;
                                                          IB1=0;
                                                        }
                                                        IA1=0;
                                                        IB1=0;
                                                       
                                                        while (limit_b == 1)
                                                        {
                                                                b_stepmotor();
                                                        }
                                                        while (limit_r == 1)
                                                        {
                                                                r_stepmotor();
                                                        }
                                                        delayms(2000);
                                                        TIM_SetCompare1(TIM4,1955);
                                                        delayms(2000);
                                                        jump = 1;
                                                        times = times-1;
                                                        OLED_ShowNum(36,6,times,3,16);
                                                 
                                   }
                                  }
                          }
                        jump = 0;
               
       

}   
               
}
       
       
       
}

}

[page


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

使用道具 举报

4

主题

16

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2018-9-5
在线时间
5 小时
 楼主| 发表于 2018-9-24 23:06:22 | 显示全部楼层
#include "motion.h"
#include "usart.h"
#include "delay.h"


void TIM4_PWM_Init(u16 arr,u16 psc)
{
        GPIO_InitTypeDef GPIO_InitStructure;//初始化gpio结构体
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;//初始化定时器结构体
        TIM_OCInitTypeDef TIM_OCInitStruct;//定时器通道结构体
       
        /***********************************************************************/
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);//使能定时器2时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能AFIO时钟复用和gpioa
  /***********************************************************************/
       
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOB,&GPIO_InitStructure);
        /***********************************************************************/
        //初始化定时器2
       
        TIM_TimeBaseInitStructure.TIM_Period=arr;
        TIM_TimeBaseInitStructure.TIM_Prescaler=psc;
        TIM_TimeBaseInitStructure.TIM_ClockDivision=0;
        TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitStructure);
        /***********************************************************************/
        //初始化定时的通道1
        TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM2;
        TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;
        TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;
        TIM_OC1Init(TIM4,&TIM_OCInitStruct);
        /***********************************************************************/
        //
         TIM_OC1PreloadConfig(TIM4,TIM_OCPreload_Enable);
         TIM_Cmd(TIM4,ENABLE);
       
}
回复

使用道具 举报

4

主题

16

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2018-9-5
在线时间
5 小时
 楼主| 发表于 2018-9-24 23:06:44 | 显示全部楼层
#include "moto.h"
#include "delay.h"
#include "usart.h"
#include "sys.h"


void KEY_Init(void) //IO初始化
{
        GPIO_InitTypeDef GPIO_InitStructure3;
        GPIO_InitTypeDef GPIO_InitStructure1;
        GPIO_InitTypeDef GPIO_InitStructure2;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);//使能PORTA
        GPIO_InitStructure2.GPIO_Pin  = GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_15|GPIO_Pin_9;//KEY0-KEY2
        GPIO_InitStructure2.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入       
        GPIO_InitStructure1.GPIO_Pin  = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_0;//KEY0-KEY2
        GPIO_InitStructure1.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
       
        GPIO_InitStructure3.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_13|GPIO_Pin_14;  
  GPIO_InitStructure3.GPIO_Mode = GPIO_Mode_Out_PP;   
  GPIO_InitStructure3.GPIO_Speed = GPIO_Speed_50MHz;
       
        GPIO_Init(GPIOA, &GPIO_InitStructure1);//初始化GPIOE2,3,4
  GPIO_Init(GPIOB, &GPIO_InitStructure2);//初始化GPIOE2,3,4
  GPIO_Init(GPIOB, &GPIO_InitStructure3);
}

void Step_Control_1(u8 dir1,u16 period1)
{   
    DIR_1 = dir1;
    STEP_1 = 1;
    delay_us(1);
    STEP_1 = 0;
    delay_us(period1);   
}



void Step_Control_2(u8 dir2,u16 period2)
{   
    DIR_2 = dir2;
    STEP_2 = 1;
    delay_us(1);
    STEP_2 = 0;
    delay_us(period2);   
}

//运动子程序;
void move()
{
        //判断前右限位是否触碰
        if (limit_f == 0 && limit_r == 0)
        {       
                  if (back == 0)
                        {
                                b_stepmotor();
                        }
                        else if (left == 0)
                        {
                                l_stepmotor();
                        }
               
        }
        //判断前左限位是否触碰
        else if (limit_f == 0 && limit_l == 0)
        {
                         if (back == 0)
                        {
                                b_stepmotor();
                        }
                        else if (right == 0)
                        {
                                r_stepmotor();
                        }
               
        }
        //判断后右限位是否触碰
        else if (limit_b == 0 && limit_r == 0)
        {
                         if (front == 0)
                        {
                                f_stepmotor();
                        }
                        else if (left == 0)
                        {
                                l_stepmotor();
                        }
               
        }
        //判断后左限位是否触碰
        else if (limit_b == 0 && limit_l == 0)
        {
                  if (front == 0)
                        {
                                f_stepmotor();
                        }
                        else if (right == 0)
                        {
                                r_stepmotor();
                        }
               
        }
        //判断左限位是否触碰
        else if (limit_f == 0)
        {
                         if (back == 0)
                        {
                                b_stepmotor();
                        }
                        else if (left == 0)
                        {
                                l_stepmotor();
                        }
                        else if (right == 0)
                        {
                                r_stepmotor();
                        }
        }
        //判断后限位是否触碰
        else if (limit_b == 0)
        {
                         if (front == 0)
                        {
                                f_stepmotor();
                        }
                        else if (left == 0)
                        {
                                l_stepmotor();
                        }
                        else if (right == 0)
                        {
                                r_stepmotor();
                        }
       
        }
        //判断左限位是否触碰
        else if (limit_l == 0)
        {
                  if (front == 0)
                        {
                                f_stepmotor();
                        }
                        else if (back == 0)
                        {
                                b_stepmotor();
                        }
                        else if (right == 0)
                        {
                                r_stepmotor();
                        }
        }
        //判断右限位是否触碰
        else if (limit_r == 0)
        {
                         if (front == 0)
                        {
                                f_stepmotor();
                        }
                        else if (back == 0)
                        {
                                b_stepmotor();
                        }
                        else if (left == 0)
                        {
                                l_stepmotor();
                        }
        }
        //如果都没触碰限位开关就执行以下程序
        //实现步进电机移动

        else if (front == 0)
        {
                f_stepmotor();
        }
        else if (back == 0)
        {
                b_stepmotor();
        }
        else if (left == 0)
        {
                l_stepmotor();
        }
        else if (right == 0)
        {
                r_stepmotor();
        }
}



void f_stepmotor()
{
        Step_Control_1(0,1600);//正转
}

void b_stepmotor()
{
        Step_Control_1(1,1600);//反转
}

void l_stepmotor()
{
        Step_Control_2(0,1600);//正转
}

void r_stepmotor()
{
        Step_Control_2(1,1600);//反转
}
回复

使用道具 举报

4

主题

16

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2018-9-5
在线时间
5 小时
 楼主| 发表于 2018-9-24 23:09:52 | 显示全部楼层
问题是TIM_SetCompare1(TIM4,1955);
                                                        IA1=0;
                                                        IB1=1;
                                                        delayms(2000);
                                                        IA1=0;
                                                        IB1=0;
                                                        TIM_SetCompare1(TIM4,1900);
                                                        delayms(2000);
                                                        while (limit_up == 1)
                                                        {
                                                          IA1=1;
                                                          IB1=0;
                                                        }
                                                        IA1=0;
                                                        IB1=0;
                                                        
                                                        while (limit_b == 1)
                                                        {
                                                                b_stepmotor();
                                                        }
                                                        while (limit_r == 1)
                                                        {
                                                                r_stepmotor();
                                                        }
                                                        delayms(2000);
                                                        TIM_SetCompare1(TIM4,1955);
                                                        delayms(2000);
和我设想的的运行结果不一样,limit——up还没变成0就执行下面的程序
困扰了很久了,不知道是原子哥的延时函数和中断有冲突还是怎么回事,
我自己加了个不精确的延时效果好一些,但是还是不行
回复

使用道具 举报

4

主题

16

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2018-9-5
在线时间
5 小时
 楼主| 发表于 2018-9-24 23:10:23 | 显示全部楼层
各位大佬求助
刚刚初学,不知道一些配置对不对
回复

使用道具 举报

4

主题

16

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2018-9-5
在线时间
5 小时
 楼主| 发表于 2018-9-24 23:12:01 | 显示全部楼层
#ifndef __KEY_h2
#define __KEY_h2         
#include "sys.h"

#define front      GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)
#define back       GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)
#define left       GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)
#define right      GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)
#define limit_f    GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_9)
#define limit_b    GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_10)
#define limit_l    GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11)
#define limit_r    GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_12)
#define limit_up   GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10)
#define key        GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15)
#define key2       GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)

#define STEP_1     PBout(0)
#define DIR_1      PBout(1)
//#define ENABLE_1   PBout(15)

#define STEP_2     PBout(7)
#define DIR_2      PBout(8)
//#define ENABLE_2   PBout(9)

#define IA1        PBout(13)
#define IB1        PBout(14)


void Step_Control_1(u8 dir1,u16 period1);
void Step_Control_2(u8 dir2,u16 period2);
void move(void);
void KEY_Init(void);


void f_stepmotor(void);
void b_stepmotor(void);
void l_stepmotor(void);
void r_stepmotor(void);


#endif
回复

使用道具 举报

4

主题

16

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2018-9-5
在线时间
5 小时
 楼主| 发表于 2018-9-24 23:15:51 | 显示全部楼层
刚刚的主程序是错的,换成这个

#include "stm32f10x.h"
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "motion.h"
#include "moto.h"
#include "timer.h"
#include "oled.h"
#include "bmp.h"

int jump;
int times = 0;
int timer3 = 0;

void delayms(u16 tim)
{
        u16 p=0;
        while(tim--)
        {
                p=12000;
                while(p--);
        }
}


void oled_display()
{
                OLED_ShowCHinese(0,0,0);//佳
                OLED_ShowCHinese(18,0,1);//臻
                OLED_ShowCHinese(36,0,2);//牌
                OLED_ShowCHinese(54,0,3);//抓
                OLED_ShowCHinese(72,0,4);//娃
                OLED_ShowCHinese(90,0,5);//娃
                OLED_ShowCHinese(108,0,6);//机
                OLED_ShowCHinese(0,3,7);//欢
                OLED_ShowCHinese(18,3,8);//迎
                OLED_ShowCHinese(36,3,9);//使
                OLED_ShowCHinese(54,3,10);//用
                OLED_ShowCHinese(72,3,11);//请
                OLED_ShowCHinese(90,3,12);//投
                OLED_ShowCHinese(108,3,13);//币
          OLED_ShowCHinese(0,6,14);//可
    OLED_ShowCHinese(18,6,15);//玩
    OLED_ShowCHinese(66,6,16);//次
          OLED_ShowCHinese(108,6,17);//秒
}
//中断抓娃娃程序1;
void star1(void)
{
  TIM_Cmd(TIM3, DISABLE);//开中断
        TIM_ITConfig(TIM3,TIM_IT_Update,DISABLE ); //使能指定的TIM3中断,允许更新中断
        timer3=0;
        OLED_ShowNum(80,6,timer3,3,16);
        TIM_SetCompare1(TIM4,1955);
  IA1=1;
  IB1=0;
        delayms(2000);
  IA1=0;
  IB1=0;
        TIM_SetCompare1(TIM4,1860);
        delayms(2000);
        while (limit_up == 1)
        {
            IA1=0;
            IB1=1;
        }
  IA1=0;
  IB1=0;

        while (limit_b == 1)
        {
                b_stepmotor();
        }
       
        while (limit_r == 1)
        {
                r_stepmotor();
        }
       
        delayms(1000);
  TIM_SetCompare1(TIM4,1955);
        delayms(2000);
       
        jump = 1;
        times = times - 1;
        OLED_ShowNum(36,6,times,3,16);

}



//抓娃娃程序2;
void star2(void)
{
        TIM_Cmd(TIM3, DISABLE);//开中断
        TIM_ITConfig(TIM3,TIM_IT_Update,DISABLE ); //使能指定的TIM3中断,允许更新中断
        timer3=0;
        OLED_ShowNum(80,6,timer3,3,16);
        TIM_SetCompare1(TIM4,1955);
  IA1=0;
  IB1=1;
        delayms(2000);
  IA1=0;
  IB1=0;
        TIM_SetCompare1(TIM4,1860);
        delayms(2000);
        if(limit_up != 0)
        {
                while (limit_up != 0)
                {
                IA1=1;
                IB1=0;
                }
        }       
  IA1=0;
  IB1=0;
       
        while (limit_b == 1)
        {
                b_stepmotor();
        }
        while (limit_r == 1)
        {
                r_stepmotor();
        }
        delayms(2000);
        TIM_SetCompare1(TIM4,1955);
        delayms(2000);
        jump = 1;
        times = times-1;
        OLED_ShowNum(36,6,times,3,16);

}

int main(void)
{

           TIM4_PWM_Init(1999,719);
           delay_init();             //延时初始化        
           KEY_Init();
           OLED_Init();                        //初始化OLED  
                 OLED_Clear();
           oled_display();
          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
          TIM3_Int_Init(9999,7199);//10Khz的计数频率,计数到5000为500ms
        while(1)
{
                jump = 0;
          TIM_SetCompare1(TIM4,1955);

       
        if (key2 == 0)
        {
          while(key2 == 0);
                delay_ms(20);
                if (key2 == 1)
                {
                times =times+1;
                }
        }
       
        OLED_ShowNum(36,6,times,3,16);
        if (key == 0  &  times!=0)
        {
               
                while(key == 0);       
                delay_ms(20);
                        if (key == 1)
                        {
                                TIM_Cmd(TIM3, ENABLE);//开中断
                                TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断
                                while (jump == 0)
                                {
                                        move();
                                        if (key == 0)
                                        {
                                                delay_ms(20);
            star2();
                                  }
                          }
                        jump = 0;
               
       

}   
               
}
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-9-25 01:12:40 | 显示全部楼层
帮顶
回复

使用道具 举报

145

主题

445

帖子

0

精华

高级会员

Rank: 4

积分
823
金钱
823
注册时间
2014-1-15
在线时间
350 小时
发表于 2018-9-25 09:55:11 | 显示全部楼层
这么长的程序,没有人帮你看的。
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3566
金钱
3566
注册时间
2016-1-8
在线时间
544 小时
发表于 2018-9-25 10:08:32 | 显示全部楼层
你倒是把问题描述清楚啊
回复

使用道具 举报

4

主题

16

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2018-9-5
在线时间
5 小时
 楼主| 发表于 2018-9-25 10:33:40 | 显示全部楼层

问题是TIM_SetCompare1(TIM4,1955);
                                                        IA1=0;
                                                        IB1=1;
                                                        delayms(2000);
                                                        IA1=0;
                                                        IB1=0;
                                                        TIM_SetCompare1(TIM4,1900);
                                                        delayms(2000);
                                                        while (limit_up == 1)
                                                        {
                                                          IA1=1;
                                                          IB1=0;
                                                        }
                                                        IA1=0;
                                                        IB1=0;
                                                        
                                                        while (limit_b == 1)
                                                        {
                                                                b_stepmotor();
                                                        }
                                                        while (limit_r == 1)
                                                        {
                                                                r_stepmotor();
                                                        }
                                                        delayms(2000);
                                                        TIM_SetCompare1(TIM4,1955);
                                                        delayms(2000);
和我设想的的运行结果不一样,limit——up还没变成0就执行下面的程序
困扰了很久了,不知道是原子哥的延时函数和中断有冲突还是怎么回事,
我自己加了个不精确的延时效果好一些,但是还是不行
回复

使用道具 举报

4

主题

16

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2018-9-5
在线时间
5 小时
 楼主| 发表于 2018-9-25 10:34:13 | 显示全部楼层
问题就是楼上那个
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2018-9-25 17:56:20 | 显示全部楼层
只能打断点看变量是不是发生了改变
回复

使用道具 举报

27

主题

118

帖子

0

精华

高级会员

Rank: 4

积分
850
金钱
850
注册时间
2015-12-8
在线时间
176 小时
发表于 2018-9-26 09:13:18 | 显示全部楼层
先把所有使用到这个变量的代码查找出来
为自己掌握新的知识感到快乐
回复

使用道具 举报

2

主题

123

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1472
金钱
1472
注册时间
2014-4-8
在线时间
172 小时
发表于 2018-9-26 09:26:44 | 显示全部楼层
这种问题只能自己慢慢找,我有两个思路1、limit_up会不会大于1;2、会不会一些数组溢出操作导致limit_up异常变换(刚刚遇到的,数组定义时,宏的名字太相近,写错了,本应32字节,弄成了5字节)

靠你自己慢慢找问题
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 01:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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