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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4132|回復: 8
收起左側

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

[復制鏈接]
ID:698854 發表于 2020-6-21 19:50 | 顯示全部樓層 |閱讀模式
2黑幣
extern int recive_flag;        //定義全局變量
/*************us延時函數*************/
void delay_us(int x)  //延時函數,要足夠快,否則燈會閃爍,而不是慢慢變化。
{  
        int i;
        for(i=x;i>0;i--)
        {
                if(recive_flag==1)    //  全局變量recive_flag==1有什么用?什么意思呢?
            {
                     return;                   //return什么意思?
            }
                 _nop_();  // 空操作,不執行任何操作,常用于產生一個機器周期的時間延時
                 _nop_();  //在12M的晶振下每個_nop_()延時1us;  在11.0592MHz晶振的話,一個周期是1.085us,也就是時間是12M周期的1.085倍;  在6M中表示2us
        }
}

回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

ID:706804 發表于 2020-6-22 08:31 | 顯示全部樓層
表示延時結束,返回延時前的代碼。
回復

使用道具 舉報

ID:592807 發表于 2020-6-22 08:45 | 顯示全部樓層
void函數里面帶return?看來我的C基礎有點差啊。
回復

使用道具 舉報

ID:529540 發表于 2020-6-22 16:59 | 顯示全部樓層
額, void函數里不能帶 return嗎?我一直用來當返回語句使用
回復

使用道具 舉報

ID:18297 發表于 2020-6-22 21:02 | 顯示全部樓層
根據你的程序,個人認為應該是break比較恰當。
這個延時是不固定的,在總時間下具體延時時間由recive_flag決定。
比如設置delay_us(1000),假設是定時1ms(具體多少要看晶振大小)。
可以通過中斷按鍵或其他設置recive_flag由0變1,這樣就會提前延時結束。
這樣整個延時就不是固定的,由recive_flag的變化決定。
回復

使用道具 舉報

ID:592807 發表于 2020-6-23 16:44 | 顯示全部樓層
ccdmcu 發表于 2020-6-22 16:59
額, void函數里不能帶 return嗎?我一直用來當返回語句使用

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

使用道具 舉報

ID:419968 發表于 2020-6-24 00:27 | 顯示全部樓層
if(recive_flag==1)  數據接收標志,當 recive_flag = 1時表示接到數據,此時推出延時函數,即 return; 執行其他任務,例如解析接收到的數據
回復

使用道具 舉報

ID:744327 發表于 2020-6-24 08:44 | 顯示全部樓層
不能這樣用,因為函數前void是無返回值類型的,return是返回類型,如果這樣使用違反程序規定的。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: www狠狠干| 欧洲视频一区二区 | 天堂久久网 | 超碰97干| 天天躁日日躁狠狠很躁 | 精品一区二区三区四区五区 | 国产成人一区二区三区精 | 一区二区在线不卡 | 日本一区二区高清不卡 | 亚洲国产精品一区二区三区 | 欧美国产日韩精品 | 精品视频一二区 | 国产视频精品免费 | 久草www| 天天摸天天看 | 久久久久久国产精品免费免费 | 日日干天天操 | 男女搞网站 | 国产一区不卡在线观看 | 北条麻妃一区二区三区在线视频 | 久操伊人 | 国产成人精品一区二区三区在线观看 | 欧美成人精品一区二区男人看 | 在线视频日韩精品 | 亚洲成人高清 | 欧美精品一区二区在线观看 | 中文在线a在线 | 国产精品一区在线观看 | 水蜜桃久久夜色精品一区 | 黄色在线免费观看 | 亚洲成网站| 午夜精品一区二区三区三上悠亚 | 91精品在线播放 | 免费视频二区 | 在线免费观看成年人视频 | 日日草夜夜草 | 久久免费高清视频 | 欧美三级在线 | 国产精品亚洲一区二区三区在线观看 | 成人欧美一区二区三区在线观看 | 欧美日韩黄色一级片 |