久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2374|回復: 13
打印 上一主題 下一主題
收起左側

keil c 變量最大值溢出問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:830698 發表于 2020-10-29 22:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 天方夜彈 于 2020-10-30 20:53 編輯

麻煩各位了,我沒說清楚,我貼上原程序,請各位指教,謝謝您們
unsigned int pulse_fr_proces()                 //中斷0,1脈沖數*AD系數 再+
{        
         unsigned int  ch1_frl;
        unsigned long ch1_data;       

        ch1_data =  ch1_num  *  GET_ADC_RESULT(0xC0);            // 問題在調用這個函數GET_ADC_RESULT(0xC0)
        ch1_fr   = (unsigned int)(ch1_data * 5 / motor_coef) ;  //          
        if ( ch1_fr   >1800)    ch1_fr   =1800;
               return           ch1_fr;
}
從程序運行看,調用這個函數GET_ADC_RESULT(0xC0)后,最大值限制失效,但GET_ADC_RESULT()函數單獨測試正常,被調用后也正常,但就是最大值限制失效,
在這個pulse_fr_proces(),不用這個GET_ADC_RESULT()函數最大值限制就正常,

把GET_ADC_RESULT()換成其它變量也OK,但程序必須要用這個啊
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:234075 發表于 2020-10-29 23:47 | 只看該作者
程序一直在下面這個語句中循環,這是個死循環啊?
while(1)
  a++;
不知道你這個程序需要達到什么目的,可以參考下面的語句
while(a<=250)  //如果a<=250,則循環執行a++,a>250,則跳出繼續向下執行
  a++;
a=200;
回復

使用道具 舉報

板凳
ID:282850 發表于 2020-10-29 23:51 | 只看該作者
程序改成這樣
       unsigned char a;
       while(1)
{
       a++;
      if (a>250)  a=200;
}
你原程序的while(1)只對a++;起作用的。不會執行if
回復

使用道具 舉報

地板
ID:654028 發表于 2020-10-30 08:55 | 只看該作者
不加花括號,默認是只執行下一句
回復

使用道具 舉報

5#
ID:711539 發表于 2020-10-30 09:27 | 只看該作者
回頭去看下C語言的while循環語句吧
回復

使用道具 舉報

6#
ID:342954 發表于 2020-10-30 09:36 | 只看該作者
多打幾個字符,有那么難嗎"{}
回復

使用道具 舉報

7#
ID:830698 發表于 2020-10-30 11:02 | 只看該作者
麻煩各位了,我沒說清楚,我貼上原程序,請各位指教,謝謝您們
unsigned int pulse_fr_proces()                 //中斷0,1脈沖數*AD系數 再+
{        
    unsigned int  ch1_fr,ch2_fr,ch_fr_all;
        unsigned long ch1_data,ch2_data;       
        ch1_data =  ch1_num  *  GET_ADC_RESULT(0xC0);            //
        ch1_fr   = (unsigned int)(ch1_data * 5 / motor_coef) ;  //
        ch2_data =  ch2_num  *  GET_ADC_RESULT(0xC1);                   //
        ch2_fr   = (unsigned int)(ch2_data * 5 / motor_coef) ;
        ch_fr_all =  ch1_fr + ch2_fr;  //總數                  
        if ( ch_fr_all>1800)    ch_fr_all=1800;
    return           ch_fr_all;
}
從程序運行看,ch_fr_all 數值輸入過大會溢出,又從零開始運行
回復

使用道具 舉報

8#
ID:830698 發表于 2020-10-30 11:21 | 只看該作者
zhb2004xp 發表于 2020-10-29 23:47
程序一直在下面這個語句中循環,這是個死循環啊?
while(1)
  a++;

麻煩您再給瞧瞧 變量最大值溢出問題 ,謝謝
回復

使用道具 舉報

9#
ID:830698 發表于 2020-10-30 11:22 | 只看該作者
f556 發表于 2020-10-29 23:51
程序改成這樣
       unsigned char a;
       while(1)

蠻煩您再瞧瞧 變量最大值溢出問題  謝謝
回復

使用道具 舉報

10#
ID:626055 發表于 2020-10-30 12:02 | 只看該作者
一個int最大256不夠,再加一個int做前一個數據的進位唄,,,
回復

使用道具 舉報

11#
ID:830698 發表于 2020-10-30 12:11 | 只看該作者
T_Trigger 發表于 2020-10-30 12:02
一個int最大256不夠,再加一個int做前一個數據的進位唄,,,

輸入脈沖處理后 測試ch_fr_all只要超過2000,下段程序就會溢出。所以我想把ch_fr_all限制在1800以內。
uint 最大值是65535啊。
回復

使用道具 舉報

12#
ID:166768 發表于 2020-10-30 14:14 | 只看該作者
你忘記加大括號了
回復

使用道具 舉報

13#
ID:382454 發表于 2020-10-30 16:47 | 只看該作者
這樣寫才對的

unsigned char a;
       while(1)
  {
       a++;
      if (a>250)
           {
        a=0;
           }
    }

回復

使用道具 舉報

14#
ID:830698 發表于 2020-10-30 20:48 | 只看該作者
我沒說清楚,貼上簡化后的原程序

unsigned int pulse_fr_proces()                 //中斷0,1脈沖數*AD系數 再+
{        
                 unsigned int  ch1_frl;
        unsigned long ch1_data;       
        ch1_data =  ch1_num  *  GET_ADC_RESULT(0xC0);            // 問題在調用這個函數GET_ADC_RESULT(0xC0)
        ch1_fr   = (unsigned int)(ch1_data * 5 / motor_coef) ;  //          
        if ( ch1_fr   >1800)    ch1_fr   =1800;
               return           ch1_fr;
}
問題在調用這個函數 GET_ADC_RESULT(0xC0) 后,程序除了最大值限制無效外,其它都正常
這個函數單獨測試是正常的,函數的輸出結果也正確,就是最大值限制無效
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲看片网站 | 中文字幕的av | 成人影院一区二区三区 | 99热在线免费 | 成年人视频在线免费观看 | 一区影院 | 亚洲国产日韩一区 | 亚洲一区二区久久 | 91免费在线看 | 亚洲一区国产 | 黄色国产视频 | 久热中文字幕 | 麻豆a级片 | 亚洲欧美日韩精品久久亚洲区 | 韩国av网站在线观看 | 日韩欧美在线播放 | 99色综合 | 日韩在线不卡 | 亚洲免费视频播放 | 日干夜操 | 欧美极品少妇xxxxⅹ免费视频 | 欧美黑人巨大videos精品 | av在线一区二区三区 | 国产一级在线 | 91精品国产综合久久久久蜜臀 | 成人激情视频网 | 麻豆精品国产免费 | 成人在线欧美 | 精品欧美乱码久久久久久1区2区 | 国产一区视频在线 | 超碰国产在线 | 中文字幕视频在线 | 国产婷婷| 免费视频成人国产精品网站 | 成人精品鲁一区一区二区 | 激情伊人网 | www.97国产| 四季久久免费一区二区三区四区 | 美日韩精品 | 亚洲综合字幕 | 日韩精品久久久 |