欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4425|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

C語言us延時函數(shù)中:全局變量recive_flag==1時執(zhí)行return指令是什么意思?return何用

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:698854 發(fā)表于 2020-6-21 19:50 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
2黑幣
extern int recive_flag;        //定義全局變量
/*************us延時函數(shù)*************/
void delay_us(int x)  //延時函數(shù),要足夠快,否則燈會閃爍,而不是慢慢變化。
{  
        int i;
        for(i=x;i>0;i--)
        {
                if(recive_flag==1)    //  全局變量recive_flag==1有什么用?什么意思呢?
            {
                     return;                   //return什么意思?
            }
                 _nop_();  // 空操作,不執(zhí)行任何操作,常用于產(chǎn)生一個機(jī)器周期的時間延時
                 _nop_();  //在12M的晶振下每個_nop_()延時1us;  在11.0592MHz晶振的話,一個周期是1.085us,也就是時間是12M周期的1.085倍;  在6M中表示2us
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:743992 發(fā)表于 2020-6-21 21:54 | 只看該作者
recive_flag是在工程下其他文件里面定義的一個全局變量,可以在recive_flag這個變量名處右鍵->go to definition就可以看到是在哪里定義的,通過Ctrl+f查找功能可以找到這個變量是在哪里被調(diào)用,進(jìn)行了什么操作,然后再看它什么時候會符合if條件(=1),就可以知道這具體是在干嘛的了。從變量名上能大概推知這是個接收標(biāo)志位,具體還要結(jié)合程序。
至于那個return,照理說這樣編譯會報錯,因?yàn)楹瘮?shù)返回值類型是void,即沒有返回值。如果不談?wù)Z法錯誤的問題,return在這里用途是結(jié)束循環(huán),立即跳出這個函數(shù),回到調(diào)用這個函數(shù)的地方。即延時直接結(jié)束。結(jié)合來看的話,估計(jì)是單片機(jī)接收某個信息需要一段時間,因此用這個延時函數(shù)來使單片機(jī)等待接收完成,接收完成之后標(biāo)志位置1,延時結(jié)束。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

板凳
ID:706804 發(fā)表于 2020-6-22 08:31 | 只看該作者
表示延時結(jié)束,返回延時前的代碼。
回復(fù)

使用道具 舉報

地板
ID:592807 發(fā)表于 2020-6-22 08:45 | 只看該作者
void函數(shù)里面帶return?看來我的C基礎(chǔ)有點(diǎn)差啊。
回復(fù)

使用道具 舉報

5#
ID:529540 發(fā)表于 2020-6-22 16:59 | 只看該作者
額, void函數(shù)里不能帶 return嗎?我一直用來當(dāng)返回語句使用
回復(fù)

使用道具 舉報

6#
ID:18297 發(fā)表于 2020-6-22 21:02 | 只看該作者
根據(jù)你的程序,個人認(rèn)為應(yīng)該是break比較恰當(dāng)。
這個延時是不固定的,在總時間下具體延時時間由recive_flag決定。
比如設(shè)置delay_us(1000),假設(shè)是定時1ms(具體多少要看晶振大小)。
可以通過中斷按鍵或其他設(shè)置recive_flag由0變1,這樣就會提前延時結(jié)束。
這樣整個延時就不是固定的,由recive_flag的變化決定。
回復(fù)

使用道具 舉報

7#
ID:592807 發(fā)表于 2020-6-23 16:44 | 只看該作者
ccdmcu 發(fā)表于 2020-6-22 16:59
額, void函數(shù)里不能帶 return嗎?我一直用來當(dāng)返回語句使用

不能,void是無返回類型的函數(shù),return是返回類型,如果是keil5編譯stm32的話會報錯,51不清楚
回復(fù)

使用道具 舉報

8#
ID:419968 發(fā)表于 2020-6-24 00:27 | 只看該作者
if(recive_flag==1)  數(shù)據(jù)接收標(biāo)志,當(dāng) recive_flag = 1時表示接到數(shù)據(jù),此時推出延時函數(shù),即 return; 執(zhí)行其他任務(wù),例如解析接收到的數(shù)據(jù)
回復(fù)

使用道具 舉報

9#
ID:744327 發(fā)表于 2020-6-24 08:44 | 只看該作者
不能這樣用,因?yàn)楹瘮?shù)前void是無返回值類型的,return是返回類型,如果這樣使用違反程序規(guī)定的。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表