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

標題: C語言如何在while循環內讓一個語句每隔10分鐘運行一次,其他正常循環 [打印本頁]

作者: 13588195971    時間: 2019-7-2 08:58
標題: C語言如何在while循環內讓一個語句每隔10分鐘運行一次,其他正常循環
代碼萌新,最近在看STM32單片機,還沒有看完全,但是現在需要用到,所以來求助一下各位:如何在while循環內讓一個語句每隔10分鐘運行一次,其他正常循環。如圖紅色區域的語句是需要每十分鐘發送一次的。

單片機C語言源程序如下:
while(1){
    proRS485();
    proTask();


    p=(u8*)DO_autocalib;
    Send2RSSENCE(p,13);

    return (EXIT_SUCCESS);
}

感謝~~

1562028826(1).jpg (5.27 KB, 下載次數: 103)

1562028826(1).jpg

作者: 笨笨兔    時間: 2019-7-2 08:58
打開一個定時器,定時器里面每10分鐘就設定一個標志:while里面查標志位,有標志就發送一次即可
作者: devcang    時間: 2019-7-2 10:05
建議使用定時器,加計時變量。

~~~~~~~~~~
作者: lfc315    時間: 2019-7-2 10:34
定時器+計數器,計數到需要的時間就進去這個語句執行一次
作者: 單片學子    時間: 2019-7-2 11:01

加一個計數器,用定時器中斷給這個計數器+1。
循環里面判斷上次運行到現在計數器增加了多少,如果達到你的10分鐘的計數值,就運行程序,同時記錄這次運行后的計數器值。

作者: lihaijun7781    時間: 2019-7-2 11:13
每次循環,拿現在的時間和你保存的時間比,超過10s, 把當前時間保存,運行你的函數。如果不到10s,忽略,繼續跑其他函數。大循環時間長,10s的精度就會差,如果要準確的10s,你要放中斷里做了。
作者: lhl139679    時間: 2019-7-2 11:14
先定義一個變量T=0, 用定時器,定時到你想要的時間后,將變量T=1,再在while(1){}
作者: lhl139679    時間: 2019-7-2 11:19
先定義一個變量T=0,再用定時器,到你想要的時間后,將T=1,關閉定時器,在while(1){if(T==1){紅色區域內代碼;T=0;開啟定時器;}}
作者: swk51    時間: 2019-7-2 16:20
/**把需要定時發送的模塊放在if語句中,時間達到10分鐘則執行一次,否則跳過。**/


           if (n>=12000)        //n=12000=10分鐘
           {
                ......;   //需要定時發送的模塊
                 n=0;
           }

/******************************************************************************
** 函數功能 : 定時器初始化子程序
******************************************************************************/

void Init_Timer0(void)                  //定時器初始化子程序
{
        TMOD = 0x01;          //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響                     
        TH0=0x00;              //給定初值,這里使用定時器最大值從0開始計數一直到65535溢出
        TL0=0x00;
        EA=1;            //總中斷打開
        ET0=1;           //定時器中斷打開
        TR0=1;           //定時器開關打開
}


/*******************************************************************************
** 函數功能 : 定時器中斷程序
*******************************************************************************/

void Timer0_isr(void) interrupt 1 using 1
{
        TH0=0x00;                  //重新賦值,方式1是16位計數器,不能硬件重裝初始值
        TL0=0x00;
//        LED=0X08;        //指示燈反相,可以看到閃爍
        n++;
//        if (n>100)
//        LED = ~LED;

}
作者: lehwa    時間: 2019-7-3 02:27
用一個定時器計算每次main的循環所需要的時間,然后累加,大于等于10分鐘就執行,然后將累加的時間清零繼續
作者: 殊途同歸19    時間: 2019-7-3 10:11
你把需要10分鐘執行一次的代碼放到一個10分鐘的定時器里面執行就可以了
作者: laok321    時間: 2019-7-3 11:52
使用硬件定時器即可
作者: laok321    時間: 2019-7-3 11:54
打個比方,設置定時器3每秒中斷一次,在中斷中將全局變量加1,在主循環中判斷該變量是否大于等于600(即10分鐘),判斷成立即執行相應程序并清零該變量
作者: W1107182774    時間: 2019-7-3 14:40
定時器+計數器,計數到需要的時間就進去這個語句執行一次
作者: houcong    時間: 2019-7-3 14:44
設置一個定時器,然后采用循環方式就可以了
作者: yachcs    時間: 2019-7-3 15:32
if 加條件比較就行。
作者: 追一抹月光    時間: 2019-7-3 16:24
開一個定時器,使用變量計數,每到十分鐘,標志位置位,執行一次程序代碼清標志,如此循環
作者: 二狼神666    時間: 2019-7-3 16:48
用定時器當達到十分鐘后產生中斷




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美一区二区三区在线播放 | 成人免费在线观看 | 国产美女一区二区 | 亚洲精品一区二区二区 | 日本一区二区在线视频 | 亚洲福利在线观看 | 欧美久久久网站 | 天天拍天天操 | 成人h片在线观看 | 男女羞羞视频在线 | 成人深夜小视频 | 网站国产 | 成人欧美一区二区三区黑人孕妇 | www午夜视频 | 欧美日韩国产不卡 | 日韩中文字幕在线视频 | 欧美精品久久一区 | 国产精品久久久久久妇女6080 | 午夜一区二区三区视频 | 日韩精品在线一区 | 国产一区电影 | 一级黄a视频 | 暖暖日本在线视频 | 亚洲综合在线视频 | 超碰97免费观看 | 欧美日韩专区 | 精品1区 | 国产一区二区精品在线 | 日韩精品一区二区三区在线播放 | 中文字幕久久精品 | 欧美日韩精品一区二区三区蜜桃 | 国产精品视频播放 | 国产一级大片 | 国产综合一区二区 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 久久久久国产精品一区二区 | 欧洲视频一区二区 | 亚洲免费视频网址 | 亚洲播放一区 | 久久国产精品视频 | 久久国产精品一区二区三区 |